ba213f6a7b15f890c50f07e523e2e325be885f9f
[oam/tr069-adapter.git] / mapper / src / test / java / org / commscope / tr069adapter / mapper / NetConfRequestReceiverTest.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.mapper;\r
20 \r
21 import static org.junit.Assert.assertFalse;\r
22 \r
23 import java.util.ArrayList;\r
24 import java.util.Map;\r
25 import java.util.concurrent.Semaphore;\r
26 \r
27 import org.commscope.tr069adapter.acs.common.DeviceDetails;\r
28 import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;\r
29 import org.commscope.tr069adapter.acs.common.OperationResponse;\r
30 import org.commscope.tr069adapter.acs.common.ParameterDTO;\r
31 import org.commscope.tr069adapter.mapper.acs.ACSRequestSender;\r
32 import org.commscope.tr069adapter.mapper.boot.MapperServiceBooter;\r
33 import org.commscope.tr069adapter.mapper.model.NetConfRequest;\r
34 import org.commscope.tr069adapter.mapper.model.NetConfResponse;\r
35 import org.commscope.tr069adapter.mapper.model.NetConfServerDetails;\r
36 import org.commscope.tr069adapter.mapper.netconf.controller.NetConfRequestReceiver;\r
37 import org.commscope.tr069adapter.mapper.sync.SynchronizedRequestHandler;\r
38 import org.junit.Assert;\r
39 import org.junit.Test;\r
40 import org.junit.runner.RunWith;\r
41 import org.mockito.Mockito;\r
42 import org.springframework.beans.factory.annotation.Autowired;\r
43 import org.springframework.boot.test.context.SpringBootTest;\r
44 import org.springframework.boot.test.mock.mockito.MockBean;\r
45 import org.springframework.test.context.junit4.SpringRunner;\r
46 \r
47 @SpringBootTest(classes = {MapperServiceBooter.class})\r
48 @RunWith(SpringRunner.class)\r
49 public class NetConfRequestReceiverTest {\r
50 \r
51   @Autowired\r
52   NetConfRequestReceiver receiver;\r
53 \r
54   @MockBean\r
55   ACSRequestSender tr069RequestSender;\r
56 \r
57   @MockBean\r
58   Semaphore semaphore;\r
59 \r
60   @MockBean\r
61   SynchronizedRequestHandler sync;\r
62 \r
63   @MockBean\r
64   Map<Long, DeviceRPCResponse> opResultMap;\r
65 \r
66   @Test\r
67   public void getConfigRequestTest() {\r
68     Mockito.when(tr069RequestSender.sendRequest(Mockito.anyObject())).thenReturn(10001L);\r
69     Mockito.when(sync.performDeviceOperation(Mockito.anyObject()))\r
70         .thenReturn(prepareDeviceResponseSucess());\r
71 \r
72     NetConfRequest req = prepareNetConfRequest(\r
73         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><get-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><source><running /></source><filter xmlns:ns0=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ns0:type=\"subtree\"><device xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc/></lte></cell-config></fap-service></services></device></filter></get-config>");\r
74     NetConfResponse nfres = receiver.getConfigRequest(req);\r
75     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
76     Assert.assertNotNull(nfres.getNetconfResponseXml());\r
77   }\r
78 \r
79   @Test\r
80   public void getConfigRequestTestTimeOut() throws InterruptedException {\r
81     Mockito.when(tr069RequestSender.sendRequest(Mockito.anyObject())).thenReturn(10001L);\r
82     Mockito.when(semaphore.tryAcquire(Mockito.anyInt(), Mockito.anyObject())).thenReturn(true);\r
83     Mockito.when(opResultMap.remove(Mockito.anyLong())).thenReturn(prepareDeviceResponseSucess());\r
84 \r
85     NetConfRequest req = prepareNetConfRequest(\r
86         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><get-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><source><running /></source><filter xmlns:ns0=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ns0:type=\"subtree\"><device xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc/></lte></cell-config></fap-service></services></device></filter></get-config>");\r
87     NetConfResponse nfres = receiver.getConfigRequest(req);\r
88     Assert.assertEquals("8006", nfres.getErrorCode().getFaultCode());\r
89     Assert.assertNull(nfres.getNetconfResponseXml());\r
90     Assert.assertEquals("Operation Timed out", nfres.getErrorCode().getErrorMessage());\r
91   }\r
92 \r
93   @Test\r
94   public void getConfigRequestWithNoParamTest() {\r
95     NetConfRequest req = prepareNetConfRequest(\r
96         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><get-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><source><running /></source><filter xmlns:ns0=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ns0:type=\"subtree\"></filter></get-config>");\r
97     NetConfResponse nfres = receiver.getConfigRequest(req);\r
98     Assert.assertNull(nfres.getNetconfResponseXml());\r
99     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
100 \r
101   }\r
102 \r
103   @Test\r
104   public void getConfigRequestWithUnknownParamTest() {\r
105     NetConfRequest req = prepareNetConfRequest(\r
106         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><get-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><source><running /></source><filter xmlns:ns0=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ns0:type=\"subtree\"><Intergateway xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc/></lte></cell-config></fap-service></services></Intergateway></filter></get-config>");\r
107     NetConfResponse nfres = receiver.getRequest(req);\r
108     Assert.assertNull(nfres.getNetconfResponseXml());\r
109     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
110     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
111   }\r
112 \r
113   @Test\r
114   public void getRequestTest() {\r
115     Mockito.when(tr069RequestSender.sendRequest(Mockito.anyObject())).thenReturn(10001L);\r
116     Mockito.when(sync.performDeviceOperation(Mockito.anyObject()))\r
117         .thenReturn(prepareDeviceResponseSucess());\r
118     NetConfRequest req = prepareNetConfRequest(\r
119         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><get xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><source><running /></source><filter xmlns:ns0=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ns0:type=\"subtree\"><device xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc/></lte></cell-config></fap-service></services></device></filter></get>");\r
120     NetConfResponse nfres = receiver.getRequest(req);\r
121     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
122     Assert.assertNotNull(nfres.getNetconfResponseXml());\r
123   }\r
124 \r
125   @Test\r
126   public void getRequestWithNoParamTest() {\r
127     NetConfRequest req = prepareNetConfRequest(\r
128         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><get xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><source><running /></source><filter xmlns:ns0=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ns0:type=\"subtree\"></filter></get>");\r
129     NetConfResponse nfres = receiver.getRequest(req);\r
130     Assert.assertNull(nfres.getNetconfResponseXml());\r
131     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
132     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
133   }\r
134 \r
135   @Test\r
136   public void getRequestWithUnknownParamTest() {\r
137     NetConfRequest req = prepareNetConfRequest(\r
138         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><get xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><source><running /></source><filter xmlns:ns0=\"urn:ietf:params:xml:ns:netconf:base:1.0\" ns0:type=\"subtree\"><Intergateway xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc/></lte></cell-config></fap-service></services></Intergateway></filter></get>");\r
139     NetConfResponse nfres = receiver.getRequest(req);\r
140     Assert.assertNull(nfres.getNetconfResponseXml());\r
141     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
142     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
143   }\r
144 \r
145   @Test\r
146   public void setConfigRequestTest() {\r
147     Mockito.when(tr069RequestSender.sendRequest(Mockito.anyObject())).thenReturn(10001L);\r
148     Mockito.when(sync.performDeviceOperation(Mockito.anyObject()))\r
149         .thenReturn(prepareSPVDeviceResponseSucess());\r
150     NetConfRequest req = prepareNetConfRequest(\r
151         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><edit-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><target><candidate/></target><config><device xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc xmlns:a=\"urn:ietf:params:xml:ns:netconf:base:1.0\" a:operation=\"replace\"><plmn-list><index>1</index><plmnid>310767</plmnid><is-primary>false</is-primary><cell-reserved-for-operator-use>true</cell-reserved-for-operator-use><alias>cpe-131</alias><enable>true</enable></plmn-list></epc></lte></cell-config></fap-service></services></device></config></edit-config>");\r
152     NetConfResponse nfres = receiver.setConfigRequest(req);\r
153     Assert.assertNull(nfres.getNetconfResponseXml());\r
154     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
155     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
156   }\r
157 \r
158   @Test\r
159   public void setConfigRequestWithErrorResTest() {\r
160     Mockito.when(tr069RequestSender.sendRequest(Mockito.anyObject())).thenReturn(10001L);\r
161     Mockito.when(sync.performDeviceOperation(Mockito.anyObject()))\r
162         .thenReturn(prepareDeviceResponseError());\r
163     NetConfRequest req = prepareNetConfRequest(\r
164         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><edit-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><target><candidate/></target><config><device xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc xmlns:a=\"urn:ietf:params:xml:ns:netconf:base:1.0\" a:operation=\"replace\"><plmn-list><index>1</index><plmnid>310767</plmnid><is-primary>false</is-primary><cell-reserved-for-operator-use>true</cell-reserved-for-operator-use><alias>cpe-131</alias><enable>true</enable></plmn-list></epc></lte></cell-config></fap-service></services></device></config></edit-config>");\r
165     NetConfResponse nfres = receiver.setConfigRequest(req);\r
166     Assert.assertNull(nfres.getNetconfResponseXml());\r
167     Assert.assertEquals("9001", nfres.getErrorCode().getFaultCode());\r
168     Assert.assertEquals("Request denied", nfres.getErrorCode().getErrorMessage());\r
169   }\r
170 \r
171   @Test\r
172   public void setConfigRequestWithNoParamTest() {\r
173     NetConfRequest req = prepareNetConfRequest(\r
174         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><edit-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><target><candidate/></target><config></config></edit-config>");\r
175     NetConfResponse nfres = receiver.setConfigRequest(req);\r
176     Assert.assertNull(nfres.getNetconfResponseXml());\r
177     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
178     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
179   }\r
180 \r
181   @Test\r
182   public void setConfigRequestWithUnknowParatmerTest() {\r
183     NetConfRequest req = prepareNetConfRequest(\r
184         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><edit-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><target><candidate/></target><config><InternetGateway xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc xmlns:a=\"urn:ietf:params:xml:ns:netconf:base:1.0\" a:operation=\"replace\"><plmn-list><index>1</index><plmnid>310767</plmnid><is-primary>false</is-primary><cell-reserved-for-operator-use>true</cell-reserved-for-operator-use><alias>cpe-131</alias><enable>true</enable></plmn-list></epc></lte></cell-config></fap-service></services></InternetGateway></config></edit-config>");\r
185     NetConfResponse nfres = receiver.setConfigRequest(req);\r
186     Assert.assertNull(nfres.getNetconfResponseXml());\r
187     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
188     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
189   }\r
190 \r
191   @Test\r
192   public void setConfigRequestInvalidRequestXMLTest() {\r
193     NetConfRequest req = prepareNetConfRequest(\r
194         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><edit-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><target><candidate/></target><confg><device xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc xmlns:a=\"urn:ietf:params:xml:ns:netconf:base:1.0\" a:operation=\"replace\"><plmn-list><index>1</index><plmnid>310767</plmnid><is-primary>false<is-primary><cell-reserved-for-operator-use>true<cell-reserved-for-operator-use><name>cpe-131</name><trust>true</trust></plmn-list></epc></lte></cell-config></fap-service></services></device></config></edit-config>");\r
195     NetConfResponse nfres = receiver.setConfigRequest(req);\r
196     Assert.assertNull(nfres.getNetconfResponseXml());\r
197     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
198   }\r
199 \r
200   @Test\r
201   public void delConfigRequestTest() {\r
202     Mockito.when(tr069RequestSender.sendRequest(Mockito.anyObject())).thenReturn(10001L);\r
203     Mockito.when(sync.performDeviceOperation(Mockito.anyObject()))\r
204         .thenReturn(prepareSPVDeviceResponseSucess());\r
205     NetConfRequest req = prepareNetConfRequest(\r
206         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><edit-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><target><candidate/></target><config><device xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc xmlns:a=\"urn:ietf:params:xml:ns:netconf:base:1.0\" a:operation=\"replace\"><plmn-list><index>1</index><plmnid>310767</plmnid><is-primary>false</is-primary><cell-reserved-for-operator-use>true</cell-reserved-for-operator-use><name>cpe-131</name><trust>true</trust></plmn-list></epc></lte></cell-config></fap-service></services></device></config></edit-config>");\r
207     NetConfResponse nfres = receiver.delConfigRequest(req);\r
208     Assert.assertNull(nfres.getNetconfResponseXml());\r
209     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
210     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
211   }\r
212 \r
213   @Test\r
214   public void delConfigwithUnknownParamterRequestTest() {\r
215     NetConfRequest req = prepareNetConfRequest(\r
216         "<?xml version=\"1.0\" encoding=\"UTF-8\"?><edit-config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><target><candidate/></target><config><InternetGateway xmlns=\"urn:onf:otcc:wireless:yang:radio-access-186\"><services><fap-service xmlns=\"urn:onf:otcc:wireless:yang:radio-access\"><index>1</index><cell-config><lte><epc xmlns:a=\"urn:ietf:params:xml:ns:netconf:base:1.0\" a:operation=\"replace\"><plmn-list><index>1</index><plmnid>310767</plmnid><is-primary>false</is-primary><cell-reserved-for-operator-use>true</cell-reserved-for-operator-use><name>cpe-131</name><trust>true</trust></plmn-list></epc></lte></cell-config></fap-service></services></InternetGateway></config></edit-config>");\r
217     NetConfResponse nfres = receiver.delConfigRequest(req);\r
218     Assert.assertNull(nfres.getNetconfResponseXml());\r
219     Assert.assertEquals("0", nfres.getErrorCode().getFaultCode());\r
220     Assert.assertEquals("Success", nfres.getErrorCode().getErrorMessage());\r
221   }\r
222 \r
223   @Test\r
224   public void handelRegisterEventTest() {\r
225     try {\r
226       assertFalse(receiver\r
227           .handelRegisterEvent(new NetConfServerDetails("00005BA1", "10.211.55.14", "17830")));\r
228     } catch (Exception e) {\r
229     }\r
230 \r
231   }\r
232 \r
233   private NetConfRequest prepareNetConfRequest(String requestXml) {\r
234     NetConfRequest req = new NetConfRequest();\r
235     req.setDeviceId("0005B9A1");\r
236     req.setRequestXml(requestXml);\r
237     req.setSwVersion("4.3.0.0");\r
238     req.setHwVersion("*");\r
239     return req;\r
240   }\r
241 \r
242   private DeviceRPCResponse prepareDeviceResponseError() {\r
243     DeviceRPCResponse opResult = new DeviceRPCResponse();\r
244     opResult.setFaultKey("9001");\r
245     opResult.setFaultString("Request denied");\r
246     opResult.setDeviceDetails(new DeviceDetails());\r
247     OperationResponse opr = new OperationResponse();\r
248     // opr.setParameterDTOs(getGeneralParams());\r
249     opResult.setOperationResponse(opr);\r
250     return opResult;\r
251   }\r
252 \r
253   private DeviceRPCResponse prepareDeviceResponseSucess() {\r
254     DeviceRPCResponse opResult = new DeviceRPCResponse();\r
255     opResult.setFaultKey("0");\r
256     opResult.setDeviceDetails(new DeviceDetails());\r
257     OperationResponse opr = new OperationResponse();\r
258     opr.setParameterDTOs(getGeneralParams());\r
259     opResult.setOperationResponse(opr);\r
260     return opResult;\r
261   }\r
262 \r
263   private DeviceRPCResponse prepareSPVDeviceResponseSucess() {\r
264     DeviceRPCResponse opResult = new DeviceRPCResponse();\r
265     opResult.setFaultKey("0");\r
266     opResult.setDeviceDetails(new DeviceDetails());\r
267     OperationResponse opr = new OperationResponse();\r
268     opResult.setOperationResponse(opr);\r
269     return opResult;\r
270   }\r
271 \r
272   private ArrayList<ParameterDTO> getGeneralParams() {\r
273     ArrayList<ParameterDTO> params = new ArrayList<>();\r
274     params.add(new ParameterDTO("Device.DeviceInfo.ManufacturerOUI", "0005B9"));\r
275     params.add(new ParameterDTO("Device.DeviceInfo.ProductClass", "LTE_Enterprise_C-RANSC_Cntrl"));\r
276     params.add(new ParameterDTO("Device.Services.FAPService.1.CellConfig.LTE.EPC.PLMNList.1.PLMNID",\r
277         "30324"));\r
278     return params;\r
279   }\r
280 }\r