Config fetch for VESCollector through DCAE-SDK (CBS Client)
[dcaegen2/collectors/ves.git] / src / test / java / org / onap / dcae / common / EventSenderTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * PROJECT
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * Copyright (C) 2018,2020 Nokia. All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21 package org.onap.dcae.common;
22
23 import io.vavr.collection.HashMap;
24 import org.json.JSONObject;
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 import org.mockito.Mock;
28 import org.mockito.junit.MockitoJUnitRunner;
29 import org.onap.dcae.common.model.StndDefinedNamespaceParameterNotDefinedException;
30 import org.onap.dcae.common.model.VesEvent;
31 import org.onap.dcae.common.publishing.DMaaPEventPublisher;
32
33 import java.io.IOException;
34 import java.util.List;
35
36 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
37 import static org.mockito.ArgumentMatchers.any;
38 import static org.mockito.ArgumentMatchers.eq;
39 import static org.mockito.Mockito.never;
40 import static org.mockito.Mockito.verify;
41
42 @RunWith(MockitoJUnitRunner.Silent.class)
43 public class EventSenderTest {
44
45   @Mock
46   private DMaaPEventPublisher eventPublisher;
47
48
49   @Test
50   public void shouldNotSendEventWhenStreamIdIsNotDefined() throws IOException {
51     // given
52     EventSender eventSender = givenConfiguredEventSender(HashMap.empty());
53     List<VesEvent> eventToSend = createEventToSend("/eventsAfterTransformation/ves7_valid_event.json");
54
55     // when
56     eventSender.send(eventToSend);
57
58     // then
59     verifyThatEventWasNotSendAtStream();
60   }
61
62   @Test
63   public void shouldSendEventAtStreamsAssignedToEventDomain() throws IOException {
64     // given
65     EventSender eventSender = givenConfiguredEventSender(HashMap.of("fault", new String[]{"ves-fault", "fault-ves"}));
66     List<VesEvent> eventToSend = createEventToSend("/eventsAfterTransformation/ves7_valid_event.json");
67
68     // when
69     eventSender.send(eventToSend);
70
71     //then
72     verifyThatEventWasSendAtStream("ves-fault");
73     verifyThatEventWasSendAtStream("fault-ves");
74   }
75
76   @Test
77   public void shouldSendStdDefinedEventAtStreamAssignedToEventDomain() throws IOException {
78     // given
79     EventSender eventSender = givenConfiguredEventSender(
80             HashMap.of("3GPP-FaultSupervision", new String[]{"ves-3gpp-fault-supervision"})
81     );
82     List<VesEvent> eventToSend = createEventToSend("/eventsAfterTransformation/ves_stdnDefined_valid.json");
83
84     // when
85     eventSender.send(eventToSend);
86
87     // then
88     verifyThatEventWasSendAtStream("ves-3gpp-fault-supervision");
89   }
90
91   @Test
92   public void shouldNotSendStndEventWhenStreamIsNotDefined() throws IOException {
93     // given
94     EventSender eventSender = givenConfiguredEventSender(HashMap.empty());
95     List<VesEvent> eventToSend = createEventToSend("/eventsAfterTransformation/ves_stdnDefined_valid.json");
96
97     // when
98     eventSender.send(eventToSend);
99
100     // then
101     verifyThatEventWasNotSendAtStream();
102   }
103
104   @Test
105   public void shouldReportThatNoStndDefinedNamespaceParameterIsDefinedInEvent() throws IOException {
106     // given
107     EventSender eventSender = givenConfiguredEventSender(HashMap.empty());
108     List<VesEvent> eventToSend = createEventToSend(
109             "/eventsAfterTransformation/ves_stdnDefined_missing_namespace_invalid.json"
110     );
111
112     // when
113     assertThatExceptionOfType(StndDefinedNamespaceParameterNotDefinedException.class)
114             .isThrownBy(() -> eventSender.send(eventToSend));
115
116     // then
117     verifyThatEventWasNotSendAtStream();
118   }
119
120   private List<VesEvent> createEventToSend(String path) throws IOException {
121     String event = JsonDataLoader.loadContent(path);
122     return givenEventToSend(event);
123   }
124
125   private EventSender givenConfiguredEventSender(io.vavr.collection.Map<String, String[]> streamIds) {
126     return new EventSender(eventPublisher, streamIds);
127   }
128
129   private List<VesEvent> givenEventToSend(String event) {
130     JSONObject jsonObject = new JSONObject(event);
131     return List.of(new VesEvent(jsonObject));
132   }
133
134   private void verifyThatEventWasNotSendAtStream() {
135     verify(eventPublisher,never()).sendEvent(any(),any());
136   }
137
138   private void verifyThatEventWasSendAtStream(String s) {
139     verify(eventPublisher).sendEvent(any(), eq(s));
140   }
141 }