Search in sources :

Example 26 with Event

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());
}
Also used : Event(org.xwiki.eventstream.Event) DefaultEvent(org.xwiki.eventstream.internal.DefaultEvent) Test(org.junit.Test)

Example 27 with Event

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());
}
Also used : Event(org.xwiki.eventstream.Event) DefaultEvent(org.xwiki.eventstream.internal.DefaultEvent) Test(org.junit.Test)

Example 28 with Event

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));
}
Also used : NotificationPreference(org.xwiki.notifications.preferences.NotificationPreference) HashMap(java.util.HashMap) SpaceReference(org.xwiki.model.reference.SpaceReference) NotificationFilterPreference(org.xwiki.notifications.filters.NotificationFilterPreference) NotificationPreferenceProperty(org.xwiki.notifications.preferences.NotificationPreferenceProperty) Event(org.xwiki.eventstream.Event) WikiReference(org.xwiki.model.reference.WikiReference) DocumentReference(org.xwiki.model.reference.DocumentReference) Test(org.junit.Test)

Example 29 with Event

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));
}
Also used : NotificationPreference(org.xwiki.notifications.preferences.NotificationPreference) HashMap(java.util.HashMap) SpaceReference(org.xwiki.model.reference.SpaceReference) NotificationFilterPreference(org.xwiki.notifications.filters.NotificationFilterPreference) NotificationPreferenceProperty(org.xwiki.notifications.preferences.NotificationPreferenceProperty) Event(org.xwiki.eventstream.Event) WikiReference(org.xwiki.model.reference.WikiReference) DocumentReference(org.xwiki.model.reference.DocumentReference) Test(org.junit.Test)

Example 30 with Event

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));
}
Also used : Event(org.xwiki.eventstream.Event) Test(org.junit.Test)

Aggregations

Event (org.xwiki.eventstream.Event)60 Test (org.junit.Test)31 DocumentReference (org.xwiki.model.reference.DocumentReference)21 DefaultEvent (org.xwiki.eventstream.internal.DefaultEvent)20 CompositeEvent (org.xwiki.notifications.CompositeEvent)17 ArrayList (java.util.ArrayList)7 Query (org.xwiki.query.Query)7 Date (java.util.Date)6 Expectations (org.jmock.Expectations)6 DocumentAccessBridge (org.xwiki.bridge.DocumentAccessBridge)5 QueryException (org.xwiki.query.QueryException)5 ObjectReference (org.xwiki.model.reference.ObjectReference)4 HashMap (java.util.HashMap)3 WikiReference (org.xwiki.model.reference.WikiReference)3 XWikiContext (com.xpn.xwiki.XWikiContext)2 ActivityEvent (com.xpn.xwiki.plugin.activitystream.api.ActivityEvent)2 EventStatus (org.xwiki.eventstream.EventStatus)2 EventStream (org.xwiki.eventstream.EventStream)2 EventStreamAddedEvent (org.xwiki.eventstream.events.EventStreamAddedEvent)2 SpaceReference (org.xwiki.model.reference.SpaceReference)2