PageRenderTime 50ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/jira-project/jira-functional-tests/jira-func-tests/src/main/java/com/atlassian/jira/webtests/ztests/bundledplugins2/rest/TestProjectRoleResource.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 251 lines | 188 code | 57 blank | 6 comment | 2 complexity | 5542a0597318a7a69b737cb5fb9d19df MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.webtests.ztests.bundledplugins2.rest;
  2. import com.atlassian.integrationtesting.runner.restore.Restore;
  3. import com.atlassian.jira.functest.framework.BaseJiraFuncTest;
  4. import com.atlassian.jira.functest.framework.LoginAs;
  5. import com.atlassian.jira.functest.framework.suite.Category;
  6. import com.atlassian.jira.functest.framework.suite.WebTest;
  7. import com.atlassian.jira.testkit.client.restclient.Errors;
  8. import com.atlassian.jira.testkit.client.restclient.ProjectRole;
  9. import com.atlassian.jira.testkit.client.restclient.ProjectRoleClient;
  10. import com.atlassian.jira.testkit.client.restclient.Response;
  11. import com.atlassian.jira.util.json.JSONException;
  12. import com.atlassian.jira.util.json.JSONObject;
  13. import com.google.common.collect.ImmutableMap;
  14. import org.junit.Before;
  15. import org.junit.Test;
  16. import java.util.Collection;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. import static com.atlassian.jira.functest.framework.FunctTestConstants.ADMIN_USERNAME;
  21. import static com.atlassian.jira.security.roles.ProjectRoleActor.GROUP_ROLE_ACTOR_TYPE;
  22. import static com.atlassian.jira.security.roles.ProjectRoleActor.USER_ROLE_ACTOR_TYPE;
  23. import static java.util.Arrays.asList;
  24. import static javax.ws.rs.core.Response.Status.NOT_FOUND;
  25. import static org.junit.Assert.assertEquals;
  26. import static org.junit.Assert.assertFalse;
  27. import static org.junit.Assert.assertNotNull;
  28. /**
  29. * @since v4.4
  30. */
  31. @WebTest({Category.FUNC_TEST, Category.REST})
  32. @LoginAs(user = ADMIN_USERNAME)
  33. @Restore("TestProjectRoleResource.xml")
  34. public class TestProjectRoleResource extends BaseJiraFuncTest {
  35. private ProjectRoleClient projectRoleClient;
  36. @Test
  37. public void testViewProjectRoles() throws Exception {
  38. viewProjectRoles("10001");
  39. viewProjectRoles("MKY");
  40. }
  41. private void viewProjectRoles(final String projectIdOrKey) throws JSONException {
  42. final Map<String, String> mky = projectRoleClient.get(projectIdOrKey);
  43. assertEquals(3, mky.size());
  44. // We want some rudimentary testing that the URLs actually go someplace.
  45. List<String> roles = asList("Users", "Administrators", "Developers");
  46. for (String role : roles) {
  47. final JSONObject jsonRole = getJSON(mky.get(role));
  48. assertEquals(role, jsonRole.get("name"));
  49. }
  50. }
  51. @Test
  52. public void testViewRole() throws Exception {
  53. viewRole("10001");
  54. viewRole("MKY");
  55. }
  56. private void viewRole(final String projectIdOrKey) {
  57. final ProjectRole projectRole = projectRoleClient.get(projectIdOrKey, "Users");
  58. assertEquals("Users", projectRole.name);
  59. assertEquals("A project role that represents users in a project", projectRole.description);
  60. assertNotNull(projectRole.self);
  61. assertNotNull(projectRole.id);
  62. assertEquals(2, projectRole.actors.size());
  63. // We turn this into a map so that we can always find the one we care about to perform assertions on
  64. // without having to worry about order stability making this an intermittently failing test
  65. final Map<String, ProjectRole.Actor> map = makeMap(projectRole.actors);
  66. ProjectRole.Actor actor = map.get("admin");
  67. assertEquals("Administrator", actor.displayName);
  68. assertEquals(USER_ROLE_ACTOR_TYPE, actor.type);
  69. assertEquals("admin", actor.name);
  70. }
  71. @Test
  72. public void testViewRoleActorsIsSortedByDisplayName() throws Exception {
  73. ProjectRole projectRole = projectRoleClient.get("MKY", "Users");
  74. assertEquals(2, projectRole.actors.size());
  75. final ProjectRole.Actor admin = projectRole.actors.get(0);
  76. assertEquals("Administrator", admin.displayName);
  77. assertEquals(USER_ROLE_ACTOR_TYPE, admin.type);
  78. assertEquals("admin", admin.name);
  79. final ProjectRole.Actor actor = projectRole.actors.get(1);
  80. assertEquals("jira-users", actor.displayName);
  81. assertEquals(GROUP_ROLE_ACTOR_TYPE, actor.type);
  82. assertEquals("jira-users", actor.name);
  83. backdoor.usersAndGroups().addUser("aaaa", "aaaa", "zzzz", "aaa@aaa.com");
  84. backdoor.usersAndGroups().addUser("zzzz", "zzzz", "aaaa", "zzz@zzz.com");
  85. projectRoleClient.addActors("MKY", "Users", new String[]{}, new String[]{"aaaa", "zzzz"});
  86. projectRole = projectRoleClient.get("MKY", "Users");
  87. assertEquals(4, projectRole.actors.size());
  88. assertEquals("aaaa", projectRole.actors.get(0).displayName);
  89. assertEquals("Administrator", projectRole.actors.get(1).displayName);
  90. assertEquals("jira-users", projectRole.actors.get(2).displayName);
  91. assertEquals("zzzz", projectRole.actors.get(3).displayName);
  92. }
  93. @Test
  94. public void testSetRoleActors() throws Exception {
  95. ProjectRole projectRole = projectRoleClient.get("MKY", "Users");
  96. List<ProjectRole.Actor> actors = projectRole.actors;
  97. assertEquals(2, actors.size());
  98. final ProjectRole.Actor admin = actors.get(0);
  99. assertEquals("Administrator", admin.displayName);
  100. assertEquals(USER_ROLE_ACTOR_TYPE, admin.type);
  101. assertEquals("admin", admin.name);
  102. final ProjectRole.Actor actor = actors.get(1);
  103. assertEquals("jira-users", actor.displayName);
  104. assertEquals(GROUP_ROLE_ACTOR_TYPE, actor.type);
  105. assertEquals("jira-users", actor.name);
  106. backdoor.usersAndGroups().addUser("aaaa", "aaaa", "zzzz", "aaa@aaa.com");
  107. backdoor.usersAndGroups().addUser("zzzz", "zzzz", "aaaa", "zzz@zzz.com");
  108. backdoor.usersAndGroups().addGroup("ladida");
  109. projectRoleClient.setActors("MKY", "Users", ImmutableMap.<String, String[]>builder()
  110. .put(USER_ROLE_ACTOR_TYPE, new String[]{"aaaa", "zzzz"})
  111. .put(GROUP_ROLE_ACTOR_TYPE, new String[]{"ladida"})
  112. .build());
  113. projectRole = projectRoleClient.get("MKY", "Users");
  114. actors = projectRole.actors;
  115. assertEquals(3, actors.size());
  116. assertEquals("aaaa", actors.get(0).displayName);
  117. assertEquals(USER_ROLE_ACTOR_TYPE, actors.get(0).type);
  118. assertEquals("zzzz", actors.get(0).name);
  119. assertEquals("ladida", actors.get(1).displayName);
  120. assertEquals(GROUP_ROLE_ACTOR_TYPE, actors.get(1).type);
  121. assertEquals("ladida", actors.get(1).name);
  122. assertEquals("zzzz", actors.get(2).displayName);
  123. assertEquals(USER_ROLE_ACTOR_TYPE, actors.get(2).type);
  124. assertEquals("aaaa", actors.get(2).name);
  125. final Response response = projectRoleClient.setActors("MKY", "Users", ImmutableMap.<String, String[]>builder()
  126. .put(USER_ROLE_ACTOR_TYPE, new String[]{"aaaa"})
  127. .put(GROUP_ROLE_ACTOR_TYPE, new String[]{"azza"})
  128. .build());
  129. assertEquals(NOT_FOUND.getStatusCode(), response.statusCode);
  130. assertEquals(new Errors().addError("We can't find 'azza' in any accessible user directory. Check they're still active and available, and try again."), response.entity);
  131. }
  132. Map<String, ProjectRole.Actor> makeMap(final Collection<ProjectRole.Actor> actors) {
  133. final Map<String, ProjectRole.Actor> map = new HashMap<>();
  134. for (ProjectRole.Actor actor : actors) {
  135. assertFalse(map.containsKey(actor.name));
  136. map.put(actor.name, actor);
  137. }
  138. return map;
  139. }
  140. @Test
  141. public void testDeleteRoleActor() throws Exception {
  142. final ProjectRole projectRole = projectRoleClient.get("MKY", "Users");
  143. assertEquals(2, projectRole.actors.size());
  144. projectRoleClient.deleteGroup("MKY", "Users", "jira-users");
  145. assertEquals(1, projectRoleClient.get("MKY", "Users").actors.size());
  146. projectRoleClient.deleteUser("MKY", "Users", "admin");
  147. assertEquals(0, projectRoleClient.get("MKY", "Users").actors.size());
  148. }
  149. @Test
  150. public void testAddRoleActor() throws Exception {
  151. ProjectRole projectRole = projectRoleClient.get("MKY", "Developers");
  152. assertEquals(0, projectRole.actors.size());
  153. projectRoleClient.addActors("MKY", "Developers", new String[]{"jira-developers"}, null);
  154. projectRole = projectRoleClient.get("MKY", "Developers");
  155. assertEquals(1, projectRole.actors.size());
  156. final ProjectRole.Actor actor = projectRole.actors.get(0);
  157. assertEquals("jira-developers", actor.name);
  158. assertEquals("jira-developers", actor.displayName);
  159. assertEquals(GROUP_ROLE_ACTOR_TYPE, actor.type);
  160. }
  161. @Test
  162. public void testAddRoleActors() throws Exception {
  163. ProjectRole projectRole = projectRoleClient.get("MKY", "Developers");
  164. assertEquals(0, projectRole.actors.size());
  165. projectRoleClient.addActors("MKY", "Developers", new String[]{"jira-users", "jira-administrators", "jira-developers"},
  166. new String[]{"admin"});
  167. projectRole = projectRoleClient.get("MKY", "Developers");
  168. assertEquals(4, projectRole.actors.size());
  169. final ProjectRole.Actor admin = projectRole.actors.get(0);
  170. assertEquals("admin", admin.name);
  171. assertEquals("Administrator", admin.displayName);
  172. assertEquals(USER_ROLE_ACTOR_TYPE, admin.type);
  173. final ProjectRole.Actor administrators = projectRole.actors.get(1);
  174. assertEquals("jira-administrators", administrators.name);
  175. assertEquals("jira-administrators", administrators.displayName);
  176. assertEquals(GROUP_ROLE_ACTOR_TYPE, administrators.type);
  177. final ProjectRole.Actor developers = projectRole.actors.get(2);
  178. assertEquals("jira-developers", developers.name);
  179. assertEquals("jira-developers", developers.displayName);
  180. assertEquals(GROUP_ROLE_ACTOR_TYPE, developers.type);
  181. final ProjectRole.Actor users = projectRole.actors.get(3);
  182. assertEquals("jira-users", users.name);
  183. assertEquals("jira-users", users.displayName);
  184. assertEquals(GROUP_ROLE_ACTOR_TYPE, users.type);
  185. }
  186. @Before
  187. public void setUp() {
  188. projectRoleClient = new ProjectRoleClient(environmentData);
  189. }
  190. JSONObject getJSON(final String uri) throws JSONException {
  191. tester.getDialog().gotoPage(uri);
  192. return new JSONObject(tester.getDialog().getResponseText());
  193. }
  194. }