PageRenderTime 25ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/streams-jira-plugin/src/test/java/com/atlassian/streams/jira/JiraStreamsCommentHandlerTest.java

https://bitbucket.org/atlassian/atlassian-streams
Java | 126 lines | 108 code | 18 blank | 0 comment | 0 complexity | 0f33b8c9c62bcdb5c142a6b79b15cbe6 MD5 | raw file
  1. package com.atlassian.streams.jira;
  2. import com.atlassian.jira.bc.issue.comment.CommentService;
  3. import com.atlassian.jira.issue.IssueManager;
  4. import com.atlassian.jira.issue.MutableIssue;
  5. import com.atlassian.jira.issue.comments.Comment;
  6. import com.atlassian.jira.security.JiraAuthenticationContext;
  7. import com.atlassian.jira.security.PermissionManager;
  8. import com.atlassian.jira.security.Permissions;
  9. import com.atlassian.jira.util.SimpleErrorCollection;
  10. import com.atlassian.sal.api.ApplicationProperties;
  11. import com.atlassian.streams.api.common.Either;
  12. import com.atlassian.streams.spi.StreamsCommentHandler;
  13. import com.google.common.collect.ImmutableList;
  14. import org.junit.Before;
  15. import org.junit.Test;
  16. import org.junit.runner.RunWith;
  17. import org.mockito.InjectMocks;
  18. import org.mockito.Mock;
  19. import org.mockito.Spy;
  20. import org.mockito.junit.MockitoJUnitRunner;
  21. import java.net.URI;
  22. import static com.atlassian.streams.spi.StreamsCommentHandler.PostReplyError.Type.DELETED_OR_PERMISSION_DENIED;
  23. import static com.atlassian.streams.spi.StreamsCommentHandler.PostReplyError.Type.UNAUTHORIZED;
  24. import static com.atlassian.streams.spi.StreamsCommentHandler.PostReplyError.Type.UNKNOWN_ERROR;
  25. import static org.hamcrest.MatcherAssert.assertThat;
  26. import static org.hamcrest.Matchers.is;
  27. import static org.junit.Assert.assertEquals;
  28. import static org.junit.Assert.assertNotNull;
  29. import static org.junit.Assert.assertTrue;
  30. import static org.mockito.ArgumentMatchers.anyBoolean;
  31. import static org.mockito.ArgumentMatchers.eq;
  32. import static org.mockito.ArgumentMatchers.isNull;
  33. import static org.mockito.Mockito.when;
  34. @RunWith(MockitoJUnitRunner.class)
  35. public class JiraStreamsCommentHandlerTest
  36. {
  37. private static final URI BASE_URI = URI.create("http://localhost/streams");
  38. private static final String ISSUE_KEY = "TEST-1";
  39. private static final String COMMENT_TEXT = "comment";
  40. private SimpleErrorCollection errorCollection;
  41. @Mock
  42. private MutableIssue issue;
  43. @Mock
  44. private Comment commentObject;
  45. @Mock
  46. private JiraAuthenticationContext authenticationContext;
  47. @Mock
  48. private IssueManager issueManager;
  49. @Mock
  50. private PermissionManager permissionManager;
  51. @Mock
  52. private CommentService commentService;
  53. @Mock
  54. private ApplicationProperties applicationProperties;
  55. @Spy
  56. @InjectMocks
  57. private JiraStreamsCommentHandler commentHandler;
  58. @Before
  59. public void prepareJiraStreamsCommentHandler()
  60. {
  61. when(issueManager.getIssueObject(ISSUE_KEY)).thenReturn(issue);
  62. when(permissionManager.hasPermission(eq(Permissions.COMMENT_ISSUE), eq(issue), isNull()))
  63. .thenReturn(true);
  64. errorCollection = new SimpleErrorCollection();
  65. when(commentHandler.createSimpleErrorCollection()).thenReturn(errorCollection);
  66. when(commentService.create(isNull(), eq(issue), eq(COMMENT_TEXT), anyBoolean(),
  67. eq(errorCollection))).thenReturn(commentObject);
  68. }
  69. @Test
  70. public void assertNullIssueReturnsPostReplyError()
  71. {
  72. when(issueManager.getIssueObject(ISSUE_KEY)).thenReturn(null);
  73. Either<StreamsCommentHandler.PostReplyError, URI> postReplyResult = commentHandler
  74. .postReply(BASE_URI, ImmutableList.of(ISSUE_KEY), COMMENT_TEXT);
  75. assertTrue(postReplyResult.isLeft());
  76. assertThat(postReplyResult.left().get().getType(), is(DELETED_OR_PERMISSION_DENIED));
  77. }
  78. @Test
  79. public void assertUnauthorisedUserReturnsPostReplyError()
  80. {
  81. when(permissionManager.hasPermission(eq(Permissions.COMMENT_ISSUE), eq(issue), isNull()))
  82. .thenReturn(false);
  83. Either<StreamsCommentHandler.PostReplyError, URI> postReplyResult = commentHandler
  84. .postReply(BASE_URI, ImmutableList.of(ISSUE_KEY), COMMENT_TEXT);
  85. assertTrue(postReplyResult.isLeft());
  86. assertThat(postReplyResult.left().get().getType(), is(UNAUTHORIZED));
  87. }
  88. @Test
  89. public void assertCommentServiceErrorReturnsPostReplyError()
  90. {
  91. errorCollection.addError("comment", "Error message.");
  92. Either<StreamsCommentHandler.PostReplyError, URI> postReplyResult = commentHandler
  93. .postReply(BASE_URI, ImmutableList.of(ISSUE_KEY), COMMENT_TEXT);
  94. assertTrue(postReplyResult.isLeft());
  95. assertThat(postReplyResult.left().get().getType(), is(UNKNOWN_ERROR));
  96. assertNotNull(postReplyResult.left().get().getCause());
  97. assertTrue(postReplyResult.left().get().getCause().isDefined());
  98. assertEquals("Error message.", postReplyResult.left().get().getCause().get().getMessage());
  99. }
  100. @Test
  101. public void assertSuccessfulCommentCreationReturnsURI()
  102. {
  103. Either<StreamsCommentHandler.PostReplyError, URI> postReplyResult = commentHandler
  104. .postReply(BASE_URI, ImmutableList.of(ISSUE_KEY), COMMENT_TEXT);
  105. assertTrue(postReplyResult.isRight());
  106. assertEquals(postReplyResult.right().get().toASCIIString(), "http://localhost/streams/browse/TEST-1#action_0");
  107. }
  108. }