PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/plugin/src/test/java/com/atlassian/confluence/plugins/xmlrpc/bloggingrpc/TestMetaWeblogNewPost.java

https://bitbucket.org/atlassian/confluence-blogging-rpc-plugin
Java | 192 lines | 160 code | 32 blank | 0 comment | 1 complexity | 1717f6f94b0eea6bd4d2c9037794bca7 MD5 | raw file
  1. package com.atlassian.confluence.plugins.xmlrpc.bloggingrpc;
  2. import com.atlassian.confluence.labels.LabelManager;
  3. import com.atlassian.confluence.labels.LabelPermissionEnforcer;
  4. import com.atlassian.confluence.pages.BlogPost;
  5. import com.atlassian.confluence.pages.PageManager;
  6. import com.atlassian.confluence.rpc.RemoteException;
  7. import com.atlassian.confluence.security.PermissionManager;
  8. import com.atlassian.confluence.security.SpacePermission;
  9. import com.atlassian.confluence.security.SpacePermissionManager;
  10. import com.atlassian.confluence.spaces.Space;
  11. import com.atlassian.confluence.spaces.SpaceManager;
  12. import com.atlassian.confluence.user.ConfluenceUser;
  13. import com.atlassian.sal.api.ApplicationProperties;
  14. import com.atlassian.sal.api.transaction.TransactionCallback;
  15. import com.atlassian.sal.api.transaction.TransactionTemplate;
  16. import org.apache.commons.lang.StringUtils;
  17. import org.junit.After;
  18. import org.junit.Before;
  19. import org.junit.Test;
  20. import org.junit.runner.RunWith;
  21. import org.mockito.Matchers;
  22. import org.mockito.Mock;
  23. import org.mockito.junit.MockitoJUnitRunner;
  24. import org.mockito.stubbing.Answer;
  25. import java.util.Calendar;
  26. import java.util.Hashtable;
  27. import static org.junit.Assert.assertEquals;
  28. import static org.junit.Assert.fail;
  29. import static org.mockito.ArgumentMatchers.isNull;
  30. import static org.mockito.Matchers.anyString;
  31. import static org.mockito.Matchers.argThat;
  32. import static org.mockito.Matchers.eq;
  33. import static org.mockito.Mockito.verify;
  34. import static org.mockito.Mockito.when;
  35. @RunWith(MockitoJUnitRunner.class)
  36. public class TestMetaWeblogNewPost {
  37. @Mock
  38. private BloggingUtils bloggingUtils;
  39. @Mock
  40. private SpaceManager spaceManager;
  41. @Mock
  42. private SpacePermissionManager spacePermissionManager;
  43. @Mock
  44. private PageManager pageManager;
  45. @Mock
  46. private PermissionManager permissionManager;
  47. @Mock
  48. private LabelManager labelManager;
  49. @Mock
  50. private ApplicationProperties applicationProperties;
  51. @Mock
  52. private LabelPermissionEnforcer labelPermissionEnforcer;
  53. @Mock
  54. private ConfluenceUser user;
  55. private MetaWeblogImpl metaWeblog;
  56. @Before
  57. public void setUp() {
  58. metaWeblog = new MetaWeblogImpl(bloggingUtils, new TransactionTemplate() {
  59. @Override
  60. public <T> T execute(TransactionCallback<T> tTransactionCallback) {
  61. return tTransactionCallback.doInTransaction();
  62. }
  63. }, spaceManager, spacePermissionManager, pageManager, permissionManager, labelManager, labelPermissionEnforcer, applicationProperties);
  64. when(bloggingUtils.getText(anyString(), Matchers.<String[]>anyObject())).thenAnswer(
  65. (Answer<String>) invocationOnMock -> invocationOnMock.getArguments()[0].toString()
  66. );
  67. when(bloggingUtils.getText(anyString())).thenAnswer(
  68. (Answer<String>) invocationOnMock -> invocationOnMock.getArguments()[0].toString()
  69. );
  70. }
  71. @After
  72. public void tearDown() {
  73. bloggingUtils = null;
  74. spaceManager = null;
  75. spacePermissionManager = null;
  76. pageManager = null;
  77. permissionManager = null;
  78. labelManager = null;
  79. applicationProperties = null;
  80. user = null;
  81. }
  82. @Test
  83. public void testPostInNonExistentSpace() {
  84. try {
  85. metaWeblog.newPost("TST", "", "", null, true);
  86. fail("RemoteException should've been raised");
  87. } catch (RemoteException re) {
  88. assertEquals("error.validation.space.unknown", re.getMessage());
  89. }
  90. }
  91. @Test
  92. public void testPostWithoutSufficientPrivileges() {
  93. String spaceKey = "TST";
  94. Space space = new Space(spaceKey);
  95. when(spaceManager.getSpace(spaceKey)).thenReturn(space);
  96. try {
  97. metaWeblog.newPost(spaceKey, "", "", null, true);
  98. fail("RemoteException should've been raised");
  99. } catch (RemoteException re) {
  100. assertEquals("error.permission.edit.space.blog", re.getMessage());
  101. }
  102. }
  103. @Test
  104. public void testPostWithoutTitle() throws RemoteException {
  105. String userName = "john.doe";
  106. String password = "";
  107. when(bloggingUtils.authenticateUser(userName, password)).thenReturn(user);
  108. String spaceKey = "TST";
  109. Space space = new Space(spaceKey);
  110. when(spaceManager.getSpace(spaceKey)).thenReturn(space);
  111. when(spacePermissionManager.hasPermission(SpacePermission.EDITBLOG_PERMISSION, space, user)).thenReturn(true);
  112. try {
  113. metaWeblog.newPost(spaceKey, userName, password, new Hashtable<>(), true);
  114. fail("RemoteException should've been raised");
  115. } catch (RemoteException re) {
  116. assertEquals("error.validation.blog.title.blank", re.getMessage());
  117. }
  118. }
  119. @Test
  120. public void testCreateDuplicateBlogPost() throws RemoteException {
  121. String userName = "john.doe";
  122. String password = "";
  123. when(bloggingUtils.authenticateUser(userName, password)).thenReturn(user);
  124. String spaceKey = "TST";
  125. Space space = new Space(spaceKey);
  126. when(spaceManager.getSpace(spaceKey)).thenReturn(space);
  127. when(spacePermissionManager.hasPermission(SpacePermission.EDITBLOG_PERMISSION, space, user)).thenReturn(true);
  128. when(pageManager.getBlogPost(eq(space.getKey()), eq("Title"), Matchers.<Calendar>anyObject())).thenReturn(new BlogPost());
  129. try {
  130. metaWeblog.newPost(spaceKey, userName, password, new Hashtable<String, Object>() {
  131. {
  132. put(MetaWeblogImpl.TITLE, "Title");
  133. }
  134. }, true);
  135. fail("RemoteException should've been raised");
  136. } catch (RemoteException re) {
  137. assertEquals("error.validation.blog.duplicate", re.getMessage());
  138. }
  139. }
  140. @Test
  141. public void testPostWithSufficientPrivileges() throws RemoteException {
  142. String userName = "john.doe";
  143. String password = "";
  144. when(bloggingUtils.authenticateUser(userName, password)).thenReturn(user);
  145. String spaceKey = "TST";
  146. Space space = new Space(spaceKey);
  147. when(spaceManager.getSpace(spaceKey)).thenReturn(space);
  148. when(spacePermissionManager.hasPermission(SpacePermission.EDITBLOG_PERMISSION, space, user)).thenReturn(true);
  149. metaWeblog.newPost(spaceKey, userName, password, new Hashtable<String, Object>() {
  150. {
  151. put(MetaWeblogImpl.TITLE, "Title");
  152. put(MetaWeblogImpl.DESCRIPTION, "Content");
  153. }
  154. }, true);
  155. verify(pageManager).saveContentEntity(argThat(
  156. post -> StringUtils.equals("Title", post.getTitle())
  157. && StringUtils.equals("Content", post.getBodyAsString())
  158. ), isNull());
  159. }
  160. }