1   /*
2    * Copyright (C) 2010 Atlassian
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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.Priority;
27  import com.atlassian.jira.rest.client.domain.Resolution;
28  import com.atlassian.jira.rest.client.domain.ServerInfo;
29  import com.atlassian.jira.rest.client.domain.Status;
30  import com.atlassian.jira.rest.client.domain.Transition;
31  import com.atlassian.jira.rest.client.domain.input.TransitionInput;
32  import org.joda.time.DateTime;
33  
34  import javax.ws.rs.core.Response;
35  
36  public class JerseyMetadataRestClientTest extends AbstractRestoringJiraStateJerseyRestClientTest {
37  	public void testGetServerInfo() throws Exception {
38  		final ServerInfo serverInfo = client.getMetadataClient().getServerInfo(pm);
39  		assertEquals("Your Company JIRA", serverInfo.getServerTitle());
40  		assertTrue(serverInfo.getBuildDate().isBeforeNow());
41  		assertTrue(serverInfo.getServerTime().isAfter(new DateTime().minusMinutes(5)));
42  		assertTrue(serverInfo.getServerTime().isBefore(new DateTime().plusMinutes(5)));
43  	}
44  
45  	public void testGetIssueTypeNonExisting() throws Exception {
46  		final BasicIssueType basicIssueType = client.getIssueClient().getIssue("TST-1", pm).getIssueType();
47  		TestUtil.assertErrorCode(Response.Status.NOT_FOUND, "The issue type with id '" +
48  				TestUtil.getLastPathSegment(basicIssueType.getSelf()) + "fake" +
49  				"' does not exist", new Runnable() {
50  			@Override
51  			public void run() {
52  				client.getMetadataClient().getIssueType(TestUtil.toUri(basicIssueType.getSelf() + "fake"), pm);
53  			}
54  		});
55  	}
56  
57  	public void testGetIssueType() {
58  		final BasicIssueType basicIssueType = client.getIssueClient().getIssue("TST-1", pm).getIssueType();
59  		final IssueType issueType = client.getMetadataClient().getIssueType(basicIssueType.getSelf(), pm);
60  		assertEquals("Bug", issueType.getName());
61  		assertEquals("A problem which impairs or prevents the functions of the product.", issueType.getDescription());
62  		assertTrue(issueType.getIconUri().toString().endsWith("bug.gif"));
63  
64  	}
65  
66  	public void testGetStatus() {
67  		final BasicStatus basicStatus = client.getIssueClient().getIssue("TST-1", pm).getStatus();
68  		final Status status = client.getMetadataClient().getStatus(basicStatus.getSelf(), pm);
69  		assertEquals("The issue is open and ready for the assignee to start work on it.", status.getDescription());
70  		assertTrue(status.getIconUrl().toString().endsWith("status_open.gif"));
71  		assertEquals("Open", status.getName());
72  	}
73  
74  	public void testGetStatusNonExisting() throws Exception {
75  		final BasicStatus basicStatus = client.getIssueClient().getIssue("TST-1", pm).getStatus();
76  		TestUtil.assertErrorCode(Response.Status.NOT_FOUND, "The status with id '" +
77  				TestUtil.getLastPathSegment(basicStatus.getSelf()) + "fake" +
78  				"' does not exist", new Runnable() {
79  			@Override
80  			public void run() {
81  				client.getMetadataClient().getStatus(TestUtil.toUri(basicStatus.getSelf() + "fake"), pm);
82  			}
83  		});
84  	}
85  
86  	public void testGetPriority() {
87  		final BasicPriority basicPriority = client.getIssueClient().getIssue("TST-2", pm).getPriority();
88  		final Priority priority = client.getMetadataClient().getPriority(basicPriority.getSelf(), pm);
89  		assertEquals(basicPriority.getSelf(), priority.getSelf());
90  		assertEquals("Major", priority.getName());
91  		assertEquals("#009900", priority.getStatusColor());
92  		assertEquals("Major loss of function.", priority.getDescription());
93  		assertTrue(priority.getIconUri().toString().startsWith(jiraUri.toString()));
94  		assertTrue(priority.getIconUri().toString().endsWith("/images/icons/priority_major.gif"));
95  
96  	}
97  
98  
99  	public void testGetResolution() {
100 		final Issue issue = client.getIssueClient().getIssue("TST-2", pm);
101 		assertNull(issue.getResolution());
102 		final Iterable<Transition> transitions = client.getIssueClient().getTransitions(issue.getTransitionsUri(), pm);
103 		final Transition resolveTransition = getTransitionByName(transitions, "Resolve Issue");
104 
105 		client.getIssueClient().transition(issue.getTransitionsUri(), new TransitionInput(resolveTransition.getId()), pm);
106 
107 		final Issue resolvedIssue = client.getIssueClient().getIssue("TST-2", pm);
108 		final BasicResolution basicResolution = resolvedIssue.getResolution();
109 		assertNotNull(basicResolution);
110 
111 		final Resolution resolution = client.getMetadataClient().getResolution(basicResolution.getSelf(), pm);
112 		assertEquals(basicResolution.getName(), resolution.getName());
113 		assertEquals(basicResolution.getSelf(), resolution.getSelf());
114 		assertEquals("A fix for this issue is checked into the tree and tested.", resolution.getDescription());
115 	}
116 }