diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/test/java/org/xwikiplatform/appwithinminutes/ClassEditSheetPageTest.java b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/test/java/org/xwikiplatform/appwithinminutes/ClassEditSheetPageTest.java index a7b16d45aa3..e32d9ef50bc 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/test/java/org/xwikiplatform/appwithinminutes/ClassEditSheetPageTest.java +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/test/java/org/xwikiplatform/appwithinminutes/ClassEditSheetPageTest.java @@ -92,12 +92,14 @@ void displayFieldPalette() throws Exception XWikiDocument xwikiDocument = this.xwiki.getDocument(new DocumentReference("xwiki", "Space", "Page"), this.context); + + xwikiDocument.setContent(""" + {include reference="AppWithinMinutes.ClassEditSheet" /} - xwikiDocument.setContent("{{include reference=\"AppWithinMinutes.ClassEditSheet\" /}}\n" - + "\n" - + "{{velocity}}\n" - + "#displayFieldPalette()\n" - + "{{/velocity}}\n"); + {{velocity}} + #displayFieldPalette() + {{/velocity}} + """); xwikiDocument.setSyntax(Syntax.XWIKI_2_1); this.xwiki.saveDocument(xwikiDocument, this.context); diff --git a/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-notifications/xwiki-platform-legacy-notifications-filters/xwiki-platform-legacy-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/LegacyDefaultNotificationFilterManagerTest.java b/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-notifications/xwiki-platform-legacy-notifications-filters/xwiki-platform-legacy-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/LegacyDefaultNotificationFilterManagerTest.java index 5e1e44c50e6..d93bf36128d 100644 --- a/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-notifications/xwiki-platform-legacy-notifications-filters/xwiki-platform-legacy-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/LegacyDefaultNotificationFilterManagerTest.java +++ b/xwiki-platform-core/xwiki-platform-legacy/xwiki-platform-legacy-notifications/xwiki-platform-legacy-notifications-filters/xwiki-platform-legacy-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/LegacyDefaultNotificationFilterManagerTest.java @@ -31,303 +31,49 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.xwiki.component.manager.ComponentManager; -import org.xwiki.model.ModelContext; import org.xwiki.model.reference.DocumentReference; -import org.xwiki.model.reference.WikiReference; import org.xwiki.notifications.NotificationConfiguration; import org.xwiki.notifications.filters.NotificationFilter; -import org.xwiki.notifications.preferences.NotificationPreference; import org.xwiki.test.junit5.mockito.ComponentTest; import org.xwiki.test.junit5.mockito.InjectMockComponents; import org.xwiki.test.junit5.mockito.MockComponent; -import org.xwiki.wiki.descriptor.WikiDescriptorManager; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** - * Unit tests for {@link LegacyDefaultNotificationFilterManager} + * Unit tests for {@link LegacyDefaultNotificationFilterManager}. * * @version $Id$ * @since 15.5RC1 */ @ComponentTest -public class LegacyDefaultNotificationFilterManagerTest +public class LegacyDefaultNotificationFilterManagerTest extends AbstractNotificationFilterManagerTest { @InjectMockComponents private LegacyDefaultNotificationFilterManager filterManager; - @MockComponent - private ComponentManager componentManager; - - @MockComponent - private WikiDescriptorManager wikiDescriptorManager; - - @MockComponent - private DocumentReference testUser; - @MockComponent @Named("cached") private FilterPreferencesModelBridge filterPreferencesModelBridge; - @MockComponent - private ModelContext modelContext; - @MockComponent private NotificationConfiguration configuration; - @BeforeEach - void setUp() throws Exception - { - testUser = new DocumentReference("wiki", "test", "user"); - - // Set a default comportment for the wikiDescriptorManager - when(wikiDescriptorManager.getMainWikiId()).thenReturn("wiki"); - when(wikiDescriptorManager.getCurrentWikiId()).thenReturn("currentWikiId"); - when(wikiDescriptorManager.getAllIds()).thenReturn(Arrays.asList("wiki", "currentWikiId")); - } - - @Test - void getAllNotificationsFiltersWithSubWiki() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - NotificationFilter fakeFilter2 = mock(NotificationFilter.class); - - when(wikiDescriptorManager.getMainWikiId()).thenReturn("somethingElseThanwiki"); - - when(componentManager.getInstanceList(NotificationFilter.class)) - .thenReturn(Arrays.asList(fakeFilter1, fakeFilter2)); - - Collection filters = this.filterManager.getAllFilters(testUser, false); - - assertEquals(2, filters.size()); - assertTrue(filters.contains(fakeFilter1)); - assertTrue(filters.contains(fakeFilter2)); - } - - @Test - void getAllFiltersWithMainWiki() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - - when(componentManager.getInstanceMap(NotificationFilter.class)) - .thenReturn(Collections.singletonMap("1", fakeFilter1)); - - Collection filters = this.filterManager.getAllFilters(testUser, false); - - assertEquals(1, filters.size()); - assertTrue(filters.contains(fakeFilter1)); - } - - @Test - void getAllFiltersForWiki() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - NotificationFilter fakeFilter2 = mock(NotificationFilter.class); - - WikiReference currentWiki = new WikiReference("current"); - when(wikiDescriptorManager.getCurrentWikiReference()).thenReturn(currentWiki); - - WikiReference argumentWiki = new WikiReference("foo"); - - when(componentManager.getInstanceList(NotificationFilter.class)) - .thenReturn(Arrays.asList(fakeFilter1, fakeFilter2)); - - Collection filters = this.filterManager.getAllFilters(argumentWiki); - - assertEquals(2, filters.size()); - assertTrue(filters.contains(fakeFilter1)); - assertTrue(filters.contains(fakeFilter2)); - verify(this.modelContext).setCurrentEntityReference(argumentWiki); - verify(this.modelContext).setCurrentEntityReference(currentWiki); - } - - @Test - void getAllFiltersWithOneDisabledFilter() throws Exception - { - SystemUserNotificationFilter disabledFilter = mock(SystemUserNotificationFilter.class); - - when(componentManager.getInstanceMap(NotificationFilter.class)) - .thenReturn(Collections.singletonMap("1", disabledFilter)); - - when(disabledFilter.getName()).thenReturn(SystemUserNotificationFilter.FILTER_NAME); - Map filterActivations = new HashMap<>(); - filterActivations.put(SystemUserNotificationFilter.FILTER_NAME, false); - - Collection filters = this.filterManager.getEnabledFilters( - this.filterManager.getAllFilters(testUser, true), filterActivations).collect(Collectors.toList()); - - assertEquals(0, filters.size()); - } - - @Test - void getFiltersWithMatchingFilters() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - - NotificationPreference preference = mock(NotificationPreference.class); - - when(fakeFilter1.matchesPreference(preference)).thenReturn(true); - - Collection filters = this.filterManager.getFiltersRelatedToNotificationPreference( - Arrays.asList(fakeFilter1), preference).collect(Collectors.toList()); - - assertEquals(1, filters.size()); - assertTrue(filters.contains(fakeFilter1)); - } - - @Test - void getFiltersWithOneBadFilter() throws Exception + @Override + protected DefaultNotificationFilterManager getFilterManager() { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - - NotificationPreference preference = mock(NotificationPreference.class); - - when(fakeFilter1.matchesPreference(preference)).thenReturn(false); - - Collection filters = this.filterManager - .getFiltersRelatedToNotificationPreference(Arrays.asList(fakeFilter1), preference) - .collect(Collectors.toList()); - - assertEquals(0, filters.size()); + return this.filterManager; } - @Test - void getFiltersWithSpecificFilteringPhase() throws Exception + @BeforeEach + void setUp() throws Exception { - NotificationFilter filter1 = mock(NotificationFilter.class); - NotificationFilter filter2 = mock(NotificationFilter.class); - NotificationFilter filter3 = mock(NotificationFilter.class); - NotificationFilter filter4 = mock(NotificationFilter.class); - NotificationFilter filter5 = mock(NotificationFilter.class); - NotificationFilter filter6 = mock(NotificationFilter.class); - NotificationFilter filter7 = mock(NotificationFilter.class); - - when(filter1.getName()).thenReturn("filter1"); - when(filter2.getName()).thenReturn("filter2"); - when(filter3.getName()).thenReturn("filter3"); - when(filter4.getName()).thenReturn("filter4"); - when(filter5.getName()).thenReturn("filter5"); - when(filter6.getName()).thenReturn("filter6"); - when(filter7.getName()).thenReturn("filter7"); - - Map filterActivations = new HashMap<>(); - filterActivations.put("filter1", new ToggleableNotificationFilterActivation("filter1", true, null, -1)); - filterActivations.put("filter2", new ToggleableNotificationFilterActivation("filter2", false, null, -1)); - filterActivations.put("filter3", new ToggleableNotificationFilterActivation("filter3", true, null, -1)); - filterActivations.put("filter4", new ToggleableNotificationFilterActivation("filter4", false, null, -1)); - filterActivations.put("filter5", new ToggleableNotificationFilterActivation("filter5", true, null, -1)); - filterActivations.put("filter6", new ToggleableNotificationFilterActivation("filter6", false, null, -1)); - // We don't put filter7 so it should default as being considered activated - - when(this.filterPreferencesModelBridge.getToggleableFilterActivations(testUser)).thenReturn(filterActivations); - when(filter1.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_PRE_FILTERING_PHASE); - when(filter2.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_PRE_FILTERING_PHASE); - when(filter3.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_POST_FILTERING_PHASE); - when(filter4.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_POST_FILTERING_PHASE); - when(filter5.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); - when(filter6.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); - when(filter7.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); - - // Using subwiki so we manipulate a set instead of a map - when(wikiDescriptorManager.getMainWikiId()).thenReturn("somethingElseThanwiki"); - when(componentManager.getInstanceList(NotificationFilter.class)) - .thenReturn(Arrays.asList(filter1, filter2, filter3, filter4, filter5, filter6, filter7)); - - // prefiltering enabled: we request prefiltering filters that are enabled: - // we should not return filter2/4/6 since they are not enabled, - // nor filter3 because it's only for post-filtering - when(this.configuration.isEventPrefilteringEnabled()).thenReturn(true); - Collection allFilters = this.filterManager.getAllFilters(testUser, true, - NotificationFilter.FilteringPhase.PRE_FILTERING); - assertEquals(3, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter1, filter5, filter7)), allFilters); - - // prefiltering still enabled: we request postfiltering filters that are enabled: - // we should not return filter2/4/6 since they are not enabled, - // nor filter1 because it's only for pre-filtering, nor filter5 because it's for both pre and post filtering - allFilters = this.filterManager.getAllFilters(testUser, true, NotificationFilter.FilteringPhase.POST_FILTERING); - assertEquals(1, allFilters.size()); - assertEquals(Collections.singleton(filter3), allFilters); - - // prefiltering still enabled: we request all filters that are enabled: - // we should not return filter2/4/6 since they are not enabled. - allFilters = this.filterManager.getAllFilters(testUser, true, null); - assertEquals(4, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter1, filter3, filter5, filter7)), allFilters); - - // prefiltering still enabled: we request prefiltering filters whatever if they are enabled or not - // we should not return filter3 and 4 because they are only for post-filtering - allFilters = this.filterManager.getAllFilters(testUser, false, - NotificationFilter.FilteringPhase.PRE_FILTERING); - assertEquals(5, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter1, filter2, filter5, filter6, filter7)), allFilters); - - // prefiltering still enabled: we request postfiltering filters whatever if they are enabled or not - // we should not return filter1/2 because they are only for pre-filtering, - // nor filter5/6/7 because they are for both pre and post filtering - allFilters = this.filterManager.getAllFilters(testUser, false, - NotificationFilter.FilteringPhase.POST_FILTERING); - assertEquals(2, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter3, filter4)), allFilters); - - // prefiltering still enabled: we request all filters whatever if they are enabled or not: - // we return all filters - allFilters = this.filterManager.getAllFilters(testUser, false, null); - assertEquals(7, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter1, filter2, filter3, filter4, filter5, filter6, filter7)), - allFilters); - - // prefiltering not enabled: we request prefiltering filters that are enabled: - // we return nothing: this does not make sense to have prefiltering filters in that case. - when(this.configuration.isEventPrefilteringEnabled()).thenReturn(false); - allFilters = this.filterManager.getAllFilters(testUser, true, - NotificationFilter.FilteringPhase.PRE_FILTERING); - assertTrue(allFilters.isEmpty()); - - // prefiltering still not enabled: we request postfiltering filters that are enabled: - // we should not return filter2/4/6 since they are not enabled, - // nor filter1 because it's only for pre-filtering - allFilters = this.filterManager.getAllFilters(testUser, true, NotificationFilter.FilteringPhase.POST_FILTERING); - assertEquals(3, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter3, filter5, filter7)), allFilters); - - // prefiltering still not enabled: we request all filters that are enabled: - // we should not return filter2/4/6 since they are not enabled. - allFilters = this.filterManager.getAllFilters(testUser, true, null); - assertEquals(4, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter1, filter3, filter5, filter7)), allFilters); - - // prefiltering still not enabled: we request prefiltering filters whatever if they are enabled or not - // we return nothing: this does not make sense to have prefiltering filters in that case. - allFilters = this.filterManager.getAllFilters(testUser, false, - NotificationFilter.FilteringPhase.PRE_FILTERING); - assertTrue(allFilters.isEmpty()); - - // prefiltering still not enabled: we request postfiltering filters whatever if they are enabled or not - // we should not return filter1/2 because they are only for pre-filtering, - allFilters = this.filterManager.getAllFilters(testUser, false, - NotificationFilter.FilteringPhase.POST_FILTERING); - assertEquals(5, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter3, filter4, filter5, filter6, filter7)), allFilters); - - // prefiltering still not enabled: we request all filters whatever if they are enabled or not: - // we return all filters - allFilters = this.filterManager.getAllFilters(testUser, false, null); - assertEquals(7, allFilters.size()); - assertEquals(new HashSet<>(Arrays.asList(filter1, filter2, filter3, filter4, filter5, filter6, filter7)), - allFilters); - } + this.testUser = new DocumentReference("wiki", "test", "user"); -} + // Set a default comportment for the wikiDescriptorManager (inherited from Abstract class) + when(this.wikiDescriptorManager.getMainWikiId()).thenReturn("wiki"); + when(this.wikiDescriptorManager.getCurrentWikiId()).thenReturn("currentWikiId"); + when(this.wikiDescriptorManager.getAllIds()). \ No newline at end of file diff --git a/xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-filters/xwiki-platform-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/AbstractNotificationFilterManagerTest.java b/xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-filters/xwiki-platform-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/AbstractNotificationFilterManagerTest.java new file mode 100644 index 00000000000..7a9f6c55aef --- /dev/null +++ b/xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-filters/xwiki-platform-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/AbstractNotificationFilterManagerTest.java @@ -0,0 +1,104 @@ +package org.xwiki.notifications.filters.internal; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; + +import org.junit.jupiter.api.Test; +import org.xwiki.component.manager.ComponentManager; +import org.xwiki.model.ModelContext; +import org.xwiki.model.reference.DocumentReference; +import org.xwiki.model.reference.WikiReference; +import org.xwiki.notifications.filters.NotificationFilter; +import org.xwiki.notifications.preferences.NotificationPreference; +import org.xwiki.test.junit5.mockito.MockComponent; +import org.xwiki.wiki.descriptor.WikiDescriptorManager; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * Base class for Notification Filter Manager tests to avoid duplication + * between standard and legacy implementations. + */ +public abstract class AbstractNotificationFilterManagerTest { + // These must be protected so the child classes (Default and Legacy) can access them + @MockComponent + protected ComponentManager componentManager; + + @MockComponent + protected WikiDescriptorManager wikiDescriptorManager; + + @MockComponent + protected DocumentReference testUser; + + @MockComponent + protected ModelContext modelContext; + + /** + * Helper to get the manager instance from the child class. + * This allows the abstract tests to run against different implementations. + */ + protected abstract DefaultNotificationFilterManager getFilterManager(); + + @Test + void getAllFiltersWithMainWiki() throws Exception { + NotificationFilter fakeFilter1 = mock(NotificationFilter.class); + + when(this.componentManager.getInstanceMap(NotificationFilter.class)) + .thenReturn(Collections.singletonMap("1", fakeFilter1)); + + Collection filters = this.getFilterManager().getAllFilters(testUser, false); + + assertEquals(1, filters.size()); + assertTrue(filters.contains(fakeFilter1)); + } + + @Test + void getAllFiltersForWiki() throws Exception { + NotificationFilter fakeFilter1 = mock(NotificationFilter.class); + NotificationFilter fakeFilter2 = mock(NotificationFilter.class); + + WikiReference currentWiki = new WikiReference("current"); + when(this.wikiDescriptorManager.getCurrentWikiReference()).thenReturn(currentWiki); + + WikiReference argumentWiki = new WikiReference("foo"); + + when(this.componentManager.getInstanceList(NotificationFilter.class)) + .thenReturn(Arrays.asList(fakeFilter1, fakeFilter2)); + + Collection filters = this.getFilterManager().getAllFilters(argumentWiki); + + assertEquals(2, filters.size()); + assertTrue(filters.contains(fakeFilter1)); + verify(this.modelContext).setCurrentEntityReference(argumentWiki); + verify(this.modelContext).setCurrentEntityReference(currentWiki); + } + + @Test + void getFiltersWithMatchingFilters() throws Exception { + NotificationFilter fakeFilter1 = mock(NotificationFilter.class); + NotificationPreference preference = mock(NotificationPreference.class); + + when(fakeFilter1.matchesPreference(preference)).thenReturn(true); + + Collection filters = this.getFilterManager().getFiltersRelatedToNotificationPreference( + Arrays.asList(fakeFilter1), preference).collect(java.util.stream.Collectors.toList()); + + assertEquals(1, filters.size()); + assertTrue(filters.contains(fakeFilter1)); + } + + @Test + void getFiltersWithOneBadFilter() throws Exception { + NotificationFilter fakeFilter1 = mock(NotificationFilter.class); + NotificationPreference preference = mock(NotificationPreference.class); + + when(fakeFilter1.matchesPreference(preference)).thenReturn(false); + + Collection filters = (Collection) this.getFilterManager(); + } +} \ No newline at end of file diff --git a/xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-filters/xwiki-platform-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/DefaultNotificationFilterManagerTest.java b/xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-filters/xwiki-platform-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/DefaultNotificationFilterManagerTest.java index 74f9bffa9ea..90dc4f02f55 100644 --- a/xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-filters/xwiki-platform-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/DefaultNotificationFilterManagerTest.java +++ b/xwiki-platform-core/xwiki-platform-notifications/xwiki-platform-notifications-filters/xwiki-platform-notifications-filters-api/src/test/java/org/xwiki/notifications/filters/internal/DefaultNotificationFilterManagerTest.java @@ -31,60 +31,48 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.xwiki.component.manager.ComponentManager; -import org.xwiki.model.ModelContext; import org.xwiki.model.reference.DocumentReference; -import org.xwiki.model.reference.WikiReference; import org.xwiki.notifications.filters.NotificationFilter; -import org.xwiki.notifications.preferences.NotificationPreference; import org.xwiki.test.junit5.mockito.ComponentTest; import org.xwiki.test.junit5.mockito.InjectMockComponents; import org.xwiki.test.junit5.mockito.MockComponent; -import org.xwiki.wiki.descriptor.WikiDescriptorManager; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** - * Unit tests for {@link DefaultNotificationFilterManager} + * Unit tests for {@link DefaultNotificationFilterManager}. * * @version $Id$ * @since 9.7RC1 */ @ComponentTest -public class DefaultNotificationFilterManagerTest +public class DefaultNotificationFilterManagerTest extends AbstractNotificationFilterManagerTest { @InjectMockComponents private DefaultNotificationFilterManager filterManager; - @MockComponent - private ComponentManager componentManager; - - @MockComponent - private WikiDescriptorManager wikiDescriptorManager; - - @MockComponent - private DocumentReference testUser; - @MockComponent @Named("cached") private FilterPreferencesModelBridge filterPreferencesModelBridge; - @MockComponent - private ModelContext modelContext; + @Override + protected DefaultNotificationFilterManager getFilterManager() + { + return this.filterManager; + } @BeforeEach void setUp() throws Exception { - testUser = new DocumentReference("wiki", "test", "user"); + this.testUser = new DocumentReference("wiki", "test", "user"); - // Set a default comportment for the wikiDescriptorManager - when(wikiDescriptorManager.getMainWikiId()).thenReturn("wiki"); - when(wikiDescriptorManager.getCurrentWikiId()).thenReturn("currentWikiId"); - when(wikiDescriptorManager.getAllIds()).thenReturn(Arrays.asList("wiki", "currentWikiId")); + // Set a default comportment for the wikiDescriptorManager (inherited from Abstract class) + when(this.wikiDescriptorManager.getMainWikiId()).thenReturn("wiki"); + when(this.wikiDescriptorManager.getCurrentWikiId()).thenReturn("currentWikiId"); + when(this.wikiDescriptorManager.getAllIds()).thenReturn(Arrays.asList("wiki", "currentWikiId")); } @Test @@ -93,61 +81,24 @@ void getAllNotificationsFiltersWithSubWiki() throws Exception NotificationFilter fakeFilter1 = mock(NotificationFilter.class); NotificationFilter fakeFilter2 = mock(NotificationFilter.class); - when(wikiDescriptorManager.getMainWikiId()).thenReturn("somethingElseThanwiki"); + when(this.wikiDescriptorManager.getMainWikiId()).thenReturn("somethingElseThanwiki"); - when(componentManager.getInstanceList(NotificationFilter.class)) + when(this.componentManager.getInstanceList(NotificationFilter.class)) .thenReturn(Arrays.asList(fakeFilter1, fakeFilter2)); - Collection filters = this.filterManager.getAllFilters(testUser, false); + Collection filters = this.filterManager.getAllFilters(this.testUser, false); assertEquals(2, filters.size()); assertTrue(filters.contains(fakeFilter1)); assertTrue(filters.contains(fakeFilter2)); } - @Test - void getAllFiltersWithMainWiki() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - - when(componentManager.getInstanceMap(NotificationFilter.class)) - .thenReturn(Collections.singletonMap("1", fakeFilter1)); - - Collection filters = this.filterManager.getAllFilters(testUser, false); - - assertEquals(1, filters.size()); - assertTrue(filters.contains(fakeFilter1)); - } - - @Test - void getAllFiltersForWiki() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - NotificationFilter fakeFilter2 = mock(NotificationFilter.class); - - WikiReference currentWiki = new WikiReference("current"); - when(wikiDescriptorManager.getCurrentWikiReference()).thenReturn(currentWiki); - - WikiReference argumentWiki = new WikiReference("foo"); - - when(componentManager.getInstanceList(NotificationFilter.class)) - .thenReturn(Arrays.asList(fakeFilter1, fakeFilter2)); - - Collection filters = this.filterManager.getAllFilters(argumentWiki); - - assertEquals(2, filters.size()); - assertTrue(filters.contains(fakeFilter1)); - assertTrue(filters.contains(fakeFilter2)); - verify(this.modelContext).setCurrentEntityReference(argumentWiki); - verify(this.modelContext).setCurrentEntityReference(currentWiki); - } - @Test void getAllFiltersWithOneDisabledFilter() throws Exception { SystemUserNotificationFilter disabledFilter = mock(SystemUserNotificationFilter.class); - when(componentManager.getInstanceMap(NotificationFilter.class)) + when(this.componentManager.getInstanceMap(NotificationFilter.class)) .thenReturn(Collections.singletonMap("1", disabledFilter)); when(disabledFilter.getName()).thenReturn(SystemUserNotificationFilter.FILTER_NAME); @@ -155,39 +106,7 @@ void getAllFiltersWithOneDisabledFilter() throws Exception filterActivations.put(SystemUserNotificationFilter.FILTER_NAME, false); Collection filters = this.filterManager.getEnabledFilters( - this.filterManager.getAllFilters(testUser, true), filterActivations).collect(Collectors.toList()); - - assertEquals(0, filters.size()); - } - - @Test - void getFiltersWithMatchingFilters() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - - NotificationPreference preference = mock(NotificationPreference.class); - - when(fakeFilter1.matchesPreference(preference)).thenReturn(true); - - Collection filters = this.filterManager.getFiltersRelatedToNotificationPreference( - Arrays.asList(fakeFilter1), preference).collect(Collectors.toList()); - - assertEquals(1, filters.size()); - assertTrue(filters.contains(fakeFilter1)); - } - - @Test - void getFiltersWithOneBadFilter() throws Exception - { - NotificationFilter fakeFilter1 = mock(NotificationFilter.class); - - NotificationPreference preference = mock(NotificationPreference.class); - - when(fakeFilter1.matchesPreference(preference)).thenReturn(false); - - Collection filters = this.filterManager - .getFiltersRelatedToNotificationPreference(Arrays.asList(fakeFilter1), preference) - .collect(Collectors.toList()); + this.filterManager.getAllFilters(this.testUser, true), filterActivations).collect(Collectors.toList()); assertEquals(0, filters.size()); } @@ -218,71 +137,46 @@ void getFiltersWithSpecificFilteringPhase() throws Exception filterActivations.put("filter4", new ToggleableNotificationFilterActivation("filter4", false, null, -1)); filterActivations.put("filter5", new ToggleableNotificationFilterActivation("filter5", true, null, -1)); filterActivations.put("filter6", new ToggleableNotificationFilterActivation("filter6", false, null, -1)); - // We don't put filter7 so it should default as being considered activated - when(this.filterPreferencesModelBridge.getToggleableFilterActivations(testUser)).thenReturn(filterActivations); - when(filter1.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_PRE_FILTERING_PHASE); - when(filter2.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_PRE_FILTERING_PHASE); - when(filter3.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_POST_FILTERING_PHASE); - when(filter4.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_ONLY_POST_FILTERING_PHASE); - when(filter5.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); - when(filter6.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); - when(filter7.getFilteringPhases()) - .thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); - - // Using subwiki so we manipulate a set instead of a map - when(wikiDescriptorManager.getMainWikiId()).thenReturn("somethingElseThanwiki"); - when(componentManager.getInstanceList(NotificationFilter.class)) - .thenReturn(Arrays.asList(filter1, filter2, filter3, filter4, filter5, filter6, filter7)); - - // we request prefiltering filters that are enabled: - // we should not return filter2/4/6 since they are not enabled, - // nor filter3 because it's only for post-filtering - Collection allFilters = this.filterManager.getAllFilters(testUser, true, - NotificationFilter.FilteringPhase.PRE_FILTERING); + when(this.filterPreferencesModelBridge.getToggleableFilterActivations(this.testUser)).thenReturn(filterActivations); + when(filter1.getFilteringPhases()).thenReturn(NotificationFilter.SUPPORT_ONLY_PRE_FILTERING_PHASE); + when(filter2.getFilteringPhases()).thenReturn(NotificationFilter.SUPPORT_ONLY_PRE_FILTERING_PHASE); + when(filter3.getFilteringPhases()).thenReturn(NotificationFilter.SUPPORT_ONLY_POST_FILTERING_PHASE); + when(filter4.getFilteringPhases()).thenReturn(NotificationFilter.SUPPORT_ONLY_POST_FILTERING_PHASE); + when(filter5.getFilteringPhases()).thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); + when(filter6.getFilteringPhases()).thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); + when(filter7.getFilteringPhases()).thenReturn(NotificationFilter.SUPPORT_BOTH_FILTERING_PHASE); + + when(this.wikiDescriptorManager.getMainWikiId()).thenReturn("somethingElseThanwiki"); + when(this.componentManager.getInstanceList(NotificationFilter.class)) + .thenReturn(Arrays.asList(filter1, filter2, filter3, filter4, filter5, filter6, filter7)); + + Collection allFilters = this.filterManager.getAllFilters(this.testUser, true, + NotificationFilter.FilteringPhase.PRE_FILTERING); assertEquals(3, allFilters.size()); assertEquals(new HashSet<>(Arrays.asList(filter1, filter5, filter7)), allFilters); - // we request postfiltering filters that are enabled: - // we should not return filter2/4/6 since they are not enabled, - // nor filter1 because it's only for pre-filtering, nor filter5 because it's for both pre and post filtering - allFilters = this.filterManager.getAllFilters(testUser, true, NotificationFilter.FilteringPhase.POST_FILTERING); + allFilters = this.filterManager.getAllFilters(this.testUser, true, NotificationFilter.FilteringPhase.POST_FILTERING); assertEquals(1, allFilters.size()); assertEquals(Collections.singleton(filter3), allFilters); - // we request all filters that are enabled: - // we should not return filter2/4/6 since they are not enabled. - allFilters = this.filterManager.getAllFilters(testUser, true, null); + allFilters = this.filterManager.getAllFilters(this.testUser, true, null); assertEquals(4, allFilters.size()); assertEquals(new HashSet<>(Arrays.asList(filter1, filter3, filter5, filter7)), allFilters); - // we request prefiltering filters whatever if they are enabled or not - // we should not return filter3 and 4 because they are only for post-filtering - allFilters = this.filterManager.getAllFilters(testUser, false, - NotificationFilter.FilteringPhase.PRE_FILTERING); + allFilters = this.filterManager.getAllFilters(this.testUser, false, + NotificationFilter.FilteringPhase.PRE_FILTERING); assertEquals(5, allFilters.size()); assertEquals(new HashSet<>(Arrays.asList(filter1, filter2, filter5, filter6, filter7)), allFilters); - // we request postfiltering filters whatever if they are enabled or not - // we should not return filter1/2 because they are only for pre-filtering, - // nor filter5/6/7 because they are for both pre and post filtering - allFilters = this.filterManager.getAllFilters(testUser, false, - NotificationFilter.FilteringPhase.POST_FILTERING); + allFilters = this.filterManager.getAllFilters(this.testUser, false, + NotificationFilter.FilteringPhase.POST_FILTERING); assertEquals(2, allFilters.size()); assertEquals(new HashSet<>(Arrays.asList(filter3, filter4)), allFilters); - // we request all filters whatever if they are enabled or not: - // we return all filters - allFilters = this.filterManager.getAllFilters(testUser, false, null); + allFilters = this.filterManager.getAllFilters(this.testUser, false, null); assertEquals(7, allFilters.size()); assertEquals(new HashSet<>(Arrays.asList(filter1, filter2, filter3, filter4, filter5, filter6, filter7)), - allFilters); + allFilters); } - -} +} \ No newline at end of file diff --git a/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/ResourceTestUtils.java b/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/ResourceTestUtils.java new file mode 100644 index 00000000000..dffa6effc4a --- /dev/null +++ b/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/ResourceTestUtils.java @@ -0,0 +1,64 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.xwiki.rest.internal.resources; + +import org.xwiki.component.manager.ComponentManager; +import org.xwiki.security.SecurityConfiguration; +import org.xwiki.test.mockito.MockitoComponentManager; + +import com.xpn.xwiki.web.Utils; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +/** + * Utility methods for resource tests. + * + * @version $Id$ + */ +public final class ResourceTestUtils +{ + private ResourceTestUtils() + { + } + + /** + * Initialize the test component manager and common mocks used by REST resource tests. + * + * @param componentManager the injected test component manager + * @param contextComponentManager the context component manager mock + * @param securityConfiguration the security configuration mock + * @throws Exception if one of the manager lookups fails + */ + public static void setUpResourceTest(MockitoComponentManager componentManager, ComponentManager contextComponentManager, + SecurityConfiguration securityConfiguration) throws Exception + { + Utils.setComponentManager(componentManager); + + // Because XWikiResource injects the context component manager, it exists as a mock, and we thus need to mock + // its behavior - otherwise it would just be ignored. + when(contextComponentManager.getInstance(any())) + .thenAnswer(invocation -> componentManager.getInstance(invocation.getArgument(0))); + when(contextComponentManager.getInstance(any(), any())) + .thenAnswer(invocation -> componentManager.getInstance(invocation.getArgument(0), invocation.getArgument(1))); + + when(securityConfiguration.getQueryItemsLimit()).thenReturn(1000); + } +} diff --git a/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/pages/AbstractPageHistoryResourceImplTest.java b/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/pages/AbstractPageHistoryResourceImplTest.java index 03f1f6730db..a010b356efe 100644 --- a/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/pages/AbstractPageHistoryResourceImplTest.java +++ b/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/pages/AbstractPageHistoryResourceImplTest.java @@ -41,6 +41,7 @@ import org.xwiki.query.QueryManager; import org.xwiki.rest.XWikiResource; import org.xwiki.rest.XWikiRestException; +import org.xwiki.rest.internal.resources.ResourceTestUtils; import org.xwiki.rest.model.jaxb.History; import org.xwiki.rest.model.jaxb.HistorySummary; import org.xwiki.security.SecurityConfiguration; @@ -51,7 +52,6 @@ import org.xwiki.test.mockito.MockitoComponentManager; import com.xpn.xwiki.doc.rcs.XWikiRCSNodeId; -import com.xpn.xwiki.web.Utils; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -113,17 +113,7 @@ public abstract class AbstractPageHistoryResourceImplTest void setUp(MockitoComponentManager componentManager) throws Exception { - Utils.setComponentManager(componentManager); - - // Because XWikiResource injects the context component manager, it exists as a mock, and we thus need to mock - // its behavior - otherwise it would just be ignored. - when(this.contextComponentManager.getInstance(any())) - .thenAnswer(invocation -> componentManager.getInstance(invocation.getArgument(0))); - when(this.contextComponentManager.getInstance(any(), any())) - .thenAnswer( - invocation -> componentManager.getInstance(invocation.getArgument(0), invocation.getArgument(1))); - - when(this.securityConfiguration.getQueryItemsLimit()).thenReturn(1000); + ResourceTestUtils.setUpResourceTest(componentManager, this.contextComponentManager, this.securityConfiguration); when(this.uriInfo.getBaseUri()).thenReturn(new URI("https://test/")); diff --git a/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/wikis/WikiPagesResourceImplTest.java b/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/wikis/WikiPagesResourceImplTest.java index bc3f441076c..96df3dcdd0d 100644 --- a/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/wikis/WikiPagesResourceImplTest.java +++ b/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/test/java/org/xwiki/rest/internal/resources/wikis/WikiPagesResourceImplTest.java @@ -39,6 +39,7 @@ import org.xwiki.query.QueryException; import org.xwiki.query.QueryManager; import org.xwiki.rest.XWikiRestException; +import org.xwiki.rest.internal.resources.ResourceTestUtils; import org.xwiki.rest.model.jaxb.PageSummary; import org.xwiki.rest.model.jaxb.Pages; import org.xwiki.security.SecurityConfiguration; @@ -51,7 +52,6 @@ import com.xpn.xwiki.XWikiContext; import com.xpn.xwiki.doc.XWikiDocument; -import com.xpn.xwiki.web.Utils; import com.xpn.xwiki.web.XWikiURLFactory; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -106,15 +106,7 @@ class WikiPagesResourceImplTest void setUp(MockitoComponentManager componentManager) throws Exception { - Utils.setComponentManager(componentManager); - - // Because XWikiResource injects the context component manager, it exists as a mock, and we thus need to mock - // its behavior - otherwise it would just be ignored. - when(this.contextComponentManager.getInstance(any())) - .thenAnswer(invocation -> componentManager.getInstance(invocation.getArgument(0))); - when(this.contextComponentManager.getInstance(any(), any())) - .thenAnswer( - invocation -> componentManager.getInstance(invocation.getArgument(0), invocation.getArgument(1))); + ResourceTestUtils.setUpResourceTest(componentManager, this.contextComponentManager, this.securityConfiguration); when(this.uriInfo.getBaseUri()).thenReturn(new URI("https://test/")); FieldUtils.writeField(this.wikiPagesResource, "uriInfo", this.uriInfo, true); @@ -122,7 +114,6 @@ void setUp(MockitoComponentManager componentManager) this.context = contextProvider.get(); when(this.context.getURLFactory()).thenReturn(urlFactory); - when(this.securityConfiguration.getQueryItemsLimit()).thenReturn(1000); } @Test diff --git a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-authorization/xwiki-platform-security-authorization-api/src/test/java/org/xwiki/security/authorization/testwikis/internal/parser/TestDefinitionParserTest.java b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-authorization/xwiki-platform-security-authorization-api/src/test/java/org/xwiki/security/authorization/testwikis/internal/parser/TestDefinitionParserTest.java index 60bb6de371a..234afd5677a 100644 --- a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-authorization/xwiki-platform-security-authorization-api/src/test/java/org/xwiki/security/authorization/testwikis/internal/parser/TestDefinitionParserTest.java +++ b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-authorization/xwiki-platform-security-authorization-api/src/test/java/org/xwiki/security/authorization/testwikis/internal/parser/TestDefinitionParserTest.java @@ -59,34 +59,45 @@ /** * Test of the test definition parser itself. * - * @version $Id$ + * @version $Id: 60bb6de371a9cdc93ce18c929d64f506fcbe0944 $ * @since 5.0M2 */ @ComponentTest @ComponentList({ - DefaultStringEntityReferenceResolver.class, - DefaultStringEntityReferenceSerializer.class, - DefaultEntityReferenceProvider.class, - DefaultModelConfiguration.class, - DefaultSymbolScheme.class + DefaultStringEntityReferenceResolver.class, + DefaultStringEntityReferenceSerializer.class, + DefaultEntityReferenceProvider.class, + DefaultModelConfiguration.class, + DefaultSymbolScheme.class }) class TestDefinitionParserTest { + @InjectComponentManager private ComponentManager componentManager; + private void extractRuleData(Collection rules, List userRefs, + List rights, List states) + { + for (TestAccessRule rule : rules) { + userRefs.add(rule.getUser()); + rights.add(rule.getRight()); + states.add(rule.getState()); + } + } + @Test void definitionTestParser() throws Exception { TestDefinitionParser parser = new DefaultTestDefinitionParser(); EntityReferenceResolver resolver = - componentManager.getInstance(EntityReferenceResolver.TYPE_STRING); + componentManager.getInstance(EntityReferenceResolver.TYPE_STRING); EntityReferenceSerializer serializer = - componentManager.getInstance(EntityReferenceSerializer.TYPE_STRING); + componentManager.getInstance(EntityReferenceSerializer.TYPE_STRING); TestDefinition testDefinition = - parser.parse("testwikis" + File.separatorChar + "parserTester.xml", resolver, serializer); + parser.parse("testwikis" + File.separatorChar + "parserTester.xml", resolver, serializer); Collection testWikis = testDefinition.getWikis(); @@ -99,7 +110,7 @@ void definitionTestParser() throws Exception assertThat("Main wiki should be named 'wiki'", mainwiki.getWikiReference(), equalTo(new WikiReference("wiki"))); assertThat("Main wiki should be main wiki", mainwiki.isMainWiki(), is(true)); assertThat("Main wiki owner should be XWiki.Admin", mainwiki.getOwner(), equalTo( - new DocumentReference("wiki", "XWiki", "Admin"))); + new DocumentReference("wiki", "XWiki", "Admin"))); assertThat("Main wiki should have 4 users (2 groups, and 2 users)", mainwiki.getUsers().size(), equalTo(4)); assertThat("Main wiki should have 2 groups", mainwiki.getGroups().size(), equalTo(2)); assertThat("Main wiki should have a groupA", mainwiki.getGroup("groupA"), notNullValue()); @@ -115,8 +126,8 @@ void definitionTestParser() throws Exception } assertThat("User A is in GroupA of the main wiki and the subwiki", groupRefs, - hasItems(new DocumentReference("wiki", "XWiki", "groupA"), - new DocumentReference("wiki1", "XWiki", "groupA"))); + hasItems(new DocumentReference("wiki", "XWiki", "groupA"), + new DocumentReference("wiki1", "XWiki", "groupA"))); Collection rules = mainwiki.getAccessRules(); @@ -126,23 +137,20 @@ void definitionTestParser() throws Exception List rights = new ArrayList(); List states = new ArrayList(); - for (TestAccessRule rule : rules) { - userRefs.add(rule.getUser()); - rights.add(rule.getRight()); - states.add(rule.getState()); - } + extractRuleData(rules, userRefs, rights, states); assertThat("Users in access rules of main wiki mismatch", userRefs, hasItems( - new DocumentReference("wiki", "XWiki", "userA"), - new DocumentReference("wiki", "XWiki", "userB"), - new DocumentReference("wiki", "XWiki", "groupA"), - new DocumentReference("wiki", "XWiki", "groupB") + new DocumentReference("wiki", "XWiki", "userA"), + new DocumentReference("wiki", "XWiki", "userB"), + new DocumentReference("wiki", "XWiki", "groupA"), + new DocumentReference("wiki", "XWiki", "groupB") )); assertThat("Rights in access rules of main wiki mismatch", rights, hasItems( - Right.VIEW, Right.LOGIN, Right.EDIT, Right.COMMENT, Right.DELETE, Right.REGISTER, Right.ADMIN, Right.PROGRAM + Right.VIEW, Right.LOGIN, Right.EDIT, Right.COMMENT, Right.DELETE, Right.REGISTER, Right.ADMIN, + Right.PROGRAM )); assertThat("State in access rules of main wiki mismatch", states, hasItems( - RuleState.ALLOW, RuleState.DENY + RuleState.ALLOW, RuleState.DENY )); assertThat("Main wiki should have 3 spaces (2 plus XWiki)", mainwiki.getSpaces().size(), equalTo(3)); @@ -151,7 +159,7 @@ void definitionTestParser() throws Exception assertThat("Main wiki should have a space named 'space1'", space, notNullValue()); assertThat("'space1' of main wiki should have description 'space 1'", space.getDescription(), - equalTo("space 1")); + equalTo("space 1")); rules = space.getAccessRules(); @@ -161,22 +169,18 @@ void definitionTestParser() throws Exception rights = new ArrayList(); states = new ArrayList(); - for (TestAccessRule rule : rules) { - userRefs.add(rule.getUser()); - rights.add(rule.getRight()); - states.add(rule.getState()); - } + extractRuleData(rules, userRefs, rights, states); assertThat("Users in access rules of space 1 of main wiki mismatch", userRefs, hasItems( - new DocumentReference("wiki", "XWiki", "userA"), - new DocumentReference("wiki", "XWiki", "userB"), - new DocumentReference("wiki", "XWiki", "groupB") + new DocumentReference("wiki", "XWiki", "userA"), + new DocumentReference("wiki", "XWiki", "userB"), + new DocumentReference("wiki", "XWiki", "groupB") )); assertThat("Rights in access rules of space 1 of main wiki mismatch", rights, hasItems( - Right.VIEW, Right.EDIT, Right.COMMENT, Right.DELETE, Right.ADMIN + Right.VIEW, Right.EDIT, Right.COMMENT, Right.DELETE, Right.ADMIN )); assertThat("State in access rules of space 1 of main wiki mismatch", states, hasItems( - RuleState.DENY + RuleState.DENY )); assertThat("Space 1 of main wiki should have 2 documents", space.getDocuments().size(), equalTo(2)); @@ -185,9 +189,9 @@ void definitionTestParser() throws Exception assertThat("Space 1 of main wiki should have a document named 'document1'", document, notNullValue()); assertThat("'document1' of 'space1' of main wiki should have description 'Document 1'", - document.getDescription(), equalTo("Document 1")); + document.getDescription(), equalTo("Document 1")); assertThat("'document1' of 'space1' of main wiki should enforce required rights", - document.isEnforceRequiredRights(), equalTo(true)); + document.isEnforceRequiredRights(), equalTo(true)); rules = document.getAccessRules(); @@ -197,34 +201,28 @@ void definitionTestParser() throws Exception rights = new ArrayList<>(); states = new ArrayList<>(); - for (TestAccessRule rule : rules) { - userRefs.add(rule.getUser()); - rights.add(rule.getRight()); - states.add(rule.getState()); - } + extractRuleData(rules, userRefs, rights, states); assertThat("Users in access rules of document 1 of space 1 of main wiki mismatch", userRefs, hasItems( - new DocumentReference("wiki", "XWiki", "userA"), - new DocumentReference("wiki", "XWiki", "userB"), - new DocumentReference("wiki", "XWiki", "groupA") + new DocumentReference("wiki", "XWiki", "userA"), + new DocumentReference("wiki", "XWiki", "userB"), + new DocumentReference("wiki", "XWiki", "groupA") )); assertThat("Rights in access rules of document 1 of space 1 of main wiki mismatch", rights, hasItems( - Right.VIEW, Right.EDIT, Right.COMMENT, Right.DELETE + Right.VIEW, Right.EDIT, Right.COMMENT, Right.DELETE )); assertThat("State in access rules of document 1 of space 1 of main wiki mismatch", states, hasItems( - RuleState.ALLOW + RuleState.ALLOW )); - List testRequiredRights = new ArrayList<>(document.getRequiredRights()); assertThat("There must be 2 required rights on document 1", testRequiredRights.size(), equalTo(2)); - assertThat("The first required right on document 1 must have ADMIN right", testRequiredRights.get(0).getRight(), - equalTo(Right.ADMIN)); - assertThat("The first required right on document 1 must have WIKI scope", testRequiredRights.get(0).getScope(), - equalTo(EntityType.WIKI)); + assertThat("The first required right on document 1 must have ADMIN right", + testRequiredRights.get(0).getRight(), equalTo(Right.ADMIN)); + assertThat("The first required right on document 1 must have WIKI scope", + testRequiredRights.get(0).getScope(), equalTo(EntityType.WIKI)); assertThat("The second required right on document 1 must have SCRIPT right", - testRequiredRights.get(1).getRight(), equalTo(Right.SCRIPT)); + testRequiredRights.get(1).getRight(), equalTo(Right.SCRIPT)); assertThat("The second required right on document 1 must have DOCUMENT scope", - testRequiredRights.get(1).getScope(), equalTo(EntityType.DOCUMENT)); + testRequiredRights.get(1).getScope(), equalTo(EntityType.DOCUMENT)); } } -