View Javadoc

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.functest.framework.admin.GeneralConfiguration;
20  import com.atlassian.jira.nimblefunctests.annotation.JiraBuildNumberDependent;
21  import com.atlassian.jira.rest.client.IntegrationTestUtil;
22  import com.atlassian.jira.rest.client.TestUtil;
23  import com.atlassian.jira.rest.client.api.ExpandableProperty;
24  import com.atlassian.jira.rest.client.api.domain.User;
25  import com.atlassian.jira.rest.client.internal.json.TestConstants;
26  import com.google.common.collect.ImmutableList;
27  import org.codehaus.jettison.json.JSONException;
28  import org.junit.Before;
29  import org.junit.Test;
30  
31  import javax.ws.rs.core.Response;
32  
33  import static com.atlassian.jira.rest.client.IntegrationTestUtil.USER_SLASH;
34  import static com.atlassian.jira.rest.client.IntegrationTestUtil.USER_SLASH_60;
35  import static com.atlassian.jira.rest.client.internal.ServerVersionConstants.BN_JIRA_4_3;
36  import static com.atlassian.jira.rest.client.internal.json.TestConstants.ADMIN_USERNAME;
37  import static org.junit.Assert.assertEquals;
38  import static org.junit.Assert.assertNull;
39  import static org.junit.Assert.assertTrue;
40  
41  public class AsynchronousUserRestClientTest extends AbstractAsynchronousRestClientTest {
42  
43      private static boolean alreadyRestored;
44  
45      @Before
46      public void setup() {
47          if (!alreadyRestored) {
48              IntegrationTestUtil.restoreAppropriateJiraData(TestConstants.DEFAULT_JIRA_DUMP_FILE, administration);
49              alreadyRestored = true;
50          }
51      }
52  
53      @Test
54      public void testGetUser() throws JSONException {
55          final User user = client.getUserClient().getUser(ADMIN_USERNAME).claim();
56          assertEquals("wojciech.seliga@spartez.com", user.getEmailAddress());
57          assertEquals("admin", user.getName());
58          assertEquals("Administrator", user.getDisplayName());
59          assertEquals(new ExpandableProperty<String>(3, ImmutableList
60                  .of("jira-administrators", "jira-developers", "jira-users")), user.getGroups());
61          assertEquals(IntegrationTestUtil.USER_ADMIN_60.getSelf(), user.getSelf());
62          assertTrue(user.getAvatarUri().toString().contains("ownerId=" + user.getName()));
63  
64          final User user2 = client.getUserClient().getUser(TestConstants.USER1_USERNAME).claim();
65          assertEquals(new ExpandableProperty<String>(ImmutableList.of("jira-users")), user2.getGroups());
66      }
67  
68      @Test
69      public void testGetUserWithSlash() {
70          final User user = client.getUserClient().getUser(USER_SLASH.getName()).claim();
71          assertEquals(USER_SLASH_60.getSelf(), user.getSelf());
72          assertEquals(USER_SLASH_60.getDisplayName(), user.getDisplayName());
73      }
74  
75      @Test
76      public void testGetNonExistingUser() {
77          final String username = "same-fake-user-which-does-not-exist";
78          TestUtil.assertErrorCode(Response.Status.NOT_FOUND, "The user named '" + username + "' does not exist",
79                  new Runnable() {
80                      @Override
81                      public void run() {
82                          client.getUserClient().getUser(username).claim();
83                      }
84                  });
85      }
86  
87      @Test
88      public void testGetUserAnonymously() {
89          TestUtil.assertErrorCode(Response.Status.UNAUTHORIZED, new Runnable() {
90              @Override
91              public void run() {
92                  setAnonymousMode();
93                  client.getUserClient().getUser(TestConstants.USER1_USERNAME).claim();
94              }
95          });
96  
97      }
98  
99      // Email Visibility is respected in REST since 4.3
100     @JiraBuildNumberDependent(BN_JIRA_4_3)
101     @Test
102     public void testGetUserWhenEmailVisibilityIsHidden() throws JSONException {
103         administration.generalConfiguration().setUserEmailVisibility(GeneralConfiguration.EmailVisibility.HIDDEN);
104 
105         try {
106             final User user = client.getUserClient().getUser(ADMIN_USERNAME).claim();
107             assertNull(user.getEmailAddress());
108             assertEquals("admin", user.getName());
109             assertEquals("Administrator", user.getDisplayName());
110             assertEquals(new ExpandableProperty<String>(3, ImmutableList
111                     .of("jira-administrators", "jira-developers", "jira-users")), user.getGroups());
112             assertEquals(IntegrationTestUtil.USER_ADMIN_60.getSelf(), user.getSelf());
113             assertTrue(user.getAvatarUri().toString().contains("ownerId=" + user.getName()));
114 
115             final User user2 = client.getUserClient().getUser(TestConstants.USER1_USERNAME).claim();
116             assertEquals(new ExpandableProperty<String>(ImmutableList.of("jira-users")), user2.getGroups());
117 
118         } finally {
119             // Restore e-mail visibility configuration
120             administration.generalConfiguration().setUserEmailVisibility(GeneralConfiguration.EmailVisibility.PUBLIC);
121         }
122     }
123 
124     // Email Visibility is respected in REST since 4.3
125     @JiraBuildNumberDependent(BN_JIRA_4_3)
126     @Test
127     public void testGetUserWhenEmailVisibilityIsMasked() throws JSONException {
128         administration.generalConfiguration().setUserEmailVisibility(GeneralConfiguration.EmailVisibility.MASKED);
129 
130         try {
131             final User user = client.getUserClient().getUser(ADMIN_USERNAME).claim();
132             assertEquals("wojciech dot seliga at spartez dot com", user.getEmailAddress());
133             assertEquals("admin", user.getName());
134             assertEquals("Administrator", user.getDisplayName());
135             assertEquals(new ExpandableProperty<String>(3, ImmutableList
136                     .of("jira-administrators", "jira-developers", "jira-users")), user.getGroups());
137             assertEquals(IntegrationTestUtil.USER_ADMIN_60.getSelf(), user.getSelf());
138             assertTrue(user.getAvatarUri().toString().contains("ownerId=" + user.getName()));
139 
140             final User user2 = client.getUserClient().getUser(TestConstants.USER1_USERNAME).claim();
141             assertEquals(new ExpandableProperty<String>(ImmutableList.of("jira-users")), user2.getGroups());
142         } finally {
143             // Restore e-mail visibility configuration
144             administration.generalConfiguration().setUserEmailVisibility(GeneralConfiguration.EmailVisibility.PUBLIC);
145         }
146     }
147 }