PageRenderTime 36ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/jira-project/jira-functional-tests/jira-webdriver-tests/src/main/java/com/atlassian/jira/webtest/webdriver/tests/security/TestPluggableProjectPermissionsSinglePage.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 160 lines | 125 code | 35 blank | 0 comment | 0 complexity | dfceb30c449450f1cff7e0ed31c861ea MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.webtest.webdriver.tests.security;
  2. import com.atlassian.jira.functest.framework.FunctTestConstants;
  3. import com.atlassian.jira.functest.framework.suite.Category;
  4. import com.atlassian.jira.functest.framework.suite.WebTest;
  5. import com.atlassian.jira.pageobjects.BaseJiraWebTest;
  6. import com.atlassian.jira.pageobjects.config.EnableAUIFlags;
  7. import com.atlassian.jira.pageobjects.config.ResetData;
  8. import com.atlassian.jira.pageobjects.pages.EditPermissionsSinglePage;
  9. import com.atlassian.jira.pageobjects.pages.EditPermissionsSinglePage.RevokePermissionsDialog;
  10. import org.junit.After;
  11. import org.junit.Before;
  12. import org.junit.Test;
  13. import static com.atlassian.jira.pageobjects.pages.EditPermissionsSinglePage.GrantPermissionsDialog;
  14. import static com.atlassian.jira.pageobjects.pages.EditPermissionsSinglePage.PermissionsEntry;
  15. import static org.junit.Assert.assertFalse;
  16. import static org.junit.Assert.assertTrue;
  17. @WebTest(Category.WEBDRIVER_TEST)
  18. @EnableAUIFlags
  19. @ResetData
  20. public class TestPluggableProjectPermissionsSinglePage extends BaseJiraWebTest {
  21. private static final String PROJECT_PERMISSION_KEY = "func.test.project.permission";
  22. private static final String PROJECT_PERMISSION_KEY_COMPLETE = "com.atlassian.jira.dev.func-test-plugin:" + PROJECT_PERMISSION_KEY;
  23. private static final int DEFAULT_PERMISSION_SCHEME = 0;
  24. private static final String USERS_GROUP = "jira-users";
  25. private static final String ADMINISTRATORS_GROUP = "jira-administrators";
  26. private static final String PROJECT_LEAD = "admin.permission.types.project.lead";
  27. private static final String REPORTER = "admin.permission.types.reporter";
  28. @Before
  29. public void setup() {
  30. enablePermission();
  31. backdoor.userProfile().changeUserLanguage(FunctTestConstants.ADMIN_USERNAME, FunctTestConstants.MOON_LOCALE);
  32. }
  33. @After
  34. public void tearDown() {
  35. backdoor.userProfile().changeUserLanguage(FunctTestConstants.ADMIN_USERNAME, "");
  36. }
  37. @Test
  38. public void pluggableProjectPermissionIsDisplayed() {
  39. final EditPermissionsSinglePage editPermissionsSinglePage = goToPermissionSchemePage();
  40. assertTrue(editPermissionsSinglePage.hasPermissionEntry(PROJECT_PERMISSION_KEY));
  41. }
  42. @Test
  43. public void pluggableProjectPermissionIsNotDisplayedIfPermissionIsDisabled() {
  44. disablePermission();
  45. final EditPermissionsSinglePage editPermissionsSinglePage = goToPermissionSchemePage();
  46. assertFalse(editPermissionsSinglePage.hasPermissionEntry(PROJECT_PERMISSION_KEY));
  47. }
  48. @Test
  49. public void pluggableProjectPermissionEntitiesAreRestoredAfterReEnabling() {
  50. EditPermissionsSinglePage editPermissionsSinglePage = goToPermissionSchemePage();
  51. final PermissionsEntry permissionEntry = editPermissionsSinglePage.getPermissionEntry(PROJECT_PERMISSION_KEY);
  52. addGroupPermissionToEntry(permissionEntry, USERS_GROUP);
  53. disablePermission();
  54. enablePermission();
  55. assertTrue(permissionEntry.hasPermissionForGroup(USERS_GROUP));
  56. }
  57. @Test
  58. public void canAddAndDeleteSinglePluggableProjectPermissionEntity() {
  59. final EditPermissionsSinglePage editPermissionsSinglePage = goToPermissionSchemePage();
  60. final PermissionsEntry permissionsRow = editPermissionsSinglePage.getPermissionEntry(PROJECT_PERMISSION_KEY);
  61. assertFalse(permissionsRow.hasPermissionForGroup(USERS_GROUP));
  62. addGroupPermissionToEntry(permissionsRow, USERS_GROUP);
  63. assertTrue(permissionsRow.hasPermissionForGroup(USERS_GROUP));
  64. removePermissionFromEntry(permissionsRow, USERS_GROUP);
  65. assertFalse(permissionsRow.hasPermissionForGroup(USERS_GROUP));
  66. }
  67. @Test
  68. public void canAddAndDeleteMultiplePluggableProjectPermissionEntities() {
  69. final EditPermissionsSinglePage editPermissionsSinglePage = goToPermissionSchemePage();
  70. final PermissionsEntry permissionsRow = editPermissionsSinglePage.getPermissionEntry(PROJECT_PERMISSION_KEY);
  71. assertFalse(permissionsRow.hasPermissionForGroup(USERS_GROUP));
  72. assertFalse(permissionsRow.hasPermissionForGroup(ADMINISTRATORS_GROUP));
  73. addGroupPermissionToEntry(permissionsRow, USERS_GROUP);
  74. assertTrue(permissionsRow.hasPermissionForGroup(USERS_GROUP));
  75. assertFalse(permissionsRow.hasPermissionForGroup(ADMINISTRATORS_GROUP));
  76. addGroupPermissionToEntry(permissionsRow, ADMINISTRATORS_GROUP);
  77. assertTrue(permissionsRow.hasPermissionForGroup(USERS_GROUP));
  78. assertTrue(permissionsRow.hasPermissionForGroup(ADMINISTRATORS_GROUP));
  79. removePermissionFromEntry(permissionsRow, USERS_GROUP);
  80. assertFalse(permissionsRow.hasPermissionForGroup(USERS_GROUP));
  81. assertTrue(permissionsRow.hasPermissionForGroup(ADMINISTRATORS_GROUP));
  82. }
  83. @Test
  84. public void canAddAndDeleteEntitiesThatDoNotRequireAdditionalParameters() {
  85. final EditPermissionsSinglePage editPermissionsSinglePage = goToPermissionSchemePage();
  86. final PermissionsEntry permissionsRow = editPermissionsSinglePage.getPermissionEntry(PROJECT_PERMISSION_KEY);
  87. assertFalse(permissionsRow.hasSecurityTypeWithNoInputField(PROJECT_LEAD));
  88. assertFalse(permissionsRow.hasSecurityTypeWithNoInputField(REPORTER));
  89. addSecurityTypeWithNoInputField(editPermissionsSinglePage, PROJECT_LEAD);
  90. assertTrue(permissionsRow.hasSecurityTypeWithNoInputField(PROJECT_LEAD));
  91. assertFalse(permissionsRow.hasSecurityTypeWithNoInputField(REPORTER));
  92. addSecurityTypeWithNoInputField(editPermissionsSinglePage, REPORTER);
  93. assertTrue(permissionsRow.hasSecurityTypeWithNoInputField(PROJECT_LEAD));
  94. assertTrue(permissionsRow.hasSecurityTypeWithNoInputField(REPORTER));
  95. }
  96. private void addSecurityTypeWithNoInputField(final EditPermissionsSinglePage editPermissionsSinglePage, final String securityType) {
  97. final PermissionsEntry permissionEntry = editPermissionsSinglePage.getPermissionEntry(PROJECT_PERMISSION_KEY);
  98. final GrantPermissionsDialog grantPermissionsDialog = permissionEntry.openGrantPermissionDialog();
  99. grantPermissionsDialog.showMore();
  100. grantPermissionsDialog.selectSecurityTypeWithNoInputField(securityType);
  101. grantPermissionsDialog.submitAssertSuccessful();
  102. }
  103. private EditPermissionsSinglePage goToPermissionSchemePage() {
  104. return goToPermissionSchemePage(DEFAULT_PERMISSION_SCHEME);
  105. }
  106. private EditPermissionsSinglePage goToPermissionSchemePage(final int schemeId) {
  107. return jira.visit(EditPermissionsSinglePage.class, schemeId);
  108. }
  109. private void enablePermission() {
  110. backdoor.plugins().enablePluginModule(PROJECT_PERMISSION_KEY_COMPLETE);
  111. }
  112. private void disablePermission() {
  113. backdoor.plugins().disablePluginModule(PROJECT_PERMISSION_KEY_COMPLETE);
  114. }
  115. private void addGroupPermissionToEntry(PermissionsEntry permEntry, String group) {
  116. final GrantPermissionsDialog grantPermissionsDialog = permEntry.openGrantPermissionDialog();
  117. grantPermissionsDialog.setGroup(group);
  118. grantPermissionsDialog.submitAssertSuccessful();
  119. }
  120. private void removePermissionFromEntry(PermissionsEntry permissionsEntry, String permissionName) {
  121. final RevokePermissionsDialog grantPermissionsDialog = permissionsEntry.openRevokePermissionDialog();
  122. grantPermissionsDialog.markForRemoval(permissionName);
  123. grantPermissionsDialog.submit();
  124. }
  125. }