PageRenderTime 48ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/jira-project/jira-functional-tests/jira-func-tests/src/main/java/com/atlassian/jira/webtests/ztests/user/rename/TestUserRenameOnPermissions.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 324 lines | 209 code | 71 blank | 44 comment | 2 complexity | a774409982da615335f203f88e948889 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.webtests.ztests.user.rename;
  2. import com.atlassian.jira.functest.framework.Administration;
  3. import com.atlassian.jira.functest.framework.BaseJiraFuncTest;
  4. import com.atlassian.jira.functest.framework.LoginAs;
  5. import com.atlassian.jira.functest.framework.admin.user.EditUserPage;
  6. import com.atlassian.jira.functest.framework.page.ViewIssuePage;
  7. import com.atlassian.jira.functest.framework.suite.Category;
  8. import com.atlassian.jira.functest.framework.suite.WebTest;
  9. import org.junit.Test;
  10. import javax.inject.Inject;
  11. import static com.atlassian.jira.functest.framework.FunctTestConstants.ADMIN_USERNAME;
  12. import static com.atlassian.jira.functest.framework.FunctTestConstants.DEFAULT_PERM_SCHEME_ID;
  13. import static com.atlassian.jira.functest.framework.FunctTestConstants.JIRA_ADMIN_ROLE_ID;
  14. import static com.atlassian.jira.functest.framework.FunctTestConstants.JIRA_DEV_GROUP;
  15. import static com.atlassian.jira.functest.framework.FunctTestConstants.JIRA_DEV_ROLE_ID;
  16. import static com.atlassian.jira.permission.ProjectPermissions.EDIT_ISSUES;
  17. import static org.junit.Assert.assertFalse;
  18. import static org.junit.Assert.assertTrue;
  19. /**
  20. * @since v6.0
  21. */
  22. @WebTest({Category.FUNC_TEST, Category.USERS_AND_GROUPS, Category.RENAME_USER, Category.PERMISSIONS})
  23. //todo annotation @LoginAs was added automatically - consider removing it if not needed by this test (otherwise remove this comment)
  24. @LoginAs(user = ADMIN_USERNAME)
  25. public class TestUserRenameOnPermissions extends BaseJiraFuncTest {
  26. private static final String BETTY_USERNAME = "betty";
  27. private static final String BETTY2_USERNAME = "betty2";
  28. private static final String BB_USERNAME = "bb";
  29. @Inject
  30. private Administration administration;
  31. @Test
  32. public void testSingleUserPermission() {
  33. administration.restoreData("user_rename_permissions.xml");
  34. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  35. assertTrue(userCanEdit(BETTY_USERNAME));
  36. // Remove existing permission - project role developer
  37. removeInitialEditIssuePermissionTypes();
  38. assertFalse(userCanEdit(BETTY_USERNAME));
  39. // Single User Permission for betty
  40. backdoor.permissionSchemes().addUserPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, BETTY_USERNAME);
  41. assertTrue(userCanEdit(BETTY_USERNAME));
  42. assertFalse(userCanEdit(BB_USERNAME));
  43. // Rename user betty to betty2
  44. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser(BETTY_USERNAME);
  45. editUserPage.setUsername(BETTY2_USERNAME);
  46. editUserPage.submitUpdate();
  47. assertTrue(userCanEdit(BETTY2_USERNAME));
  48. assertFalse(userCanEdit(BB_USERNAME));
  49. backdoor.permissionSchemes().removeUserPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, BETTY2_USERNAME);
  50. assertFalse(userCanEdit(BETTY2_USERNAME));
  51. // Single User Permission for bob (recycled username)
  52. backdoor.permissionSchemes().addUserPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, BB_USERNAME);
  53. assertTrue(userCanEdit(BB_USERNAME));
  54. assertFalse(userCanEdit(BETTY2_USERNAME));
  55. }
  56. @Test
  57. public void testReporterPermission() {
  58. administration.restoreData("user_rename_permissions.xml");
  59. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  60. // Remove existing permission - project role developer
  61. removeInitialEditIssuePermissionTypes();
  62. assertFalse(userCanEditIssue("cat", "COW-1"));
  63. // Add reporter user permission
  64. backdoor.permissionSchemes().addReporterPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES);
  65. assertTrue(userCanEditIssue("cat", "COW-1"));
  66. assertFalse(userCanEditIssue("cc", "COW-1"));
  67. assertTrue(userCanEditIssue("cc", "COW-3"));
  68. assertFalse(userCanEditIssue("cat", "COW-3"));
  69. // Rename user cat to cat2
  70. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser("cat");
  71. editUserPage.setUsername("cat2");
  72. editUserPage.submitUpdate();
  73. // Check that cat2 can still edit
  74. assertTrue(userCanEditIssue("cat2", "COW-1"));
  75. assertFalse(userCanEditIssue("cc", "COW-1"));
  76. assertFalse(userCanEditIssue("cat2", "COW-3"));
  77. }
  78. @Test
  79. public void testAssigneePermission() {
  80. administration.restoreData("user_rename_permissions.xml");
  81. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  82. // Remove existing permission - project role developer
  83. removeInitialEditIssuePermissionTypes();
  84. assertFalse(userCanEditIssue(BETTY_USERNAME, "COW-1"));
  85. // Add assignee user permission
  86. backdoor.permissionSchemes().addCurrentAssigneePermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES);
  87. assertTrue(userCanEditIssue(BETTY_USERNAME, "COW-1"));
  88. assertFalse(userCanEditIssue(BB_USERNAME, "COW-1"));
  89. assertTrue(userCanEditIssue(BB_USERNAME, "COW-3"));
  90. assertFalse(userCanEditIssue(BETTY_USERNAME, "COW-3"));
  91. // Rename user betty to betty2
  92. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser(BETTY_USERNAME);
  93. editUserPage.setUsername(BETTY2_USERNAME);
  94. editUserPage.submitUpdate();
  95. // Check that betty2 can still edit
  96. assertTrue(userCanEditIssue(BETTY2_USERNAME, "COW-1"));
  97. assertFalse(userCanEditIssue(BB_USERNAME, "COW-1"));
  98. assertFalse(userCanEditIssue(BETTY2_USERNAME, "COW-3"));
  99. }
  100. @Test
  101. public void testGroupPermission() {
  102. administration.restoreData("user_rename_permissions.xml");
  103. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  104. // Remove existing permission - project role developer
  105. removeInitialEditIssuePermissionTypes();
  106. assertFalse(userCanEditIssue("cat", "COW-1"));
  107. // Add group user permission
  108. backdoor.permissionSchemes().addGroupPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, JIRA_DEV_GROUP);
  109. assertTrue(userCanEditIssue("cat", "COW-1"));
  110. assertFalse(userCanEditIssue("cc", "COW-1"));
  111. // Rename user
  112. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser("cat");
  113. editUserPage.setUsername("cat2");
  114. editUserPage.submitUpdate();
  115. // Check that cat2 can still edit
  116. assertTrue(userCanEditIssue("cat2", "COW-1"));
  117. assertFalse(userCanEditIssue("cc", "COW-1"));
  118. // remove cat2 from jira-dev
  119. administration.usersAndGroups().removeUserFromGroup("cat2", "jira-developers");
  120. administration.usersAndGroups().addUserToGroup("cc", "jira-developers");
  121. assertFalse(userCanEditIssue("cat2", "COW-1"));
  122. assertTrue(userCanEditIssue("cc", "COW-1"));
  123. }
  124. @Test
  125. public void testProjectLeadPermission() {
  126. administration.restoreData("user_rename_permissions.xml");
  127. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  128. // Remove existing permission - project role developer
  129. removeInitialEditIssuePermissionTypes();
  130. // set cat as project lead
  131. administration.project().setProjectLead("Bovine", "cat");
  132. assertFalse(userCanEditIssue("cat", "COW-1"));
  133. // Add project lead user permission
  134. backdoor.permissionSchemes().addProjectLeadPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES);
  135. assertTrue(userCanEditIssue("cat", "COW-1"));
  136. assertFalse(userCanEditIssue("cc", "COW-1"));
  137. // Rename user
  138. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser("cat");
  139. editUserPage.setUsername("cat2");
  140. editUserPage.submitUpdate();
  141. // Check that cat2 can still edit
  142. assertTrue(userCanEditIssue("cat2", "COW-1"));
  143. assertFalse(userCanEditIssue("cc", "COW-1"));
  144. // set cc as project lead
  145. administration.project().setProjectLead("Bovine", "cc");
  146. assertFalse(userCanEditIssue("cat2", "COW-1"));
  147. assertTrue(userCanEditIssue("cc", "COW-1"));
  148. }
  149. @Test
  150. public void testUserCFPermission() {
  151. administration.restoreData("user_rename_permissions.xml");
  152. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  153. // Remove existing permission - project role developer
  154. removeInitialEditIssuePermissionTypes();
  155. assertFalse(userCanEditIssue("cat", "COW-2"));
  156. assertFalse(userCanEditIssue("cc", "COW-1"));
  157. // Add User CF user permission
  158. backdoor.permissionSchemes().addUserCustomFieldPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, "customfield_10300");
  159. assertTrue(userCanEditIssue("cat", "COW-2"));
  160. assertFalse(userCanEditIssue("cc", "COW-2"));
  161. assertTrue(userCanEditIssue("cc", "COW-1"));
  162. assertFalse(userCanEditIssue("cat", "COW-1"));
  163. // Rename user
  164. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser("cat");
  165. editUserPage.setUsername("cat2");
  166. editUserPage.submitUpdate();
  167. // Check that cat2 can still edit
  168. assertTrue(userCanEditIssue("cat2", "COW-2"));
  169. assertFalse(userCanEditIssue("cat2", "COW-1"));
  170. }
  171. @Test
  172. public void testGroupCFPermission() {
  173. administration.restoreData("user_rename_permissions.xml");
  174. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  175. // Remove existing permission - project role developer
  176. removeInitialEditIssuePermissionTypes();
  177. assertFalse(userCanEditIssue("cat", "COW-5"));
  178. // Add group CF permission
  179. backdoor.permissionSchemes().addGroupCustomFieldPermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, "customfield_10400");
  180. assertTrue(userCanEditIssue("cat", "COW-5"));
  181. assertFalse(userCanEditIssue("cc", "COW-5"));
  182. // Rename user
  183. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser("cat");
  184. editUserPage.setUsername("cat2");
  185. editUserPage.submitUpdate();
  186. // Check that cat2 can still edit
  187. assertTrue(userCanEditIssue("cat2", "COW-5"));
  188. assertFalse(userCanEditIssue("cc", "COW-5"));
  189. // remove cat2 from jira-dev
  190. administration.usersAndGroups().removeUserFromGroup("cat2", "jira-developers");
  191. administration.usersAndGroups().addUserToGroup("cc", "jira-developers");
  192. assertFalse(userCanEditIssue("cat2", "COW-5"));
  193. assertTrue(userCanEditIssue("cc", "COW-5"));
  194. }
  195. @Test
  196. public void testProjectRolePermission() {
  197. administration.restoreData("user_rename_permissions.xml");
  198. backdoor.darkFeatures().enableForSite("ka.NO_GLOBAL_SHORTCUT_LINKS");
  199. // Default permission scheme is set up with project role developer permission based on group jira-dev
  200. assertTrue(userCanEditIssue("cat", "COW-1"));
  201. assertFalse(userCanEditIssue("cc", "COW-1"));
  202. // Rename user
  203. EditUserPage editUserPage = administration.usersAndGroups().gotoEditUser("cat");
  204. editUserPage.setUsername("cat2");
  205. editUserPage.submitUpdate();
  206. // Check that cat2 can still edit
  207. assertTrue(userCanEditIssue("cat2", "COW-1"));
  208. assertFalse(userCanEditIssue("cc", "COW-1"));
  209. // remove cat2 from jira-dev
  210. administration.usersAndGroups().removeUserFromGroup("cat2", "jira-developers");
  211. administration.usersAndGroups().addUserToGroup("cc", "jira-developers");
  212. assertFalse(userCanEditIssue("cat2", "COW-1"));
  213. assertTrue(userCanEditIssue("cc", "COW-1"));
  214. // Now let's remove the permissions and replace with the admin permission
  215. backdoor.permissionSchemes().replaceProjectRolePermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, JIRA_ADMIN_ROLE_ID);
  216. assertFalse(userCanEditIssue("cat2", "COW-1"));
  217. assertFalse(userCanEditIssue("cc", "COW-1"));
  218. // Swap to a user based role "Cats" which only includes cat
  219. backdoor.permissionSchemes().replaceProjectRolePermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, 10003);
  220. assertTrue(userCanEditIssue("cat2", "COW-1"));
  221. assertFalse(userCanEditIssue("cc", "COW-1"));
  222. // Rename user
  223. editUserPage = administration.usersAndGroups().gotoEditUser("cat2");
  224. editUserPage.setUsername("cat");
  225. editUserPage.submitUpdate();
  226. assertTrue(userCanEditIssue("cat", "COW-1"));
  227. assertFalse(userCanEditIssue("cc", "COW-1"));
  228. // Swap to a user based role "Dogs" which only includes Candy
  229. backdoor.permissionSchemes().replaceProjectRolePermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, 10004);
  230. assertFalse(userCanEditIssue("cat", "COW-1"));
  231. assertTrue(userCanEditIssue("cc", "COW-1"));
  232. }
  233. private void removeInitialEditIssuePermissionTypes() {
  234. backdoor.permissionSchemes().removeProjectRolePermission(DEFAULT_PERM_SCHEME_ID, EDIT_ISSUES, JIRA_DEV_ROLE_ID);
  235. }
  236. private boolean userCanEdit(String username) {
  237. return userCanEditIssue(username, "COW-1");
  238. }
  239. private boolean userCanEditIssue(String username, String issueKey) {
  240. String password = username;
  241. if (username.equals(BETTY2_USERNAME))
  242. password = BETTY_USERNAME;
  243. if (username.equals("cat2"))
  244. password = "cat";
  245. try {
  246. navigation.login(username, password);
  247. ViewIssuePage viewIssuePage = navigation.issue().viewIssue(issueKey);
  248. return viewIssuePage.containsEditButton();
  249. } finally {
  250. navigation.login("admin");
  251. }
  252. }
  253. }