PageRenderTime 41ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://bitbucket.org/atlassianlabs/confluence-copy-space-plugin
Java | 234 lines | 194 code | 38 blank | 2 comment | 0 complexity | 89a3c8f272dbb9cfd2854162b7661a9c MD5 | raw file
  1. package com.atlassian.confluence.plugin.copyspace;
  2. import com.atlassian.bandana.BandanaManager;
  3. import com.atlassian.confluence.core.ContentPermissionManager;
  4. import com.atlassian.confluence.core.DefaultSaveContext;
  5. import com.atlassian.confluence.labels.Label;
  6. import com.atlassian.confluence.labels.Labelling;
  7. import com.atlassian.confluence.pages.CommentManager;
  8. import com.atlassian.confluence.pages.Page;
  9. import com.atlassian.confluence.pages.PageManager;
  10. import com.atlassian.confluence.pages.templates.PageTemplate;
  11. import com.atlassian.confluence.pages.templates.PageTemplateManager;
  12. import com.atlassian.confluence.search.ConfluenceIndexer;
  13. import com.atlassian.confluence.security.SpacePermission;
  14. import com.atlassian.confluence.spaces.Space;
  15. import com.atlassian.confluence.spaces.SpaceDescription;
  16. import com.atlassian.confluence.spaces.SpaceManager;
  17. import com.atlassian.event.api.EventPublisher;
  18. import com.atlassian.user.User;
  19. import org.junit.Before;
  20. import org.junit.Rule;
  21. import org.junit.Test;
  22. import org.mockito.Matchers;
  23. import org.mockito.Mock;
  24. import org.mockito.junit.MockitoJUnit;
  25. import org.mockito.junit.MockitoRule;
  26. import java.io.IOException;
  27. import java.util.ArrayList;
  28. import java.util.List;
  29. import static org.hamcrest.MatcherAssert.assertThat;
  30. import static org.hamcrest.Matchers.hasSize;
  31. import static org.hamcrest.Matchers.is;
  32. import static org.junit.Assert.assertTrue;
  33. import static org.mockito.Matchers.any;
  34. import static org.mockito.Matchers.anyObject;
  35. import static org.mockito.Matchers.eq;
  36. import static org.mockito.Mockito.atLeastOnce;
  37. import static org.mockito.Mockito.verify;
  38. import static org.mockito.Mockito.when;
  39. public class TestCaseDefaultCopySpaceManager {
  40. @Rule
  41. public MockitoRule mockitoRule = MockitoJUnit.rule();
  42. private DefaultCopySpaceManager defaultCopySpaceManager;
  43. // Mock objects
  44. @Mock
  45. private EventPublisher eventPublisher;
  46. @Mock
  47. private ConfluenceIndexer indexer;
  48. @Mock
  49. private ContentPermissionManager contentPermissionManager;
  50. @Mock
  51. private SpaceManager spaceManager;
  52. @Mock
  53. private PageManager pageManager;
  54. @Mock
  55. private DefaultLabelCopier labelCopier;
  56. @Mock
  57. private PageTemplateManager pageTemplateManager;
  58. @Mock
  59. private CommentManager commentManager;
  60. @Mock
  61. private BandanaManager bandanaManager;
  62. @Mock
  63. private LookAndFeelCopier lookAndFeelCopier;
  64. @Mock
  65. private LogoCopier logoCopier;
  66. @Mock
  67. private AttachmentCopier attachmentCopier;
  68. @Mock
  69. private DecoratorCopier decoratorCopier;
  70. @Mock
  71. private SidebarLinkCopier sidebarLinkCopier;
  72. @Mock
  73. private CopySpaceOptions options;
  74. @Mock
  75. private User user;
  76. // Global test variables
  77. private Space originalSpace;
  78. private Space newSpace;
  79. private DefaultSaveContext saveContext;
  80. private String newSpaceKey = "new";
  81. private String newSpaceName = "New Space";
  82. @Before
  83. public void setUp() {
  84. SpaceDescription spaceDescription = new SpaceDescription();
  85. String description = "This is description";
  86. spaceDescription.setBodyAsString(description);
  87. originalSpace = new Space();
  88. String originalSpaceKey = "tst";
  89. originalSpace.setKey(originalSpaceKey);
  90. String originalSpaceName = "Test";
  91. originalSpace.setName(originalSpaceName);
  92. originalSpace.setDescription(spaceDescription);
  93. newSpace = new Space();
  94. newSpace.setKey(newSpaceKey);
  95. newSpace.setName(newSpaceName);
  96. newSpace.setDescription(spaceDescription);
  97. saveContext = DefaultSaveContext.builder()
  98. .suppressNotifications(true)
  99. .suppressAutowatch(true)
  100. .updateLastModifier(true)
  101. .build();
  102. when(spaceManager.createSpace(newSpaceKey, newSpaceName, originalSpace.getDescription().getBodyAsString(), user)).thenReturn(newSpace);
  103. when(options.isCopyPersonalLabels()).thenReturn(true);
  104. when(options.isKeepMetaData()).thenReturn(true);
  105. defaultCopySpaceManager = new DefaultCopySpaceManager(
  106. eventPublisher,
  107. indexer,
  108. contentPermissionManager,
  109. spaceManager,
  110. pageManager,
  111. labelCopier,
  112. pageTemplateManager,
  113. commentManager,
  114. bandanaManager,
  115. lookAndFeelCopier,
  116. logoCopier,
  117. attachmentCopier,
  118. decoratorCopier,
  119. sidebarLinkCopier
  120. );
  121. }
  122. @Test
  123. public void testCopySpaceWithoutAnySpacePermissionsAndPageTemplates() throws IOException, CopySpaceException {
  124. Space resultSpace = defaultCopySpaceManager.copySpace(originalSpace, newSpaceKey, newSpaceName, user, options);
  125. assertThat(resultSpace.getKey(), is(newSpaceKey));
  126. assertThat(resultSpace.getName(), is(newSpaceName));
  127. verify(spaceManager, atLeastOnce()).saveSpace(newSpace);
  128. verify(lookAndFeelCopier, atLeastOnce()).copyLookAndFeel(originalSpace, newSpace);
  129. verify(decoratorCopier, atLeastOnce()).copyDecorators(originalSpace, newSpace, options);
  130. verify(logoCopier, atLeastOnce()).copyLogo(originalSpace, newSpace, options, saveContext);
  131. verify(labelCopier, atLeastOnce()).copySpaceLabels(originalSpace, newSpace, true);
  132. }
  133. @Test
  134. public void testCopySpaceWithoutAnySpacePermissionButWithPageTemplates() throws IOException, CopySpaceException {
  135. String templateName = "Template 123";
  136. String templateDescription = "This is template 123";
  137. String templateContent = "123";
  138. String templateLabels = "templateLabel";
  139. PageTemplate pageTemplate = new PageTemplate();
  140. pageTemplate.setName(templateName);
  141. pageTemplate.setDescription(templateDescription);
  142. pageTemplate.setContent(templateContent);
  143. Label label = new Label(templateLabels);
  144. label.setId(1);
  145. pageTemplate.addLabelling(new Labelling(label, pageTemplate, (String) null));
  146. originalSpace.addPageTemplate(pageTemplate);
  147. Space resultSpace = defaultCopySpaceManager.copySpace(originalSpace, newSpaceKey, newSpaceName, user, options);
  148. assertThat(resultSpace.getKey(), is(newSpaceKey));
  149. assertThat(resultSpace.getName(), is(newSpaceName));
  150. assertTrue(resultSpace.getPageTemplates().contains(pageTemplate));
  151. verify(pageTemplateManager).savePageTemplate(pageTemplate, null);
  152. verify(labelCopier).copyLabels(eq(pageTemplate), any(PageTemplate.class), eq(true));
  153. }
  154. @Test
  155. public void testCopySpaceWithSpacePermissionsAndWithoutPageTemplates() throws IOException, CopySpaceException {
  156. SpacePermission originalPermission = new SpacePermission();
  157. originalPermission.setSpace(originalSpace);
  158. originalSpace.addPermission(originalPermission);
  159. Space resultSpace = defaultCopySpaceManager.copySpace(originalSpace, newSpaceKey, newSpaceName, user, options);
  160. assertThat(resultSpace.getKey(), is(newSpaceKey));
  161. assertThat(resultSpace.getName(), is(newSpaceName));
  162. List<SpacePermission> newSpacePermissions = resultSpace.getPermissions();
  163. assertThat(newSpacePermissions, hasSize(1));
  164. assertThat(newSpacePermissions.get(0).getSpace(), is(newSpace));
  165. }
  166. @Test
  167. public void testCopySpacePagesWithoutParentPage() throws IOException, CopySpaceException {
  168. Page pageOne = new Page();
  169. pageOne.setTitle("Page One");
  170. pageOne.setBodyAsString("This is page one content");
  171. pageOne.setPosition(1);
  172. pageOne.setSpace(originalSpace);
  173. List<Page> oldPages = new ArrayList<>();
  174. oldPages.add(pageOne);
  175. when(pageManager.getPages(originalSpace, true)).thenReturn(oldPages);
  176. defaultCopySpaceManager = new DefaultCopySpaceManager(eventPublisher,
  177. indexer,
  178. contentPermissionManager,
  179. spaceManager,
  180. pageManager,
  181. labelCopier,
  182. pageTemplateManager,
  183. commentManager,
  184. bandanaManager,
  185. lookAndFeelCopier,
  186. logoCopier,
  187. attachmentCopier,
  188. decoratorCopier,
  189. sidebarLinkCopier
  190. );
  191. Space resultSpace = defaultCopySpaceManager.copySpace(originalSpace, newSpaceKey, newSpaceName, user, options);
  192. assertThat(resultSpace.getKey(), is(newSpaceKey));
  193. assertThat(resultSpace.getName(), is(newSpaceName));
  194. verify(pageManager, atLeastOnce()).saveContentEntity(any(), any());
  195. }
  196. }