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

/plugin/src/test/java/com/atlassian/confluence/plugin/copyspace/TestSuppressAutowatch.java

https://bitbucket.org/atlassianlabs/confluence-copy-space-plugin
Java | 252 lines | 225 code | 25 blank | 2 comment | 0 complexity | 49f6c18936640b56c91d8323bc500f1d MD5 | raw file
  1. package com.atlassian.confluence.plugin.copyspace;
  2. import com.atlassian.bandana.BandanaManager;
  3. import com.atlassian.beehive.ClusterLockService;
  4. import com.atlassian.confluence.audit.AuditingContext;
  5. import com.atlassian.confluence.content.render.xhtml.links.LinksUpdater;
  6. import com.atlassian.confluence.content.render.xhtml.migration.ExceptionTolerantMigrator;
  7. import com.atlassian.confluence.core.ContentEntityObject;
  8. import com.atlassian.confluence.core.ContentPermissionManager;
  9. import com.atlassian.confluence.core.ContentPropertyManager;
  10. import com.atlassian.confluence.core.SynchronizationManager;
  11. import com.atlassian.confluence.core.persistence.hibernate.HibernateSessionManager;
  12. import com.atlassian.confluence.impl.security.query.SpacePermissionQueryManager;
  13. import com.atlassian.confluence.internal.content.collab.ContentReconciliationManager;
  14. import com.atlassian.confluence.internal.pages.persistence.AbstractPageDaoInternal;
  15. import com.atlassian.confluence.internal.pages.persistence.PageDaoInternal;
  16. import com.atlassian.confluence.internal.relations.RelationManager;
  17. import com.atlassian.confluence.labels.LabelManager;
  18. import com.atlassian.confluence.links.LinkManager;
  19. import com.atlassian.confluence.mail.notification.NotificationManager;
  20. import com.atlassian.confluence.pages.AttachmentManager;
  21. import com.atlassian.confluence.pages.CommentManager;
  22. import com.atlassian.confluence.pages.DefaultPageManager;
  23. import com.atlassian.confluence.pages.Page;
  24. import com.atlassian.confluence.pages.persistence.dao.BlogPostDao;
  25. import com.atlassian.confluence.pages.templates.PageTemplateManager;
  26. import com.atlassian.confluence.search.ChangeIndexer;
  27. import com.atlassian.confluence.search.ConfluenceIndexer;
  28. import com.atlassian.confluence.security.PermissionManager;
  29. import com.atlassian.confluence.security.SpacePermissionManager;
  30. import com.atlassian.confluence.security.login.DefaultLoginManager;
  31. import com.atlassian.confluence.security.login.LoginManager;
  32. import com.atlassian.confluence.security.persistence.dao.UserLoginInfoDao;
  33. import com.atlassian.confluence.setup.settings.CollaborativeEditingHelper;
  34. import com.atlassian.confluence.setup.settings.DarkFeaturesManager;
  35. import com.atlassian.confluence.setup.settings.SettingsManager;
  36. import com.atlassian.confluence.spaces.Space;
  37. import com.atlassian.confluence.spaces.SpaceDescription;
  38. import com.atlassian.confluence.spaces.SpaceManager;
  39. import com.atlassian.confluence.spaces.persistence.dao.SpaceDao;
  40. import com.atlassian.confluence.user.ConfluenceUser;
  41. import com.atlassian.confluence.user.ConfluenceUserImpl;
  42. import com.atlassian.confluence.user.UserAccessor;
  43. import com.atlassian.confluence.xhtml.api.XhtmlContent;
  44. import com.atlassian.event.api.EventPublisher;
  45. import com.atlassian.spring.container.ContainerContext;
  46. import com.atlassian.spring.container.ContainerManager;
  47. import com.atlassian.user.impl.DefaultUser;
  48. import com.atlassian.vcache.VCacheFactory;
  49. import com.google.common.base.Supplier;
  50. import com.google.common.collect.Lists;
  51. import org.junit.Before;
  52. import org.junit.Test;
  53. import org.mockito.InjectMocks;
  54. import org.mockito.Mock;
  55. import org.mockito.MockitoAnnotations;
  56. import org.springframework.transaction.PlatformTransactionManager;
  57. import java.io.IOException;
  58. import java.lang.reflect.Field;
  59. import java.util.List;
  60. import static org.hamcrest.MatcherAssert.assertThat;
  61. import static org.hamcrest.Matchers.is;
  62. import static org.mockito.ArgumentMatchers.any;
  63. import static org.mockito.Mockito.atLeastOnce;
  64. import static org.mockito.Mockito.doAnswer;
  65. import static org.mockito.Mockito.mock;
  66. import static org.mockito.Mockito.never;
  67. import static org.mockito.Mockito.verify;
  68. import static org.mockito.Mockito.when;
  69. public class TestSuppressAutowatch {
  70. // Mock objects
  71. @Mock
  72. private SettingsManager settingsManager;
  73. @Mock
  74. private UserAccessor userAccessor;
  75. @Mock
  76. private VCacheFactory cacheFactory;
  77. @Mock
  78. private UserLoginInfoDao loginInfoDao;
  79. @InjectMocks
  80. private DefaultLoginManager defaultLoginManager;
  81. @Mock
  82. private PageDaoInternal pageDao;
  83. @Mock
  84. private LinkManager linkManager;
  85. @Mock
  86. private ConfluenceIndexer indexer;
  87. @Mock
  88. private LabelManager labelManager;
  89. @Mock
  90. private AttachmentManager attachmentManager;
  91. @Mock
  92. private HibernateSessionManager hibernateSessionManager;
  93. @Mock
  94. private Supplier<XhtmlContent> xhtmlContentSupplier;
  95. @Mock
  96. private EventPublisher eventPublisher;
  97. @Mock
  98. private NotificationManager notificationManager;
  99. @Mock
  100. private BlogPostDao blogPostDao;
  101. @Mock
  102. private AbstractPageDaoInternal abstractPageDao;
  103. @Mock
  104. private SpaceDao spaceDao;
  105. @Mock
  106. private ContentPropertyManager contentPropertyManager;
  107. @Mock
  108. private Supplier<PermissionManager> permissionManagerSupplier;
  109. @Mock
  110. private ChangeIndexer changeIndexer;
  111. @Mock
  112. private LoginManager loginManager;
  113. @Mock
  114. private Supplier<ExceptionTolerantMigrator> revertedContentMigratorSupplier;
  115. @Mock
  116. private CollaborativeEditingHelper collaborativeEditingHelper;
  117. @Mock
  118. private RelationManager relationManager;
  119. @Mock
  120. private SpacePermissionQueryManager spacePermissionQueryManager;
  121. @Mock
  122. private ContentPermissionManager contentPermissionManager;
  123. @Mock
  124. private ClusterLockService clusterLockService;
  125. @Mock
  126. private LinksUpdater linksUpdater;
  127. @Mock
  128. private Supplier<UserAccessor> userAccessorSupplier;
  129. @Mock
  130. private SpacePermissionManager spacePermissionManager;
  131. @Mock
  132. private SynchronizationManager synchronizationManager;
  133. @Mock
  134. private PlatformTransactionManager transactionManager;
  135. @Mock
  136. private Supplier<DarkFeaturesManager> darkFeaturesManagerSupplier;
  137. @Mock
  138. private AuditingContext auditingContext;
  139. @InjectMocks
  140. private DefaultPageManager defaultPageManager;
  141. @Mock
  142. private SpaceManager spaceManager;
  143. @Mock
  144. private DefaultLabelCopier labelCopier;
  145. @Mock
  146. private PageTemplateManager pageTemplateManager;
  147. @Mock
  148. private CommentManager commentManager;
  149. @Mock
  150. private BandanaManager bandanaManager;
  151. @Mock
  152. private LookAndFeelCopier lookAndFeelCopier;
  153. @Mock
  154. private LogoCopier logoCopier;
  155. @Mock
  156. private AttachmentCopier attachmentCopier;
  157. @Mock
  158. private DecoratorCopier decoratorCopier;
  159. @Mock
  160. private SidebarLinkCopier sidebarLinkCopier;
  161. @Mock
  162. private ConfluenceUser user;
  163. @Mock
  164. private CopySpaceOptions options;
  165. private DefaultCopySpaceManager defaultCopySpaceManager;
  166. // Global test variables
  167. private Space originalSpace;
  168. private Space newSpace;
  169. private String newSpaceKey = "new";
  170. private String newSpaceName = "New Space";
  171. @Before
  172. public void setUp() throws NoSuchFieldException, IllegalAccessException {
  173. ContainerContext containerContext = mock(ContainerContext.class);
  174. ContainerManager.getInstance().setContainerContext(containerContext);
  175. ContentReconciliationManager contentReconciliationManager = mock(ContentReconciliationManager.class);
  176. when(containerContext.getComponent("contentReconciliationManager")).thenReturn(contentReconciliationManager);
  177. MockitoAnnotations.initMocks(this);
  178. Field userAccessorField = defaultPageManager.getClass().getSuperclass().getDeclaredField("userAccessor");
  179. userAccessorField.setAccessible(true);
  180. userAccessorField.set(defaultPageManager, userAccessorSupplier);
  181. userAccessorField.setAccessible(false);
  182. SpaceDescription spaceDescription = new SpaceDescription();
  183. String description = "This is description";
  184. spaceDescription.setBodyAsString(description);
  185. originalSpace = new Space();
  186. String originalSpaceKey = "tst";
  187. originalSpace.setKey(originalSpaceKey);
  188. String originalSpaceName = "Test";
  189. originalSpace.setName(originalSpaceName);
  190. originalSpace.setDescription(spaceDescription);
  191. newSpace = new Space();
  192. newSpace.setKey(newSpaceKey);
  193. newSpace.setName(newSpaceName);
  194. newSpace.setDescription(spaceDescription);
  195. user = new ConfluenceUserImpl(new DefaultUser("john.doe"));
  196. defaultCopySpaceManager = new DefaultCopySpaceManager(eventPublisher, indexer, contentPermissionManager,
  197. spaceManager, defaultPageManager, labelCopier, pageTemplateManager, commentManager, bandanaManager,
  198. lookAndFeelCopier, logoCopier, attachmentCopier, decoratorCopier, sidebarLinkCopier);
  199. when(spaceManager.createSpace(newSpaceKey, newSpaceName, originalSpace.getDescription().getBodyAsString(), user)).thenReturn(newSpace);
  200. when(options.isKeepMetaData()).thenReturn(false);
  201. when(options.isCopyComments()).thenReturn(true);
  202. when(options.isCopyAttachments()).thenReturn(true);
  203. when(options.isCopyPersonalLabels()).thenReturn(false);
  204. when(userAccessorSupplier.get()).thenReturn(userAccessor);
  205. }
  206. @Test
  207. public void testCopySpaceSuppressedAutowatch() throws CopySpaceException, IOException {
  208. Page page = new Page();
  209. page.setTitle("Page One");
  210. page.setBodyAsString("This is page one content");
  211. page.setPosition(1);
  212. page.setSpace(originalSpace);
  213. page.setCreator(user);
  214. List<Page> pages = Lists.newArrayList(page);
  215. when(defaultPageManager.getPages(originalSpace, true)).thenReturn(pages);
  216. doAnswer(invocation -> {
  217. Object[] args = invocation.getArguments();
  218. ((ContentEntityObject)args[0]).setCreator(user);
  219. return null;
  220. }).when(pageDao).save(any(Page.class));
  221. Space resultSpace = defaultCopySpaceManager.copySpace(originalSpace, newSpaceKey, newSpaceName, user, options);
  222. assertThat(resultSpace.getKey(), is(newSpaceKey));
  223. assertThat(resultSpace.getName(), is(newSpaceName));
  224. verify(pageDao, atLeastOnce()).save(any());
  225. verify(notificationManager, never()).addContentNotification(any(), any());
  226. }
  227. }