PageRenderTime 27ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/plugin/src/test/java/com/atlassian/confluence/plugin/copyspace/actions/TestCaseDoCopySpaceAction.java

https://bitbucket.org/atlassianlabs/confluence-copy-space-plugin
Java | 159 lines | 134 code | 25 blank | 0 comment | 0 complexity | d28f737a891c81db1da57551624c49e3 MD5 | raw file
  1. package com.atlassian.confluence.plugin.copyspace.actions;
  2. import com.atlassian.confluence.plugin.copyspace.CopySpaceManager;
  3. import com.atlassian.confluence.security.Permission;
  4. import com.atlassian.confluence.security.PermissionManager;
  5. import com.atlassian.confluence.spaces.Space;
  6. import com.atlassian.confluence.spaces.SpaceManager;
  7. import com.atlassian.confluence.user.AuthenticatedUserThreadLocal;
  8. import com.atlassian.confluence.user.ConfluenceUser;
  9. import com.atlassian.confluence.util.i18n.I18NBean;
  10. import com.opensymphony.xwork.Action;
  11. import org.junit.Before;
  12. import org.junit.Rule;
  13. import org.junit.Test;
  14. import org.mockito.Mock;
  15. import org.mockito.junit.MockitoJUnit;
  16. import org.mockito.junit.MockitoRule;
  17. import java.util.HashMap;
  18. import java.util.Map;
  19. import static org.junit.Assert.assertEquals;
  20. import static org.junit.Assert.assertFalse;
  21. import static org.mockito.ArgumentMatchers.anyList;
  22. import static org.mockito.Matchers.anyObject;
  23. import static org.mockito.Matchers.eq;
  24. import static org.mockito.Mockito.atLeastOnce;
  25. import static org.mockito.Mockito.mock;
  26. import static org.mockito.Mockito.verify;
  27. import static org.mockito.Mockito.when;
  28. public class TestCaseDoCopySpaceAction {
  29. private static final String NEW_SPACE_NAME_EMPTY_KEY = "space.name.empty";
  30. private static final String NEW_SPACE_KEY_INVALID_KEY = "space.key.invalid";
  31. private static final String NEW_SPACE_KEY_EXISTS_KEY = "space.key.exists";
  32. private static final String NEW_SPACE_KEY_EMPTY_KEY = "space.key.empty";
  33. private static final String NEW_SPACE_NAME_EMPTY_VALUE = "You must enter a space name.";
  34. private static final String NEW_SPACE_KEY_INVALID_VALUE = "Space keys may only consist of ASCII letters or numbers (A-Z, a-z, 0-9)";
  35. private static final String NEW_SPACE_KEY_EXISTS_VALUE = "A space with this space key already exists.";
  36. private static final String NEW_SPACE_KEY_EMPTY_VALUE = "You must enter a space key.";
  37. private static final String NEW_SPACE_NAME = "New Space";
  38. private static final String NEW_SPACE_KEY = "NEW";
  39. @Rule
  40. public MockitoRule mockitoRule = MockitoJUnit.rule();
  41. @Mock
  42. private CopySpaceManager copySpaceManager;
  43. @Mock
  44. private PermissionManager permissionManager;
  45. @Mock
  46. private SpaceManager spaceManager;
  47. @Mock
  48. private I18NBean i18NBean;
  49. @Mock
  50. private Space originalSpace;
  51. @Mock
  52. private ConfluenceUser user;
  53. private DoCopySpaceAction doCopySpaceAction;
  54. @Before
  55. public void setUp() {
  56. AuthenticatedUserThreadLocal.set(user);
  57. setUpCopySpaceAction();
  58. setUpI18n();
  59. }
  60. private void setUpI18n() {
  61. final Map<String, String> i18n = new HashMap<>();
  62. i18n.put(NEW_SPACE_NAME_EMPTY_KEY, NEW_SPACE_NAME_EMPTY_VALUE);
  63. i18n.put(NEW_SPACE_KEY_INVALID_KEY, NEW_SPACE_KEY_INVALID_VALUE);
  64. i18n.put(NEW_SPACE_KEY_EXISTS_KEY, NEW_SPACE_KEY_EXISTS_VALUE);
  65. i18n.put(NEW_SPACE_KEY_EMPTY_KEY, NEW_SPACE_KEY_EMPTY_VALUE);
  66. i18n.forEach((k, v) -> when(i18NBean.getText(eq(k), anyList())).thenReturn(v));
  67. }
  68. private void setUpCopySpaceAction() {
  69. doCopySpaceAction = new DoCopySpaceAction();
  70. doCopySpaceAction.setCopySpaceManager(copySpaceManager);
  71. doCopySpaceAction.setSpace(originalSpace);
  72. doCopySpaceAction.setSpaceManager(spaceManager);
  73. doCopySpaceAction.setNewKey(NEW_SPACE_KEY);
  74. doCopySpaceAction.setNewName(NEW_SPACE_NAME);
  75. doCopySpaceAction.setI18NBean(i18NBean);
  76. }
  77. @Test
  78. public void testSpaceCopiedUnderNewKey() throws Exception {
  79. Space newSpace = new Space();
  80. newSpace.setKey(NEW_SPACE_KEY);
  81. newSpace.setName(NEW_SPACE_NAME);
  82. doCopySpaceAction.setSpace(originalSpace);
  83. doCopySpaceAction.setNewKey(NEW_SPACE_KEY);
  84. doCopySpaceAction.setNewName(NEW_SPACE_NAME);
  85. assertEquals(Action.SUCCESS, doCopySpaceAction.execute());
  86. assertEquals(NEW_SPACE_KEY, doCopySpaceAction.getKey());
  87. verify(copySpaceManager, atLeastOnce()).copySpace(eq(originalSpace), eq(NEW_SPACE_KEY), eq(NEW_SPACE_NAME), eq(user), anyObject());
  88. }
  89. @Test
  90. public void testAdminPrivilegeRequiredToCopySpace() {
  91. doCopySpaceAction.setPermissionManager(permissionManager);
  92. when(permissionManager.hasCreatePermission(user, PermissionManager.TARGET_APPLICATION, Space.class)).thenReturn(true);
  93. when(permissionManager.hasPermission(user, Permission.ADMINISTER, originalSpace)).thenReturn(false);
  94. assertFalse(doCopySpaceAction.isPermitted());
  95. }
  96. @Test
  97. public void testSpaceNameIsNullValidation() throws Exception {
  98. doCopySpaceAction.setNewName(null);
  99. assertEquals(Action.ERROR, doCopySpaceAction.execute());
  100. assertEquals(NEW_SPACE_NAME_EMPTY_VALUE, doCopySpaceAction.getErrorMessage());
  101. }
  102. @Test
  103. public void testSpaceNameIsEmptyValidation() throws Exception {
  104. doCopySpaceAction.setNewName("");
  105. assertEquals(Action.ERROR, doCopySpaceAction.execute());
  106. assertEquals(NEW_SPACE_NAME_EMPTY_VALUE, doCopySpaceAction.getErrorMessage());
  107. }
  108. @Test
  109. public void testSpaceKeyIsNotGlobalValid() throws Exception {
  110. doCopySpaceAction.setNewKey("#");
  111. assertEquals(Action.ERROR, doCopySpaceAction.execute());
  112. assertEquals(NEW_SPACE_KEY_INVALID_VALUE, doCopySpaceAction.getErrorMessage());
  113. }
  114. @Test
  115. public void testSpaceKeyIsNullValidation() throws Exception {
  116. doCopySpaceAction.setNewKey(null);
  117. assertEquals(Action.ERROR, doCopySpaceAction.execute());
  118. assertEquals(NEW_SPACE_KEY_EMPTY_VALUE, doCopySpaceAction.getErrorMessage());
  119. }
  120. @Test
  121. public void testSpaceKeyIsEmptyValidation() throws Exception {
  122. doCopySpaceAction.setNewKey("");
  123. assertEquals(Action.ERROR, doCopySpaceAction.execute());
  124. assertEquals(NEW_SPACE_KEY_EMPTY_VALUE, doCopySpaceAction.getErrorMessage());
  125. }
  126. @Test
  127. public void testSpaceExistsWithGivenKeyValidation() throws Exception {
  128. final Space existingSpace = mock(Space.class);
  129. when(spaceManager.getSpace(eq(NEW_SPACE_KEY))).thenReturn(existingSpace);
  130. doCopySpaceAction.setNewKey(NEW_SPACE_KEY);
  131. assertEquals(Action.ERROR, doCopySpaceAction.execute());
  132. assertEquals(NEW_SPACE_KEY_EXISTS_VALUE, doCopySpaceAction.getErrorMessage());
  133. }
  134. }