PageRenderTime 42ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/jira-project/jira-components/jira-tests-parent/jira-tests-unit/src/test/java/com/atlassian/jira/sharing/type/TestProjectShareTypeComparator.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 220 lines | 173 code | 38 blank | 9 comment | 0 complexity | 0488acb1de42805cf70d64b7681c9fae MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.sharing.type;
  2. import com.atlassian.jira.mock.MockProjectManager;
  3. import com.atlassian.jira.mock.MockProjectRoleManager;
  4. import com.atlassian.jira.project.MockProject;
  5. import com.atlassian.jira.project.Project;
  6. import com.atlassian.jira.project.ProjectManager;
  7. import com.atlassian.jira.security.roles.ProjectRole;
  8. import com.atlassian.jira.security.roles.ProjectRoleManager;
  9. import com.atlassian.jira.sharing.SharePermission;
  10. import com.atlassian.jira.sharing.SharePermissionImpl;
  11. import org.junit.After;
  12. import org.junit.Before;
  13. import org.junit.Test;
  14. import java.util.Comparator;
  15. import static org.junit.Assert.assertEquals;
  16. import static org.junit.Assert.assertTrue;
  17. import static org.junit.Assert.fail;
  18. /**
  19. * Test for {@link com.atlassian.jira.sharing.type.ProjectSharePermissionComparator}.
  20. *
  21. * @since v3.13
  22. */
  23. public class TestProjectShareTypeComparator {
  24. private static final Project PROJECT_1 = new MockProject(1000, "aaa", "aaa");
  25. private static final Project PROJECT_2 = new MockProject(1001, "bbb", "bbb");
  26. private static final Project PROJECT_3 = new MockProject(1002, "ccc", "ccc");
  27. private static final ProjectRole ROLE_1 = new MockProjectRoleManager.MockProjectRole(100, "zzz", "bbb");
  28. private static final ProjectRole ROLE_2 = new MockProjectRoleManager.MockProjectRole(101, "yyy", "aaa");
  29. private static final SharePermission PROJECT_PERM_1 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_1.getId().toString(), null);
  30. private static final SharePermission PROJECT_PERM_2 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_1.getId().toString(), null);
  31. private static final SharePermission PROJECT_PERM_3 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_2.getId().toString(), null);
  32. private static final SharePermission PROJECT_PERM_4 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_3.getId().toString(), null);
  33. private static final SharePermission PROJECT_PERM_NULL = new SharePermissionImpl(ProjectShareType.TYPE, null, null);
  34. private static final SharePermission ROLE_PERM_1 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_2.getId().toString(), ROLE_1.getId().toString());
  35. private static final SharePermission ROLE_PERM_2 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_2.getId().toString(), ROLE_1.getId().toString());
  36. private static final SharePermission ROLE_PERM_3 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_2.getId().toString(), ROLE_2.getId().toString());
  37. private static final SharePermission ROLE_PERM_4 = new SharePermissionImpl(ProjectShareType.TYPE, PROJECT_1.getId().toString(), ROLE_2.getId().toString());
  38. private static final SharePermission GLOBAL_PERMISSION = new SharePermissionImpl(GlobalShareType.TYPE, null, null);
  39. private ProjectManager projectManager;
  40. private ProjectRoleManager projectRoleManager;
  41. private Comparator comparator;
  42. @Before
  43. public void setUp() throws Exception {
  44. projectManager = createProjectManager();
  45. projectRoleManager = createProjectRoleManager();
  46. comparator = new ProjectSharePermissionComparator(projectManager, projectRoleManager);
  47. }
  48. @After
  49. public void tearDown() throws Exception {
  50. projectManager = null;
  51. projectRoleManager = null;
  52. }
  53. @Test
  54. public void testConstructionWithNullProjectManager() {
  55. try {
  56. new ProjectSharePermissionComparator(null, projectRoleManager);
  57. fail("Constructor should not accept null argument.");
  58. } catch (IllegalArgumentException e) {
  59. //expected.
  60. }
  61. }
  62. @Test
  63. public void testConstructionWithNullProjectRoleManager() {
  64. try {
  65. new ProjectSharePermissionComparator(projectManager, null);
  66. fail("Constructor should not accept null argument.");
  67. } catch (IllegalArgumentException e) {
  68. //expected.
  69. }
  70. }
  71. @Test
  72. public void testCompareSameProject() {
  73. assertEquals(0, comparator.compare(PROJECT_PERM_1, PROJECT_PERM_1));
  74. }
  75. @Test
  76. public void testCompareEqualsProject() {
  77. assertEquals(0, comparator.compare(PROJECT_PERM_1, PROJECT_PERM_2));
  78. }
  79. @Test
  80. public void testCompareLessThanProject() {
  81. assertTrue(comparator.compare(PROJECT_PERM_1, PROJECT_PERM_3) < 0);
  82. }
  83. @Test
  84. public void testCompareGreaterThanProject() {
  85. assertTrue(comparator.compare(PROJECT_PERM_3, PROJECT_PERM_2) > 0);
  86. }
  87. @Test
  88. public void testCompareLessThanProjectNull() {
  89. assertTrue(comparator.compare(PROJECT_PERM_NULL, PROJECT_PERM_2) < 0);
  90. }
  91. @Test
  92. public void testCompareGrearerThanProjectNull() {
  93. assertTrue(comparator.compare(PROJECT_PERM_4, PROJECT_PERM_NULL) > 0);
  94. }
  95. @Test
  96. public void testCompareLessThanProjectAndRoleWithNullProject() {
  97. assertTrue(comparator.compare(PROJECT_PERM_NULL, ROLE_PERM_1) < 0);
  98. }
  99. @Test
  100. public void testCompareLessThanProjectAndRoleWithSameProject() {
  101. assertTrue(comparator.compare(PROJECT_PERM_3, ROLE_PERM_1) < 0);
  102. }
  103. @Test
  104. public void testCompareLessThanProjectAndRoleWithDifferentProject() {
  105. assertTrue(comparator.compare(PROJECT_PERM_1, ROLE_PERM_1) < 0);
  106. }
  107. @Test
  108. public void testCompareGreaterThanProjectAndRoleWithDifferentProject() {
  109. assertTrue(comparator.compare(PROJECT_PERM_4, ROLE_PERM_1) > 0);
  110. }
  111. @Test
  112. public void testCompateGreaterThanRoleAndProjectWithSameProject() {
  113. assertTrue(comparator.compare(ROLE_PERM_1, PROJECT_PERM_3) > 0);
  114. }
  115. @Test
  116. public void testCompareLessThanRoleAndProjectWithDifferentProject() {
  117. assertTrue(comparator.compare(ROLE_PERM_1, PROJECT_PERM_4) < 0);
  118. }
  119. @Test
  120. public void testCompareGreaterThanRoleAndProjectWithDifferentProject() {
  121. assertTrue(comparator.compare(ROLE_PERM_4, PROJECT_PERM_2) > 0);
  122. }
  123. @Test
  124. public void testCompareEqualsRoles() {
  125. assertEquals(0, comparator.compare(ROLE_PERM_1, ROLE_PERM_2));
  126. }
  127. @Test
  128. public void testCompareSameRole() {
  129. assertEquals(0, comparator.compare(ROLE_PERM_1, ROLE_PERM_1));
  130. }
  131. @Test
  132. public void testCompareLessThanRole() {
  133. assertTrue(comparator.compare(ROLE_PERM_3, ROLE_PERM_1) < 0);
  134. }
  135. @Test
  136. public void testCompareGreaterThanRole() {
  137. assertTrue(comparator.compare(ROLE_PERM_1, ROLE_PERM_3) > 0);
  138. }
  139. @Test
  140. public void testCompareWithNullFirst() {
  141. assertTrue(comparator.compare(null, PROJECT_PERM_1) < 0);
  142. }
  143. @Test
  144. public void testCompareWithNullSecond() {
  145. assertTrue(comparator.compare(PROJECT_PERM_1, null) > 0);
  146. }
  147. @Test
  148. public void testCompareWithNulls() {
  149. assertEquals(0, comparator.compare(null, null));
  150. }
  151. @Test
  152. public void testCompareInvalidPermission() {
  153. try {
  154. comparator.compare(GLOBAL_PERMISSION, PROJECT_PERM_1);
  155. fail("Should not accept invalid permissions type.");
  156. } catch (IllegalArgumentException e) {
  157. //expected.
  158. }
  159. }
  160. @Test
  161. public void testCompareInvalidType() {
  162. try {
  163. comparator.compare("aa", PROJECT_PERM_1);
  164. fail("Should not accept invalid permissions type.");
  165. } catch (ClassCastException e) {
  166. //expected.
  167. }
  168. }
  169. private ProjectManager createProjectManager() {
  170. MockProjectManager mockMgr = new MockProjectManager();
  171. mockMgr.addProject(PROJECT_1);
  172. mockMgr.addProject(PROJECT_2);
  173. mockMgr.addProject(PROJECT_3);
  174. return mockMgr;
  175. }
  176. private ProjectRoleManager createProjectRoleManager() {
  177. MockProjectRoleManager mockMgr = new MockProjectRoleManager();
  178. mockMgr.addRole(ROLE_1);
  179. mockMgr.addRole(ROLE_2);
  180. return mockMgr;
  181. }
  182. }