Initial source code
[oam/tr069-adapter.git] / ves-agent / src / test / java / org / commscope / tr069adapter / vesagent / test / VESAgentServiceRestTest.java
1 /*\r
2  * ============LICENSE_START========================================================================\r
3  * ONAP : tr-069-adapter\r
4  * =================================================================================================\r
5  * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
6  * =================================================================================================\r
7  * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
8  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
9  * may obtain a copy of the License at\r
10  *\r
11  * http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
14  * either express or implied. See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  * ===============LICENSE_END=======================================================================\r
17  */\r
18 \r
19 package org.commscope.tr069adapter.vesagent.test;\r
20 \r
21 import com.fasterxml.jackson.core.JsonProcessingException;\r
22 \r
23 import java.util.ArrayList;\r
24 \r
25 import org.commscope.tr069adapter.acs.common.DeviceDetails;\r
26 import org.commscope.tr069adapter.acs.common.DeviceInform;\r
27 import org.commscope.tr069adapter.acs.common.InformType;\r
28 import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
29 import org.commscope.tr069adapter.acs.common.dto.TR069InformType;\r
30 import org.commscope.tr069adapter.acs.common.inform.BootstrapInform;\r
31 import org.commscope.tr069adapter.acs.common.inform.PeriodicInform;\r
32 import org.commscope.tr069adapter.acs.common.inform.ValueChangeInform;\r
33 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;\r
34 import org.commscope.tr069adapter.mapper.model.VESNotification;\r
35 import org.commscope.tr069adapter.mapper.model.VESNotificationResponse;\r
36 import org.commscope.tr069adapter.vesagent.boot.VESAgentServiceBooter;\r
37 import org.commscope.tr069adapter.vesagent.controller.VESAgentService;\r
38 import org.commscope.tr069adapter.vesagent.exception.InvalidFaultOperationException;\r
39 import org.commscope.tr069adapter.vesagent.http.HttpRequestSender;\r
40 import org.junit.Assert;\r
41 import org.junit.Test;\r
42 import org.junit.runner.RunWith;\r
43 import org.mockito.Mockito;\r
44 import org.springframework.beans.factory.annotation.Autowired;\r
45 import org.springframework.boot.test.context.SpringBootTest;\r
46 import org.springframework.boot.test.mock.mockito.MockBean;\r
47 import org.springframework.http.HttpStatus;\r
48 import org.springframework.test.context.junit4.SpringRunner;\r
49 \r
50 @SpringBootTest(classes = {VESAgentServiceBooter.class})\r
51 @RunWith(SpringRunner.class)\r
52 // @WebMvcTest(VESAgentService.class)\r
53 public class VESAgentServiceRestTest {\r
54 \r
55   @Autowired\r
56   VESAgentService agent;\r
57 \r
58   @MockBean\r
59   HttpRequestSender sender;\r
60 \r
61   @Test\r
62   public void processPnfEventTest() throws JsonProcessingException, InvalidFaultOperationException {\r
63     VESNotificationResponse res =\r
64         new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
65     Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
66     VESNotification ves = new VESNotification();\r
67     ves.seteNodeBName("0005B9A1");\r
68     ves.setNetconfDetails(getNetConfDetails());\r
69     DeviceInform inform = new BootstrapInform();\r
70     inform.setDeviceDetails(getDeviceDetails());\r
71     ArrayList<InformType> list = new ArrayList<>();\r
72     list.add(TR069InformType.BOOTSTRAP);\r
73     inform.setInformTypeList(list);\r
74     inform.setParameters(getGeneralParams());\r
75     ves.setDevnotification(inform);\r
76 \r
77     VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
78     Assert.assertNotNull(vesResponse);\r
79     Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
80 \r
81   }\r
82 \r
83   @Test\r
84   public void processPnfEventWhenEnbNullTest() {\r
85     try {\r
86       VESNotificationResponse res =\r
87           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
88       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
89       VESNotification ves = new VESNotification();\r
90       ves.seteNodeBName(null);\r
91       ves.setNetconfDetails(getNetConfDetails());\r
92       DeviceInform inform = new BootstrapInform();\r
93       inform.setDeviceDetails(getDeviceDetails());\r
94       ArrayList<InformType> list = new ArrayList<>();\r
95       list.add(TR069InformType.BOOTSTRAP);\r
96       inform.setInformTypeList(list);\r
97       inform.setParameters(getGeneralParams());\r
98       ves.setDevnotification(inform);\r
99 \r
100       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
101       Assert.assertNotNull(vesResponse);\r
102       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
103       res.getStatusCode();\r
104     } catch (Exception e) {\r
105       e.printStackTrace();\r
106     }\r
107   }\r
108 \r
109   @Test\r
110   public void processFaultEventCriticalTest() {\r
111     try {\r
112       VESNotificationResponse res =\r
113           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
114       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
115       VESNotification ves = new VESNotification();\r
116       ves.seteNodeBName("0005B9A1");\r
117       ves.setNetconfDetails(getNetConfDetails());\r
118       DeviceInform inform = new ValueChangeInform();\r
119       inform.setDeviceDetails(getDeviceDetails());\r
120       ArrayList<InformType> list = new ArrayList<>();\r
121       list.add(TR069InformType.VALUECHANGE);\r
122       inform.setInformTypeList(list);\r
123       inform.setParameters(getFaultCritcalParams());\r
124       ves.setDevnotification(inform);\r
125 \r
126       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
127       Assert.assertNotNull(vesResponse);\r
128       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
129     } catch (Exception e) {\r
130       e.printStackTrace();\r
131     }\r
132   }\r
133 \r
134   @Test\r
135   public void processFaultEventWhenEnbNullTest() {\r
136     try {\r
137       VESNotificationResponse res =\r
138           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
139       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
140       VESNotification ves = new VESNotification();\r
141       ves.seteNodeBName(null);\r
142       ves.setNetconfDetails(getNetConfDetails());\r
143       DeviceInform inform = new ValueChangeInform();\r
144       inform.setDeviceDetails(getDeviceDetails());\r
145       ArrayList<InformType> list = new ArrayList<>();\r
146       list.add(TR069InformType.VALUECHANGE);\r
147       inform.setInformTypeList(list);\r
148       inform.setParameters(getFaultCritcalParams());\r
149       ves.setDevnotification(inform);\r
150 \r
151       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
152 \r
153       Assert.assertNotNull(vesResponse);\r
154       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
155     } catch (Exception e) {\r
156       e.printStackTrace();\r
157     }\r
158   }\r
159 \r
160   @Test\r
161   public void processFaultEventClearTest() {\r
162     try {\r
163       VESNotificationResponse res =\r
164           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
165       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
166       VESNotification ves = new VESNotification();\r
167       ves.seteNodeBName("0005B9A1");\r
168       ves.setNetconfDetails(getNetConfDetails());\r
169       DeviceInform inform = new ValueChangeInform();\r
170       inform.setDeviceDetails(getDeviceDetails());\r
171       ArrayList<InformType> list = new ArrayList<>();\r
172       list.add(TR069InformType.VALUECHANGE);\r
173       inform.setInformTypeList(list);\r
174       inform.setParameters(getFaultClearParams());\r
175       ves.setDevnotification(inform);\r
176 \r
177       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
178       Assert.assertNotNull(vesResponse);\r
179       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
180       res.getStatusCode();\r
181     } catch (Exception e) {\r
182       e.printStackTrace();\r
183     }\r
184   }\r
185 \r
186   @Test\r
187   public void processFaultEventTimeZoneTest() {\r
188     try {\r
189       VESNotificationResponse res =\r
190           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
191       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
192       VESNotification ves = new VESNotification();\r
193       ves.seteNodeBName("0005B9A1");\r
194       ves.setNetconfDetails(getNetConfDetails());\r
195       DeviceInform inform = new ValueChangeInform();\r
196       inform.setDeviceDetails(getDeviceDetails());\r
197       ArrayList<InformType> list = new ArrayList<>();\r
198       list.add(TR069InformType.VALUECHANGE);\r
199       inform.setInformTypeList(list);\r
200       inform.setParameters(getFaultClearParams());\r
201       ves.setDevnotification(inform);\r
202 \r
203       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
204       Assert.assertNotNull(vesResponse);\r
205       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
206       res.getStatusCode();\r
207     } catch (Exception e) {\r
208       e.printStackTrace();\r
209     }\r
210   }\r
211 \r
212   @Test\r
213   public void processHBEventTest() {\r
214     try {\r
215       VESNotificationResponse res =\r
216           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
217       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
218       VESNotification ves = new VESNotification();\r
219       ves.seteNodeBName("0005B9A1");\r
220       ves.setNetconfDetails(getNetConfDetails());\r
221       DeviceInform inform = new PeriodicInform();\r
222       inform.setDeviceDetails(getDeviceDetails());\r
223       ArrayList<InformType> list = new ArrayList<>();\r
224       list.add(TR069InformType.PERIODIC);\r
225       inform.setInformTypeList(list);\r
226       inform.setParameters(getGeneralParams());\r
227       ves.setDevnotification(inform);\r
228 \r
229       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
230       Assert.assertNotNull(vesResponse);\r
231       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
232       res.getStatusCode();\r
233     } catch (Exception e) {\r
234       e.printStackTrace();\r
235     }\r
236   }\r
237 \r
238   @Test\r
239   public void processHBEventWhenEnbNullTest() {\r
240     try {\r
241       VESNotificationResponse res =\r
242           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
243       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
244       VESNotification ves = new VESNotification();\r
245       ves.seteNodeBName(null);\r
246       ves.setNetconfDetails(getNetConfDetails());\r
247       DeviceInform inform = new PeriodicInform();\r
248       inform.setDeviceDetails(getDeviceDetails());\r
249       ArrayList<InformType> list = new ArrayList<>();\r
250       list.add(TR069InformType.PERIODIC);\r
251       inform.setInformTypeList(list);\r
252       inform.setParameters(getGeneralParams());\r
253       ves.setDevnotification(inform);\r
254 \r
255       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
256       Assert.assertNotNull(vesResponse);\r
257       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
258       res.getStatusCode();\r
259     } catch (Exception e) {\r
260       e.printStackTrace();\r
261     }\r
262   }\r
263 \r
264   @Test\r
265   public void processOnRestartEventTest() {\r
266     try {\r
267       VESNotificationResponse res =\r
268           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
269       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
270       VESNotification ves = new VESNotification();\r
271       ves.seteNodeBName("0005B9A1");\r
272       ves.setNetconfDetails(getNetConfDetails());\r
273       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
274       Assert.assertNotNull(vesResponse);\r
275       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
276     } catch (Exception e) {\r
277       e.printStackTrace();\r
278     }\r
279   }\r
280 \r
281   @Test\r
282   public void processOnRestartEventWhenEnbNullTest() {\r
283     try {\r
284       VESNotificationResponse res =\r
285           new VESNotificationResponse(HttpStatus.ACCEPTED.value(), "Sucess");\r
286       Mockito.when(sender.postRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(res);\r
287       VESNotification ves = new VESNotification();\r
288       ves.seteNodeBName("0005B9A1");\r
289       ves.setNetconfDetails(getNetConfDetails());\r
290       ves.getNetconfDetails().setEnodeBName(null);\r
291       VESNotificationResponse vesResponse = agent.processDeviceNotificationAsVESEvent(ves);\r
292       Assert.assertNotNull(vesResponse);\r
293       Assert.assertEquals(HttpStatus.ACCEPTED.value(), vesResponse.getStatusCode());\r
294     } catch (Exception e) {\r
295       e.printStackTrace();\r
296     }\r
297   }\r
298 \r
299 \r
300   private ArrayList<ParameterDTO> getFaultClearParams() {\r
301     ArrayList<ParameterDTO> params = new ArrayList<>();\r
302     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventTime", ""));\r
303     params\r
304         .add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AlarmIdentifier", "0005B9B5-100"));\r
305     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.NotificationType", "NewAlarm"));\r
306     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ManagedObjectInstance",\r
307         "Device.Services.FAPService.{i}.FAPControl.LTE"));\r
308     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventType", "S1 Connection"));\r
309     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ProbableCause",\r
310         "S1 connection failure"));\r
311     params.add(\r
312         new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.SpecificProblem", "Unsupported PLMN"));\r
313     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.PerceivedSeverity", "CLEAR"));\r
314     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalText",\r
315         "S1 connection setup FAILED Addional Text"));\r
316     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalInformation",\r
317         "S1 connection setup FAILED Aditional Inf"));\r
318     return params;\r
319   }\r
320 \r
321   private ArrayList<ParameterDTO> getFaultCritcalParams() {\r
322     ArrayList<ParameterDTO> params = new ArrayList<>();\r
323     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventTime", ""));\r
324     params\r
325         .add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AlarmIdentifier", "0005B9B5-100"));\r
326     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.NotificationType", "NewAlarm"));\r
327     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ManagedObjectInstance",\r
328         "Device.Services.FAPService.{i}.FAPControl.LTE"));\r
329     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.EventType", "S1 Connection"));\r
330     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.ProbableCause",\r
331         "S1 connection failure"));\r
332     params.add(\r
333         new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.SpecificProblem", "Unsupported PLMN"));\r
334     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.PerceivedSeverity", "CRITICAL"));\r
335     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalText",\r
336         "S1 connection setup FAILED Addional Text"));\r
337     params.add(new ParameterDTO("Device.FaultMgmt.ExpeditedEvent.1.AdditionalInformation",\r
338         "S1 connection setup FAILED Aditional Inf | TZD=UTC+00.00"));\r
339     return params;\r
340   }\r
341 \r
342 \r
343 \r
344   private ArrayList<ParameterDTO> getGeneralParams() {\r
345     ArrayList<ParameterDTO> params = new ArrayList<>();\r
346     params.add(new ParameterDTO("Device.DeviceInfo.ManufacturerOUI", "0005B9"));\r
347     params.add(new ParameterDTO("Device.DeviceInfo.ProductClass", "LTE_Enterprise_C-RANSC_Cntrl"));\r
348     params.add(new ParameterDTO("Device.DeviceInfo.HardwareVersion", "750742.00.04"));\r
349     params.add(new ParameterDTO("Device.DeviceInfo.SoftwareVersion", "4.3.00.231"));\r
350     params.add(new ParameterDTO("Device.DeviceInfo.Manufacturer", "ORAN"));\r
351     params.add(new ParameterDTO("Device.DeviceInfo.SerialNumber", "00005B9A1"));\r
352     params.add(new ParameterDTO("Device.IP.Interface.1.IPv4Address.1.IPAddress", "10.211.5.55"));\r
353     return params;\r
354   }\r
355 \r
356   private NetConfServerDetails getNetConfDetails() {\r
357     NetConfServerDetails nf = new NetConfServerDetails();\r
358     nf.setDeviceId("00005B9A1");\r
359     nf.setEnodeBName("0005B9A1");\r
360     nf.setListenAddress("10.211.5.27");\r
361     nf.setListenPort("17830");\r
362     return nf;\r
363   }\r
364 \r
365   private DeviceDetails getDeviceDetails() {\r
366     DeviceDetails nf = new DeviceDetails();\r
367     nf.setDeviceId("00005B9A1");\r
368     nf.setDeviceTypeId(50);\r
369     nf.setOui("0005B9");\r
370     nf.setProductClass("LTE_Enterprise_C-RANSC_Cntrl");\r
371     return nf;\r
372   }\r
373 }\r