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