use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.
the class MessageStreamTest method testPostPublicMessageWithNullMessage.
@Test
public void testPostPublicMessageWithNullMessage() throws Exception {
Event postedMessage = setupForPublicMessage();
this.stream.postPublicMessage(null);
Assert.assertEquals(null, postedMessage.getBody());
}
use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.
the class MessageStreamTest method testPostPersonalMessage.
@Test
public void testPostPersonalMessage() throws Exception {
Event postedMessage = setupForPersonalMessage();
this.stream.postPersonalMessage("Hello World!");
Assert.assertEquals("Hello World!", postedMessage.getBody());
Assert.assertEquals(Importance.MEDIUM, postedMessage.getImportance());
Assert.assertEquals("personalMessage", postedMessage.getType());
Assert.assertEquals(this.currentUser, postedMessage.getRelatedEntity());
}
use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.
the class ScopeNotificationFilterTest method complexCase1.
@Test
public void complexCase1() throws Exception {
// Preferences:
//
// α: "update" event type enabled for format ALERT
//
// β: Exclusive filter on "wikiA".
// γ: Inclusive filter on "wikiA:SpaceB"
// δ: Exclusive filter on "wikiA:SpaceB.SpaceC"
// ε: Exclusive filter on "wikiA:SpaceB.SpaceC.SpaceD"
// Mock α
NotificationPreference preference = mock(NotificationPreference.class);
when(preference.getFormat()).thenReturn(NotificationFormat.ALERT);
Map<NotificationPreferenceProperty, Object> properties = new HashMap<>();
properties.put(NotificationPreferenceProperty.EVENT_TYPE, "update");
when(preference.getProperties()).thenReturn(properties);
// Mock β
WikiReference wikiReference = new WikiReference("wikiA");
NotificationFilterPreference prefβ = mockNotificationFilterPreference("wikiA", wikiReference, NotificationFilterType.EXCLUSIVE, null);
// Mock γ
SpaceReference spaceReferenceB = new SpaceReference("SpaceB", wikiReference);
NotificationFilterPreference prefγ = mockNotificationFilterPreference("wikiA:SpaceB", spaceReferenceB, NotificationFilterType.INCLUSIVE, "update");
// Mock δ
SpaceReference spaceReferenceC = new SpaceReference("SpaceC", spaceReferenceB);
NotificationFilterPreference prefδ = mockNotificationFilterPreference("wikiA:SpaceB.SpaceC", spaceReferenceC, NotificationFilterType.EXCLUSIVE, null);
// Mock ε
SpaceReference spaceReferenceD = new SpaceReference("SpaceD", spaceReferenceC);
NotificationFilterPreference prefε = mockNotificationFilterPreference("wikiA:SpaceB.SpaceC.SpaceD", spaceReferenceD, NotificationFilterType.INCLUSIVE, null);
when(notificationFilterManager.getFilterPreferences(any(DocumentReference.class))).thenReturn(Sets.newSet(prefβ, prefγ, prefδ, prefε));
DocumentReference user = new DocumentReference("xwiki", "XWiki", "User");
// Test 1
String result = mocker.getComponentUnderTest().filterExpression(user, preference).toString();
assertEquals("(((NOT (WIKI = \"wikiA\") OR (WIKI = \"wikiA\" AND SPACE STARTS WITH \"wikiA:SpaceB\"))" + " OR (WIKI = \"wikiA\" AND SPACE STARTS WITH \"wikiA:SpaceB.SpaceC.SpaceD\")) AND (NOT ((WIKI = \"wikiA\" " + "AND SPACE STARTS WITH \"wikiA:SpaceB.SpaceC\")) OR (WIKI = \"wikiA\" " + "AND SPACE STARTS WITH \"wikiA:SpaceB.SpaceC.SpaceD\")))", result);
// Test with wikiA:SpaceE (filtered by β)
Event event1 = mock(Event.class);
when(event1.getSpace()).thenReturn(new SpaceReference("SpaceE", wikiReference));
assertEquals(NotificationFilter.FilterPolicy.FILTER, mocker.getComponentUnderTest().filterEvent(event1, user, NotificationFormat.ALERT));
// Test with wikiA:SpaceB.DocumentE (kept by γ)
Event event2 = mock(Event.class);
when(event2.getDocument()).thenReturn(new DocumentReference("DocumentE", spaceReferenceB));
assertEquals(NotificationFilter.FilterPolicy.NO_EFFECT, mocker.getComponentUnderTest().filterEvent(event2, user, NotificationFormat.ALERT));
// Test with wikiA:SpaceB.SpaceC.DocumentF (filtered by δ)
Event event3 = mock(Event.class);
when(event3.getDocument()).thenReturn(new DocumentReference("DocumentF", spaceReferenceC));
assertEquals(NotificationFilter.FilterPolicy.FILTER, mocker.getComponentUnderTest().filterEvent(event3, user, NotificationFormat.ALERT));
// Test with wikiA:SpaceB.SpaceC.SpaceD.DocumentG (kept by ε)
Event event4 = mock(Event.class);
when(event4.getDocument()).thenReturn(new DocumentReference("DocumentG", spaceReferenceD));
assertEquals(NotificationFilter.FilterPolicy.NO_EFFECT, mocker.getComponentUnderTest().filterEvent(event4, user, NotificationFormat.ALERT));
// Test with wikiB:SpaceH.DocumentI - kept because nothing match and there is no top level inclusive filter
Event event5 = mock(Event.class);
when(event5.getDocument()).thenReturn(new DocumentReference("wikiB", "SpaceH", "DocumentI"));
assertEquals(NotificationFilter.FilterPolicy.NO_EFFECT, mocker.getComponentUnderTest().filterEvent(event5, user, NotificationFormat.ALERT));
}
use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.
the class ScopeNotificationFilterTest method testWithTopLevelInclusiveFilters.
@Test
public void testWithTopLevelInclusiveFilters() throws Exception {
// Preferences:
//
// α: "update" event type enabled for format ALERT
//
// γ: Inclusive filter on "wikiA:SpaceB"
// ζ: Inclusive filter on "wikiA:SpaceM.DocumentN"
// Mock α
NotificationPreference preference = mock(NotificationPreference.class);
when(preference.getFormat()).thenReturn(NotificationFormat.ALERT);
Map<NotificationPreferenceProperty, Object> properties = new HashMap<>();
properties.put(NotificationPreferenceProperty.EVENT_TYPE, "update");
when(preference.getProperties()).thenReturn(properties);
// Mock γ
WikiReference wikiReference = new WikiReference("wikiA");
SpaceReference spaceReferenceB = new SpaceReference("SpaceB", new WikiReference(wikiReference));
NotificationFilterPreference prefγ = mockNotificationFilterPreference("wikiA:SpaceB", spaceReferenceB, NotificationFilterType.INCLUSIVE, null);
// Mock ζ
DocumentReference documentReference = new DocumentReference("wikiA", "SpaceM", "DocumentN");
NotificationFilterPreference prefζ = mockNotificationFilterPreference("wikiA:SpaceM.DocumentN", documentReference, NotificationFilterType.INCLUSIVE, null);
when(notificationFilterManager.getFilterPreferences(any(DocumentReference.class))).thenReturn(Sets.newSet(prefγ, prefζ));
DocumentReference user = new DocumentReference("xwiki", "XWiki", "User");
// Test 1
String result = mocker.getComponentUnderTest().filterExpression(user, preference).toString();
assertEquals("((WIKI = \"wikiA\" AND SPACE STARTS WITH \"wikiA:SpaceB\") " + "OR (WIKI = \"wikiA\" AND PAGE = \"wikiA:SpaceM.DocumentN\"))", result);
// Test with wikiA:SpaceE (filtered by γ & ζ)
Event event1 = mock(Event.class);
when(event1.getSpace()).thenReturn(new SpaceReference("SpaceE", wikiReference));
assertEquals(NotificationFilter.FilterPolicy.FILTER, mocker.getComponentUnderTest().filterEvent(event1, user, NotificationFormat.ALERT));
// Test with wikiA:SpaceB.DocumentJ (kept by γ)
Event event2 = mock(Event.class);
when(event2.getDocument()).thenReturn(new DocumentReference("wikiA", "SpaceB", "DocumentJ"));
assertEquals(NotificationFilter.FilterPolicy.NO_EFFECT, mocker.getComponentUnderTest().filterEvent(event2, user, NotificationFormat.ALERT));
// Test with wikiB:SpaceK.DocumentL (filtered by γ & ζ)
Event event3 = mock(Event.class);
when(event3.getDocument()).thenReturn(new DocumentReference("wikiB", "SpaceK", "DocumentL"));
assertEquals(NotificationFilter.FilterPolicy.FILTER, mocker.getComponentUnderTest().filterEvent(event3, user, NotificationFormat.ALERT));
// Test with wikiA:SpaceM.DocumentN (kept by ζ)
Event event4 = mock(Event.class);
when(event4.getDocument()).thenReturn(new DocumentReference("wikiA", "SpaceM", "DocumentN"));
assertEquals(NotificationFilter.FilterPolicy.NO_EFFECT, mocker.getComponentUnderTest().filterEvent(event4, user, NotificationFormat.ALERT));
}
use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.
the class EventUserFilterTest method filterEvent.
@Test
public void filterEvent() throws Exception {
// Preferences
mockPreferences();
// Mock
Event event1 = mock(Event.class);
when(event1.getUser()).thenReturn(USER_A);
Event event2 = mock(Event.class);
when(event2.getUser()).thenReturn(USER_B);
Event event3 = mock(Event.class);
when(event3.getUser()).thenReturn(USER_C);
Event event4 = mock(Event.class);
when(event4.getUser()).thenReturn(USER_D);
Event event5 = mock(Event.class);
when(event5.getUser()).thenReturn(USER_E);
// Test
assertEquals(NotificationFilter.FilterPolicy.FILTER, mocker.getComponentUnderTest().filterEvent(event1, CURRENT_USER, NotificationFormat.ALERT));
assertEquals(NotificationFilter.FilterPolicy.FILTER, mocker.getComponentUnderTest().filterEvent(event2, CURRENT_USER, NotificationFormat.ALERT));
assertEquals(NotificationFilter.FilterPolicy.FILTER, mocker.getComponentUnderTest().filterEvent(event3, CURRENT_USER, NotificationFormat.ALERT));
assertEquals(NotificationFilter.FilterPolicy.NO_EFFECT, mocker.getComponentUnderTest().filterEvent(event4, CURRENT_USER, NotificationFormat.ALERT));
assertEquals(NotificationFilter.FilterPolicy.NO_EFFECT, mocker.getComponentUnderTest().filterEvent(event5, CURRENT_USER, NotificationFormat.ALERT));
}
Aggregations