Switched from Dropwizard to Springboot
[holmes/engine-management.git] / engine-d / src / test / java / org / onap / holmes / dsa / dmaappolling / SubscriberTest.java
1 /*
2  * Copyright 2017-2021 ZTE Corporation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.holmes.dsa.dmaappolling;
17
18 import org.junit.Before;
19 import org.junit.Rule;
20 import org.junit.Test;
21 import org.junit.rules.ExpectedException;
22 import org.junit.runner.RunWith;
23 import org.onap.holmes.common.api.stat.VesAlarm;
24 import org.onap.holmes.common.exception.CorrelationException;
25 import org.onap.holmes.common.utils.JerseyClient;
26 import org.onap.holmes.common.utils.SpringContextUtil;
27 import org.powermock.api.easymock.PowerMock;
28 import org.powermock.core.classloader.annotations.PowerMockIgnore;
29 import org.powermock.core.classloader.annotations.PrepareForTest;
30 import org.powermock.modules.junit4.PowerMockRunner;
31
32 import java.util.ArrayList;
33 import java.util.HashMap;
34 import java.util.List;
35 import java.util.Map;
36
37 import static org.easymock.EasyMock.*;
38 import static org.hamcrest.CoreMatchers.*;
39 import static org.junit.Assert.assertThat;
40
41 @RunWith(PowerMockRunner.class)
42 @PrepareForTest({SpringContextUtil.class, JerseyClient.class})
43 @PowerMockIgnore("javax.net.ssl.*")
44 public class SubscriberTest {
45
46     private DMaaPResponseUtil util = new DMaaPResponseUtil();
47
48     @Rule
49     public ExpectedException thrown = ExpectedException.none();
50
51     @Before
52     public void init() {
53         PowerMock.mockStatic(SpringContextUtil.class);
54         expect(SpringContextUtil.getBean(DMaaPResponseUtil.class)).andReturn(util).anyTimes();
55     }
56
57     @Test
58     public void subscribe_normal() throws Exception {
59         VesAlarm vesAlarm = new VesAlarm();
60         vesAlarm.setDomain("ONAP");
61         vesAlarm.setEventId("123");
62         vesAlarm.setEventName("Event-123");
63         vesAlarm.setEventType("EventType");
64         vesAlarm.setLastEpochMicrosec(1000L);
65         vesAlarm.setNfcNamingCode("123");
66         vesAlarm.setNfNamingCode("123");
67         vesAlarm.setPriority("high");
68         vesAlarm.setReportingEntityId("ID-123");
69         vesAlarm.setReportingEntityName("Name-123");
70         vesAlarm.setSequence(1);
71         vesAlarm.setSourceId("Source-123");
72         vesAlarm.setSourceName("Source-123");
73         vesAlarm.setStartEpochMicrosec(500L);
74         vesAlarm.setVersion("4.0");
75         Map alarmAdditionalFields = new HashMap<String, String>();
76         alarmAdditionalFields.put("addInfo", "addInfo");
77         vesAlarm.setAlarmAdditionalInformation(alarmAdditionalFields);
78         vesAlarm.setAlarmCondition("alarmCondition");
79         vesAlarm.setAlarmInterfaceA("alarmInterfaceA");
80         vesAlarm.setEventCategory("eventCategory");
81         vesAlarm.setEventSeverity("eventSeverity");
82         vesAlarm.setEventSourceType("eventSourceType");
83         vesAlarm.setFaultFieldsVersion("2.0");
84         vesAlarm.setSpecificProblem("specificProblem");
85         vesAlarm.setVfStatus("vfStatus");
86
87         String eventString = "{\"event\": {\"commonEventHeader\": {" +
88                 "\"domain\": \"ONAP\"," +
89                 "\"eventId\": \"123\"," +
90                 "\"eventName\": \"Event-123\"," +
91                 "\"eventType\": \"EventType\"," +
92                 "\"lastEpochMicrosec\": 1000," +
93                 "\"nfcNamingCode\": \"123\"," +
94                 "\"nfNamingCode\": \"123\"," +
95                 "\"priority\": \"high\"," +
96                 "\"reportingEntityId\": \"ID-123\"," +
97                 "\"reportingEntityName\": \"Name-123\"," +
98                 "\"sequence\": 1," +
99                 "\"sourceId\": \"Source-123\"," +
100                 "\"sourceName\": \"Source-123\"," +
101                 "\"startEpochMicrosec\": 500," +
102                 "\"version\": \"4.0\"" +
103                 "}," +
104                 " \"faultFields\" : {" +
105                 "\"alarmAdditionalInformatiddon\":[{\"name\":\"addInfo\", \"value\":\"addInfo\"}]," +
106                 "\"alarmCondition\": \"alarmCondition\"," +
107                 "\"alarmInterfaceA\": \"alarmInterfaceA\"," +
108                 "\"eventCategory\": \"eventCategory\"," +
109                 "\"eventSeverity\": \"eventSeverity\"," +
110                 "\"eventSourceType\": \"eventSourceType\"," +
111                 "\"faultFieldsVersion\": \"2.0\"," +
112                 "\"specificProblem\": \"specificProblem\"," +
113                 "\"vfStatus\": \"vfStatus\"" +
114                 "}}}";
115
116         List<String> responseList = new ArrayList<>();
117         responseList.add(eventString);
118
119         JerseyClient mockedClient = PowerMock.createMock(JerseyClient.class);
120         PowerMock.expectNew(JerseyClient.class).andReturn(mockedClient);
121         expect(mockedClient.path(anyString())).andReturn(mockedClient).times(2);
122         expect(mockedClient.queryParam(anyString(), anyInt())).andReturn(mockedClient);
123         expect(mockedClient.get(anyString(), anyObject())).andReturn(responseList);
124
125         PowerMock.replayAll();
126
127         Subscriber subscriber = new Subscriber();
128         subscriber.setUrl("https://www.onap.org");
129         subscriber.setConsumerGroup("group");
130         subscriber.setConsumer("consumer");
131         List<VesAlarm> vesAlarms = subscriber.subscribe();
132
133         PowerMock.verifyAll();
134
135         assertThat(vesAlarm.getEventName(), equalTo(vesAlarms.get(0).getEventName()));
136     }
137
138     @Test
139     public void subscribe_retrieve_data_exception() throws Exception {
140         thrown.expect(CorrelationException.class);
141         thrown.expectMessage("Failed to get data from DMaaP.");
142
143         VesAlarm vesAlarm = new VesAlarm();
144         vesAlarm.setDomain("ONAP");
145         vesAlarm.setEventId("123");
146         vesAlarm.setEventName("Event-123");
147         vesAlarm.setEventType("EventType");
148         vesAlarm.setLastEpochMicrosec(1000L);
149         vesAlarm.setNfcNamingCode("123");
150         vesAlarm.setNfNamingCode("123");
151         vesAlarm.setPriority("high");
152         vesAlarm.setReportingEntityId("ID-123");
153         vesAlarm.setReportingEntityName("Name-123");
154         vesAlarm.setSequence(1);
155         vesAlarm.setSourceId("Source-123");
156         vesAlarm.setSourceName("Source-123");
157         vesAlarm.setStartEpochMicrosec(500L);
158         vesAlarm.setVersion("4.0");
159         Map alarmAdditionalFields = new HashMap<String, String>();
160         alarmAdditionalFields.put("addInfo", "addInfo");
161         vesAlarm.setAlarmAdditionalInformation(alarmAdditionalFields);
162         vesAlarm.setAlarmCondition("alarmCondition");
163         vesAlarm.setAlarmInterfaceA("alarmInterfaceA");
164         vesAlarm.setEventCategory("eventCategory");
165         vesAlarm.setEventSeverity("eventSeverity");
166         vesAlarm.setEventSourceType("eventSourceType");
167         vesAlarm.setFaultFieldsVersion("2.0");
168         vesAlarm.setSpecificProblem("specificProblem");
169         vesAlarm.setVfStatus("vfStatus");
170
171         String eventString = "{\"event\": {\"commonEventHeader\": {" +
172                 "\"domain\": \"ONAP\"," +
173                 "\"eventId\": \"123\"," +
174                 "\"eventName\": \"Event-123\"," +
175                 "\"eventType\": \"EventType\"," +
176                 "\"lastEpochMicrosec\": 1000," +
177                 "\"nfcNamingCode\": \"123\"," +
178                 "\"nfNamingCode\": \"123\"," +
179                 "\"priority\": \"high\"," +
180                 "\"reportingEntityId\": \"ID-123\"," +
181                 "\"reportingEntityName\": \"Name-123\"," +
182                 "\"sequence\": 1," +
183                 "\"sourceId\": \"Source-123\"," +
184                 "\"sourceName\": \"Source-123\"," +
185                 "\"startEpochMicrosec\": 500," +
186                 "\"version\": \"4.0\"" +
187                 "}," +
188                 " \"faultFields\" : {" +
189                 "\"alarmAdditionalInformation\": [{\"name\":\"addInfo\", \"value\":\"addInfo\"}]," +
190                 "\"alarmCondition\": \"alarmCondition\"," +
191                 "\"alarmInterfaceA\": \"alarmInterfaceA\"," +
192                 "\"eventCategory\": \"eventCategory\"," +
193                 "\"eventSeverity\": \"eventSeverity\"," +
194                 "\"eventSourceType\": \"eventSourceType\"," +
195                 "\"faultFieldsVersion\": \"2.0\"," +
196                 "\"specificProblem\": \"specificProblem\"," +
197                 "\"vfStatus\": \"vfStatus\"" +
198                 "}}}";
199
200         List<String> responseList = new ArrayList<>();
201         responseList.add(eventString);
202
203         JerseyClient mockedClient = PowerMock.createMock(JerseyClient.class);
204         PowerMock.expectNew(JerseyClient.class).andReturn(mockedClient);
205         expect(mockedClient.path(anyString())).andReturn(mockedClient).times(2);
206         expect(mockedClient.queryParam(anyString(), anyInt())).andReturn(mockedClient);
207         expect(mockedClient.get(anyString(), anyObject())).andThrow(new RuntimeException());
208
209         PowerMock.replayAll();
210
211         Subscriber subscriber = new Subscriber();
212         subscriber.setUrl("https://www.onap.org");
213         subscriber.setConsumerGroup("group");
214         subscriber.setConsumer("consumer");
215
216         subscriber.subscribe();
217
218         PowerMock.verifyAll();
219     }
220
221     @Test
222     public void testSetterAndGetter() {
223
224         PowerMock.replayAll();
225
226         Subscriber subscriber = new Subscriber();
227         subscriber.setTimeout(100);
228         subscriber.setLimit(10);
229         subscriber.setPeriod(10);
230         subscriber.setSecure(false);
231         subscriber.setTopic("test");
232         subscriber.setUrl("http://localhost");
233         subscriber.setConsumerGroup("Group1");
234         subscriber.setConsumer("Consumer1");
235         subscriber.setAuthInfo(null);
236         subscriber.setAuthExpDate(null);
237
238         assertThat(subscriber.getTimeout(), is(100));
239         assertThat(subscriber.getLimit(), is(10));
240         assertThat(subscriber.getPeriod(), is(10));
241         assertThat(subscriber.isSecure(), is(false));
242         assertThat(subscriber.getTopic(), equalTo("test"));
243         assertThat(subscriber.getUrl(), equalTo("http://localhost"));
244         assertThat(subscriber.getConsumerGroup(), equalTo("Group1"));
245         assertThat(subscriber.getConsumer(), equalTo("Consumer1"));
246         assertThat(subscriber.getAuthInfo(), nullValue());
247         assertThat(subscriber.getAuthExpDate(), nullValue());
248
249         PowerMock.verifyAll();
250     }
251
252 }