View Javadoc

1   /*
2    * Copyright (C) 2014 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  package it;
17  
18  import com.atlassian.jira.rest.client.IntegrationTestUtil;
19  import com.atlassian.jira.rest.client.api.RestClientException;
20  import com.atlassian.jira.rest.client.api.domain.Permissions;
21  import com.atlassian.jira.rest.client.api.domain.input.MyPermissionsInput;
22  import com.atlassian.jira.rest.client.internal.json.TestConstants;
23  import com.google.common.base.Optional;
24  import org.junit.Before;
25  import org.junit.Test;
26  
27  import static org.hamcrest.Matchers.is;
28  import static org.junit.Assert.assertThat;
29  import static org.junit.Assert.fail;
30  
31  public class AsynchronousMyPermissionsRestClientTest extends AbstractAsynchronousRestClientTest {
32  
33      private static boolean alreadyRestored;
34  
35      @Before
36      public void setup() {
37          if (!alreadyRestored) {
38              IntegrationTestUtil.restoreAppropriateJiraData(TestConstants.DEFAULT_JIRA_DUMP_FILE, administration);
39              alreadyRestored = true;
40          }
41      }
42  
43      @Override
44      public void beforeMethod() {
45          super.beforeMethod();
46  
47          setUser1(); // set non-admin user
48      }
49  
50      @Test
51      public void testHavePermission() throws Exception {
52          testWorkIssuePermission(MyPermissionsInput.withIssue("TST-1"), true);
53          testWorkIssuePermission(MyPermissionsInput.withIssue(10000), true); // TST-1
54          testWorkIssuePermission(MyPermissionsInput.withProject("TST"), true);
55          testWorkIssuePermission(MyPermissionsInput.withProject(10000), true); // TST
56          testWorkIssuePermission(MyPermissionsInput.withIssue("RST-1"), false);
57          testWorkIssuePermission(MyPermissionsInput.withIssue(10060), false); // RST-1
58          testWorkIssuePermission(MyPermissionsInput.withProject("RST"), false);
59          testWorkIssuePermission(MyPermissionsInput.withProject(10010), false); // RST
60          testWorkIssuePermission(MyPermissionsInput.withAny(), true); // any = permission from TST
61      }
62  
63      @Test
64      public void testNonExisting() throws Exception {
65          testError(MyPermissionsInput.withIssue("NONEXISTING-1"), 404);
66          testError(MyPermissionsInput.withProject("NONEXISTINGPROJECT"), 404);
67      }
68  
69      private void testWorkIssuePermission(MyPermissionsInput permissionsInput, boolean expectedPermission) {
70          // when
71          final Permissions permissions = client.getMyPermissionsRestClient().getMyPermissions(permissionsInput).claim();
72  
73          // then
74          assertThat("Context " + permissionsInput, permissions.havePermission(Permissions.WORK_ISSUE), is(expectedPermission));
75      }
76  
77      private void testError(MyPermissionsInput permissionsInput, int expectedStatus) {
78          try {
79              client.getMyPermissionsRestClient().getMyPermissions(permissionsInput).claim();
80              fail("rest client should fail for input " + permissionsInput);
81          } catch (RestClientException e) {
82              assertThat("Context " + permissionsInput, e.getStatusCode(), is(Optional.of(expectedStatus)));
83          }
84      }
85  }