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