PageRenderTime 51ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/jira-project/jira-components/jira-tests-parent/jira-tests-unit/src/test/java/com/atlassian/jira/jql/permission/TestIssueLiteralSanitiser.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 246 lines | 202 code | 41 blank | 3 comment | 25 complexity | f4e75fa0c5313027b58b58393f4f1790 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.jql.permission;
  2. import com.atlassian.jira.issue.Issue;
  3. import com.atlassian.jira.jql.operand.QueryLiteral;
  4. import com.atlassian.jira.jql.util.JqlIssueSupport;
  5. import com.atlassian.jira.mock.issue.MockIssue;
  6. import com.atlassian.jira.security.PermissionManager;
  7. import com.atlassian.jira.security.Permissions;
  8. import com.atlassian.jira.user.ApplicationUser;
  9. import com.atlassian.jira.util.collect.CollectionBuilder;
  10. import org.junit.Before;
  11. import org.junit.Test;
  12. import org.junit.runner.RunWith;
  13. import org.mockito.Mock;
  14. import org.mockito.runners.MockitoJUnitRunner;
  15. import java.util.List;
  16. import static com.atlassian.jira.jql.operand.SimpleLiteralFactory.createLiteral;
  17. import static org.junit.Assert.assertEquals;
  18. import static org.junit.Assert.assertFalse;
  19. import static org.junit.Assert.assertSame;
  20. import static org.junit.Assert.assertTrue;
  21. import static org.mockito.Mockito.when;
  22. /**
  23. * @since v4.0
  24. */
  25. @RunWith(MockitoJUnitRunner.class)
  26. public class TestIssueLiteralSanitiser {
  27. @Mock
  28. private PermissionManager permissionManager;
  29. @Mock
  30. private JqlIssueSupport jqlIssueSupport;
  31. private ApplicationUser theUser;
  32. @Before
  33. public void setUp() throws Exception {
  34. theUser = null;
  35. }
  36. @Test
  37. public void testGetIssues() throws Exception {
  38. final QueryLiteral lit1 = new QueryLiteral();
  39. final QueryLiteral lit2 = createLiteral("KEY");
  40. final QueryLiteral lit3 = createLiteral(555L);
  41. final QueryLiteral lit4 = createLiteral(666L);
  42. final Issue issue1 = new MockIssue();
  43. final Issue issue2 = new MockIssue();
  44. when(jqlIssueSupport.getIssue("KEY")).thenReturn(issue1);
  45. when(jqlIssueSupport.getIssue(555L)).thenReturn(issue2);
  46. when(jqlIssueSupport.getIssue(666L)).thenReturn(null);
  47. final IssueLiteralSanitiser sanitiser = new IssueLiteralSanitiser(permissionManager, jqlIssueSupport, theUser);
  48. final List<Issue> result1 = sanitiser.getIssues(lit1);
  49. assertEquals(0, result1.size());
  50. final List<Issue> result2 = sanitiser.getIssues(lit2);
  51. assertEquals(1, result2.size());
  52. assertSame(issue1, result2.get(0));
  53. final List<Issue> result3 = sanitiser.getIssues(lit3);
  54. assertEquals(1, result3.size());
  55. assertSame(issue2, result3.get(0));
  56. final List<Issue> result4 = sanitiser.getIssues(lit4);
  57. assertEquals(0, result4.size());
  58. }
  59. @Test
  60. public void testSanitiseLiteralsTwoLiteralsTwoIssuesAllOkay() throws Exception {
  61. final QueryLiteral lit1 = createLiteral("KEY");
  62. final QueryLiteral lit2 = createLiteral(555L);
  63. final Issue issue1 = new MockIssue(1L);
  64. final Issue issue2 = new MockIssue(2L);
  65. final Issue issue3 = new MockIssue(3L);
  66. final Issue issue4 = new MockIssue(4L);
  67. when(permissionManager.hasPermission(Permissions.BROWSE, issue1, theUser)).thenReturn(true);
  68. when(permissionManager.hasPermission(Permissions.BROWSE, issue2, theUser)).thenReturn(true);
  69. when(permissionManager.hasPermission(Permissions.BROWSE, issue3, theUser)).thenReturn(true);
  70. when(permissionManager.hasPermission(Permissions.BROWSE, issue4, theUser)).thenReturn(true);
  71. final IssueLiteralSanitiser sanitiser = new IssueLiteralSanitiser(permissionManager, jqlIssueSupport, theUser) {
  72. @Override
  73. List<Issue> getIssues(final QueryLiteral literal) {
  74. if (literal == lit1) {
  75. return CollectionBuilder.newBuilder(issue1, issue2).asList();
  76. } else if (literal == lit2) {
  77. return CollectionBuilder.newBuilder(issue3, issue4).asList();
  78. }
  79. throw new IllegalStateException();
  80. }
  81. };
  82. final LiteralSanitiser.Result result = sanitiser.sanitiseLiterals(CollectionBuilder.newBuilder(lit1, lit2).asList());
  83. assertFalse(result.isModified());
  84. }
  85. @Test
  86. public void testSanitiseLiteralsTwoLiteralsTwoIssuesFirstLiteralOneBadOneGood() throws Exception {
  87. final QueryLiteral lit1 = createLiteral("KEY");
  88. final QueryLiteral lit2 = createLiteral(555L);
  89. final Issue issue1 = new MockIssue(1L);
  90. final Issue issue2 = new MockIssue(2L);
  91. final Issue issue3 = new MockIssue(3L);
  92. final Issue issue4 = new MockIssue(4L);
  93. when(permissionManager.hasPermission(Permissions.BROWSE, issue1, theUser)).thenReturn(false);
  94. when(permissionManager.hasPermission(Permissions.BROWSE, issue2, theUser)).thenReturn(true);
  95. when(permissionManager.hasPermission(Permissions.BROWSE, issue3, theUser)).thenReturn(true);
  96. when(permissionManager.hasPermission(Permissions.BROWSE, issue4, theUser)).thenReturn(true);
  97. final IssueLiteralSanitiser sanitiser = new IssueLiteralSanitiser(permissionManager, jqlIssueSupport, theUser) {
  98. @Override
  99. List<Issue> getIssues(final QueryLiteral literal) {
  100. if (literal == lit1) {
  101. return CollectionBuilder.newBuilder(issue1, issue2).asList();
  102. } else if (literal == lit2) {
  103. return CollectionBuilder.newBuilder(issue3, issue4).asList();
  104. }
  105. throw new IllegalStateException();
  106. }
  107. };
  108. final LiteralSanitiser.Result result = sanitiser.sanitiseLiterals(CollectionBuilder.newBuilder(lit1, lit2).asList());
  109. assertFalse(result.isModified());
  110. }
  111. @Test
  112. public void testSanitiseLiteralsTwoLiteralsTwoIssuesFirstLiteralBothBad() throws Exception {
  113. final QueryLiteral lit1 = createLiteral("KEY");
  114. final QueryLiteral lit2 = createLiteral(555L);
  115. final Issue issue1 = new MockIssue(1L);
  116. final Issue issue2 = new MockIssue(2L);
  117. final Issue issue3 = new MockIssue(3L);
  118. final Issue issue4 = new MockIssue(4L);
  119. when(permissionManager.hasPermission(Permissions.BROWSE, issue1, theUser)).thenReturn(false);
  120. when(permissionManager.hasPermission(Permissions.BROWSE, issue2, theUser)).thenReturn(false);
  121. when(permissionManager.hasPermission(Permissions.BROWSE, issue3, theUser)).thenReturn(true);
  122. when(permissionManager.hasPermission(Permissions.BROWSE, issue4, theUser)).thenReturn(true);
  123. final IssueLiteralSanitiser sanitiser = new IssueLiteralSanitiser(permissionManager, jqlIssueSupport, theUser) {
  124. @Override
  125. List<Issue> getIssues(final QueryLiteral literal) {
  126. if (literal == lit1) {
  127. return CollectionBuilder.newBuilder(issue1, issue2).asList();
  128. } else if (literal == lit2) {
  129. return CollectionBuilder.newBuilder(issue3, issue4).asList();
  130. }
  131. throw new IllegalStateException();
  132. }
  133. };
  134. final QueryLiteral expectedLit1 = createLiteral(1L);
  135. final QueryLiteral expectedLit2 = createLiteral(2L);
  136. final QueryLiteral expectedLit3 = createLiteral(555L);
  137. final LiteralSanitiser.Result result = sanitiser.sanitiseLiterals(CollectionBuilder.newBuilder(lit1, lit2).asList());
  138. assertTrue(result.isModified());
  139. assertEquals(3, result.getLiterals().size());
  140. assertTrue(result.getLiterals().contains(expectedLit1));
  141. assertTrue(result.getLiterals().contains(expectedLit2));
  142. assertTrue(result.getLiterals().contains(expectedLit3));
  143. }
  144. @Test
  145. public void testSanitiseLiteralsTwoLiteralsTwoIssuesBothLiteralsOneBadOneGood() throws Exception {
  146. final QueryLiteral lit1 = createLiteral("KEY");
  147. final QueryLiteral lit2 = createLiteral(555L);
  148. final Issue issue1 = new MockIssue(1L);
  149. final Issue issue2 = new MockIssue(2L);
  150. final Issue issue3 = new MockIssue(3L);
  151. final Issue issue4 = new MockIssue(4L);
  152. when(permissionManager.hasPermission(Permissions.BROWSE, issue1, theUser)).thenReturn(false);
  153. when(permissionManager.hasPermission(Permissions.BROWSE, issue2, theUser)).thenReturn(true);
  154. when(permissionManager.hasPermission(Permissions.BROWSE, issue3, theUser)).thenReturn(true);
  155. when(permissionManager.hasPermission(Permissions.BROWSE, issue4, theUser)).thenReturn(false);
  156. final IssueLiteralSanitiser sanitiser = new IssueLiteralSanitiser(permissionManager, jqlIssueSupport, theUser) {
  157. @Override
  158. List<Issue> getIssues(final QueryLiteral literal) {
  159. if (literal == lit1) {
  160. return CollectionBuilder.newBuilder(issue1, issue2).asList();
  161. } else if (literal == lit2) {
  162. return CollectionBuilder.newBuilder(issue3, issue4).asList();
  163. }
  164. throw new IllegalStateException();
  165. }
  166. };
  167. final LiteralSanitiser.Result result = sanitiser.sanitiseLiterals(CollectionBuilder.newBuilder(lit1, lit2).asList());
  168. assertFalse(result.isModified());
  169. }
  170. @Test
  171. public void testSanitiseLiteralsTwoLiteralsTwoIssuesAllBad() throws Exception {
  172. final QueryLiteral lit1 = createLiteral("KEY");
  173. final QueryLiteral lit2 = createLiteral(555L);
  174. final Issue issue1 = new MockIssue(1L);
  175. final Issue issue2 = new MockIssue(2L);
  176. final Issue issue3 = new MockIssue(3L);
  177. final Issue issue4 = new MockIssue(4L);
  178. when(permissionManager.hasPermission(Permissions.BROWSE, issue1, theUser)).thenReturn(false);
  179. when(permissionManager.hasPermission(Permissions.BROWSE, issue2, theUser)).thenReturn(false);
  180. when(permissionManager.hasPermission(Permissions.BROWSE, issue3, theUser)).thenReturn(false);
  181. when(permissionManager.hasPermission(Permissions.BROWSE, issue4, theUser)).thenReturn(false);
  182. final IssueLiteralSanitiser sanitiser = new IssueLiteralSanitiser(permissionManager, jqlIssueSupport, theUser) {
  183. @Override
  184. List<Issue> getIssues(final QueryLiteral literal) {
  185. if (literal == lit1) {
  186. return CollectionBuilder.newBuilder(issue1, issue2).asList();
  187. } else if (literal == lit2) {
  188. return CollectionBuilder.newBuilder(issue3, issue4).asList();
  189. }
  190. throw new IllegalStateException();
  191. }
  192. };
  193. final QueryLiteral expectedLit1 = createLiteral(1L);
  194. final QueryLiteral expectedLit2 = createLiteral(2L);
  195. final QueryLiteral expectedLit3 = createLiteral(3L);
  196. final QueryLiteral expectedLit4 = createLiteral(4L);
  197. final LiteralSanitiser.Result result = sanitiser.sanitiseLiterals(CollectionBuilder.newBuilder(lit1, lit2).asList());
  198. assertTrue(result.isModified());
  199. assertEquals(4, result.getLiterals().size());
  200. assertTrue(result.getLiterals().contains(expectedLit1));
  201. assertTrue(result.getLiterals().contains(expectedLit2));
  202. assertTrue(result.getLiterals().contains(expectedLit3));
  203. assertTrue(result.getLiterals().contains(expectedLit4));
  204. }
  205. }