2828import org .graylog .events .notifications .EventNotificationSettings ;
2929import org .graylog .events .processor .EventDefinitionDto ;
3030import org .graylog .events .processor .EventProcessorConfig ;
31+ import org .graylog .events .processor .aggregation .AggregationEventProcessorConfig ;
3132import org .graylog .scheduler .JobSchedule ;
3233import org .graylog .scheduler .JobTriggerDto ;
3334import org .graylog2 .plugin .Tools ;
3435import org .joda .time .DateTime ;
36+ import org .junit .Assert ;
3537import org .junit .Before ;
3638import org .junit .Test ;
3739import org .graylog2 .plugin .streams .Stream ;
3840import org .graylog .events .event .EventOriginContext ;
3941
42+ import java .util .Collections ;
43+
4044public class MessagesURLBuilderTest {
4145
4246 private MessagesURLBuilder subject ;
4347
4448 private DateTime dummyTime ;
4549
4650 private static final String TEST_NOTIFICATION_ID = "NotificationTestId" ;
51+ private static final String TEST_SEARCH_QUERY = "src: x" ;
4752
4853 @ Before
4954 public void setup () {
@@ -69,13 +74,13 @@ private EventDto.Builder dummyEventBuilder() {
6974 .fields (ImmutableMap .of ("field1" , "value1" , "field2" , "value2" ));
7075 }
7176
72- EventDefinitionDto buildDummyEventDefinition () {
77+ EventDefinitionDto buildDummyEventDefinition (boolean isFallback ) {
7378 return EventDefinitionDto .builder ()
7479 .alert (true )
7580 .id (TEST_NOTIFICATION_ID )
7681 .title ("Event Definition Test Title" )
7782 .description ("Event Definition Test Description" )
78- .config (new EventProcessorConfig . FallbackConfig ( ))
83+ .config (dummyEventProcessorConfig ( isFallback ))
7984 .fieldSpec (ImmutableMap .of ())
8085 .priority (2 )
8186 .keySpec (ImmutableList .of ())
@@ -98,9 +103,9 @@ public Builder toBuilder() {
98103 ).build ();
99104 }
100105
101- private EventNotificationContext .Builder dummyContextBuilder () {
106+ private EventNotificationContext .Builder dummyContextBuilder (boolean isFallback ) {
102107 EventNotificationConfig notificationConfig = new EventNotificationConfig .FallbackNotificationConfig ();
103- EventDefinitionDto eventDefinitionDto = buildDummyEventDefinition ();
108+ EventDefinitionDto eventDefinitionDto = buildDummyEventDefinition (isFallback );
104109 EventDto event = dummyEventBuilder ()
105110 .timerangeStart (this .dummyTime )
106111 .timerangeEnd (this .dummyTime .plusMinutes (1 ))
@@ -112,6 +117,23 @@ private EventNotificationContext.Builder dummyContextBuilder() {
112117 .event (event );
113118 }
114119
120+ private EventProcessorConfig dummyEventProcessorConfig (boolean isFallback ) {
121+ if (isFallback ) {
122+ return new EventProcessorConfig .FallbackConfig ();
123+ } else {
124+ EventProcessorConfig eventProcessorConfig = AggregationEventProcessorConfig .builder ()
125+ .query (TEST_SEARCH_QUERY )
126+ .streams (Collections .emptySet ())
127+ .groupBy (Collections .emptyList ())
128+ .series (Collections .emptyList ())
129+ .searchWithinMs (60000 )
130+ .executeEveryMs (60000 )
131+ .build ();
132+
133+ return eventProcessorConfig ;
134+ }
135+ }
136+
115137 private JobTriggerDto buildJobTrigger (DateTime jobTriggerTime ) {
116138 return JobTriggerDto .builder ()
117139 .jobDefinitionId ("jobDefinitionId" )
@@ -123,7 +145,7 @@ private JobTriggerDto buildJobTrigger(DateTime jobTriggerTime) {
123145
124146 private EventNotificationContext buildDummyContext (DateTime jobTriggerTime ) {
125147 JobTriggerDto jobTrigger = buildJobTrigger (jobTriggerTime );
126- return dummyContextBuilder ()
148+ return dummyContextBuilder (true )
127149 .jobTrigger (jobTrigger )
128150 .build ();
129151 }
@@ -136,21 +158,29 @@ public void buildMessagesUrlShouldNotFailWhenSplitFieldIsNotPresent() {
136158
137159 @ Test
138160 public void getStreamSearchUrlShouldNotFailWhenThereIsNoJobTrigger () {
139- EventNotificationContext context = dummyContextBuilder ().build ();
161+ EventNotificationContext context = dummyContextBuilder (true ).build ();
140162 this .subject .buildMessagesUrl (context , this .dummyTime );
141163 }
142164
143165 @ Test
144166 public void getStreamSearchUrlShouldNotFailWhenThereIsNoTimerangeStart () {
145167 EventDto event = dummyEventBuilder ().timerangeEnd (this .dummyTime .plusMinutes (1 )).build ();
146- EventNotificationContext context = dummyContextBuilder ().event (event ).build ();
168+ EventNotificationContext context = dummyContextBuilder (true ).event (event ).build ();
147169 this .subject .buildMessagesUrl (context , this .dummyTime );
148170 }
149171
150172 @ Test
151173 public void getStreamSearchUrlShouldNotFailWhenThereIsNoTimerangeEnd () {
152174 EventDto event = dummyEventBuilder ().timerangeStart (this .dummyTime ).build ();
153- EventNotificationContext context = dummyContextBuilder ().event (event ).build ();
175+ EventNotificationContext context = dummyContextBuilder (true ).event (event ).build ();
154176 this .subject .buildMessagesUrl (context , this .dummyTime );
155177 }
178+
179+ @ Test
180+ public void getStreamSearchUrlShouldContainsSearchQuery () {
181+ EventDto event = dummyEventBuilder ().timerangeStart (this .dummyTime ).build ();
182+ EventNotificationContext context = dummyContextBuilder (false ).event (event ).build ();
183+ String messageUrl = this .subject .buildMessagesUrl (context , this .dummyTime );
184+ Assert .assertTrue (messageUrl .contains (TEST_SEARCH_QUERY ));
185+ }
156186}
0 commit comments