1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package it;
18
19 import com.atlassian.jira.rest.client.TestUtil;
20 import com.atlassian.jira.rest.client.annotation.Restore;
21 import com.atlassian.jira.rest.client.domain.BasicIssueType;
22 import com.atlassian.jira.rest.client.domain.BasicPriority;
23 import com.atlassian.jira.rest.client.domain.BasicResolution;
24 import com.atlassian.jira.rest.client.domain.BasicStatus;
25 import com.atlassian.jira.rest.client.domain.Issue;
26 import com.atlassian.jira.rest.client.domain.IssueType;
27 import com.atlassian.jira.rest.client.domain.IssuelinksType;
28 import com.atlassian.jira.rest.client.domain.Priority;
29 import com.atlassian.jira.rest.client.domain.Resolution;
30 import com.atlassian.jira.rest.client.domain.ServerInfo;
31 import com.atlassian.jira.rest.client.domain.Status;
32 import com.atlassian.jira.rest.client.domain.Transition;
33 import com.atlassian.jira.rest.client.domain.input.TransitionInput;
34 import com.atlassian.jira.rest.client.internal.json.TestConstants;
35 import com.google.common.collect.Iterables;
36 import org.joda.time.DateTime;
37 import org.junit.Test;
38
39 import javax.ws.rs.core.Response;
40
41 import static org.junit.Assert.*;
42
43 @Restore(TestConstants.DEFAULT_JIRA_DUMP_FILE)
44 public class JerseyMetadataRestClientTest extends AbstractJerseyRestClientTest {
45 @Test
46 public void testGetServerInfo() throws Exception {
47 final ServerInfo serverInfo = client.getMetadataClient().getServerInfo(pm);
48 assertEquals("Your Company JIRA", serverInfo.getServerTitle());
49 assertTrue(serverInfo.getBuildDate().isBeforeNow());
50 assertTrue(serverInfo.getServerTime().isAfter(new DateTime().minusMinutes(5)));
51 assertTrue(serverInfo.getServerTime().isBefore(new DateTime().plusMinutes(5)));
52 }
53
54 @Test
55 public void testGetIssueTypeNonExisting() throws Exception {
56 final BasicIssueType basicIssueType = client.getIssueClient().getIssue("TST-1", pm).getIssueType();
57 TestUtil.assertErrorCode(Response.Status.NOT_FOUND, "The issue type with id '" +
58 TestUtil.getLastPathSegment(basicIssueType.getSelf()) + "fake" +
59 "' does not exist", new Runnable() {
60 @Override
61 public void run() {
62 client.getMetadataClient().getIssueType(TestUtil.toUri(basicIssueType.getSelf() + "fake"), pm);
63 }
64 });
65 }
66
67 @Test
68 public void testGetIssueType() {
69 final BasicIssueType basicIssueType = client.getIssueClient().getIssue("TST-1", pm).getIssueType();
70 final IssueType issueType = client.getMetadataClient().getIssueType(basicIssueType.getSelf(), pm);
71 assertEquals("Bug", issueType.getName());
72 assertEquals("A problem which impairs or prevents the functions of the product.", issueType.getDescription());
73 assertTrue(issueType.getIconUri().toString().endsWith("bug.gif"));
74
75 }
76
77 @Test
78 public void testGetIssueTypes() {
79 if (!doesJiraSupportRestIssueLinking()) {
80 return;
81 }
82 final Iterable<IssuelinksType> issueTypes = client.getMetadataClient().getIssueLinkTypes(pm);
83 assertEquals(1, Iterables.size(issueTypes));
84 final IssuelinksType issueType = Iterables.getOnlyElement(issueTypes);
85 assertEquals("Duplicate", issueType.getName());
86 assertEquals("is duplicated by", issueType.getInward());
87 assertEquals("duplicates", issueType.getOutward());
88 }
89
90 @Test
91 public void testGetStatus() {
92 final BasicStatus basicStatus = client.getIssueClient().getIssue("TST-1", pm).getStatus();
93 final Status status = client.getMetadataClient().getStatus(basicStatus.getSelf(), pm);
94 assertEquals("The issue is open and ready for the assignee to start work on it.", status.getDescription());
95 assertTrue(status.getIconUrl().toString().endsWith("status_open.gif"));
96 assertEquals("Open", status.getName());
97 }
98
99 @Test
100 public void testGetStatusNonExisting() throws Exception {
101 final BasicStatus basicStatus = client.getIssueClient().getIssue("TST-1", pm).getStatus();
102 TestUtil.assertErrorCode(Response.Status.NOT_FOUND, "The status with id '" +
103 TestUtil.getLastPathSegment(basicStatus.getSelf()) + "fake" +
104 "' does not exist", new Runnable() {
105 @Override
106 public void run() {
107 client.getMetadataClient().getStatus(TestUtil.toUri(basicStatus.getSelf() + "fake"), pm);
108 }
109 });
110 }
111
112 @Test
113 public void testGetPriority() {
114 final BasicPriority basicPriority = client.getIssueClient().getIssue("TST-2", pm).getPriority();
115 final Priority priority = client.getMetadataClient().getPriority(basicPriority.getSelf(), pm);
116 assertEquals(basicPriority.getSelf(), priority.getSelf());
117 assertEquals("Major", priority.getName());
118 assertEquals("#009900", priority.getStatusColor());
119 assertEquals("Major loss of function.", priority.getDescription());
120 assertTrue(priority.getIconUri().toString().startsWith(jiraUri.toString()));
121 assertTrue(priority.getIconUri().toString().endsWith("/images/icons/priority_major.gif"));
122
123 }
124
125 @Test
126 public void testGetResolution() {
127 final Issue issue = client.getIssueClient().getIssue("TST-2", pm);
128 assertNull(issue.getResolution());
129 final Iterable<Transition> transitions = client.getIssueClient().getTransitions(issue, pm);
130 final Transition resolveTransition = TestUtil.getTransitionByName(transitions, "Resolve Issue");
131
132 client.getIssueClient().transition(issue, new TransitionInput(resolveTransition.getId()), pm);
133
134 final Issue resolvedIssue = client.getIssueClient().getIssue("TST-2", pm);
135 final BasicResolution basicResolution = resolvedIssue.getResolution();
136 assertNotNull(basicResolution);
137
138 final Resolution resolution = client.getMetadataClient().getResolution(basicResolution.getSelf(), pm);
139 assertEquals(basicResolution.getName(), resolution.getName());
140 assertEquals(basicResolution.getSelf(), resolution.getSelf());
141 assertEquals("A fix for this issue is checked into the tree and tested.", resolution.getDescription());
142 }
143 }