Development of NETCONF RPCs for tr-069 adapter to
[oam/tr069-adapter.git] / acs / application-booter / src / test / java / org / commscope / tr069adapter / acs / cpe / deviceconnection / DeviceConnectTest.java
1 /*
2  * ============LICENSE_START========================================================================
3  * ONAP : tr-069-adapter
4  * =================================================================================================
5  * Copyright (C) 2020 CommScope Inc Intellectual Property.
6  * =================================================================================================
7  * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,
8  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You
9  * may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14  * either express or implied. See the License for the specific language governing permissions and
15  * limitations under the License.
16  * ===============LICENSE_END=======================================================================
17  */
18
19 package org.commscope.tr069adapter.acs.cpe.deviceconnection;
20
21 import static org.junit.Assert.assertTrue;
22 import static org.junit.Assert.fail;
23
24 import java.io.Serializable;
25 import java.util.Date;
26
27 import org.apache.activemq.broker.BrokerService;
28 import org.commscope.tr069adapter.acs.booter.ACSServiceBooter;
29 import org.commscope.tr069adapter.acs.common.DeviceRPCResponse;
30 import org.commscope.tr069adapter.acs.common.OperationResponse;
31 import org.commscope.tr069adapter.acs.common.dto.TR069DeviceDetails;
32 import org.commscope.tr069adapter.acs.common.dto.TR069OperationCode;
33 import org.commscope.tr069adapter.acs.common.utils.AcsConstants;
34 import org.commscope.tr069adapter.acs.cpe.handler.ConnectionReqEventHandler;
35 import org.commscope.tr069adapter.acs.cpe.utils.DeviceConnector;
36 import org.commscope.tr069adapter.acs.requestprocessor.dao.DeviceRepository;
37 import org.commscope.tr069adapter.acs.requestprocessor.entity.TR069DeviceEntity;
38 import org.commscope.tr069adapter.common.timer.TimerServiceManagerAPI;
39 import org.junit.After;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 import org.mockito.Mockito;
43 import org.springframework.beans.factory.annotation.Autowired;
44 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
45 import org.springframework.boot.test.context.SpringBootTest;
46 import org.springframework.boot.test.mock.mockito.MockBean;
47 import org.springframework.test.context.ContextConfiguration;
48 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
49
50 @SpringBootTest(classes = {ACSServiceBooter.class})
51 @RunWith(SpringJUnit4ClassRunner.class)
52 @AutoConfigureMockMvc
53 @ContextConfiguration
54 public class DeviceConnectTest {
55
56   @Autowired
57   ConnectionReqEventHandler connectionReqEventHandler;
58
59   @MockBean
60   private DeviceConnector deviceConnector;
61
62   @MockBean
63   private TimerServiceManagerAPI timerServiceManagerAPI;
64
65   @Autowired
66   BrokerService broker;
67
68   @MockBean
69   private DeviceRepository deviceRepository;
70
71
72   @Test
73   public void deviceConnect() {
74     try {
75       Mockito.doNothing().when(timerServiceManagerAPI).startTimer(Mockito.anyString(),
76           Mockito.anyString(), Mockito.anyLong(), Mockito.any(Serializable.class));
77
78       DeviceRPCResponse response = new DeviceRPCResponse();
79       OperationResponse operationResponse = new OperationResponse();
80       operationResponse.setOperationCode(TR069OperationCode.INITIATE_CR);
81       operationResponse.setStatus(AcsConstants.HTTP_STATUS_OK);
82       response.setOperationResponse(operationResponse);
83       Mockito.when(deviceConnector.requestConnectionHttp(Mockito.any(TR069DeviceDetails.class)))
84           .thenReturn(response);
85
86       TR069DeviceDetails deviceDetails = new TR069DeviceDetails();
87       deviceDetails.setDeviceId("0005B9AAAA22");
88       deviceDetails.setConnectionRequestURL("http://10.10.10.10:8888/connect/device");
89
90       TR069DeviceEntity tr069DeviceEntity = new TR069DeviceEntity();
91       tr069DeviceEntity.setDeviceId(deviceDetails.getDeviceId());
92       tr069DeviceEntity.setUserName(deviceDetails.getUsername());
93       tr069DeviceEntity.setPassword(deviceDetails.getPassword());
94       tr069DeviceEntity.setLastUpdatedTime(new Date());
95       tr069DeviceEntity.setConnStatus(true);
96       tr069DeviceEntity.setErrorMsg(null);
97
98       if (deviceDetails.getSoftwareVersion() != null) {
99         tr069DeviceEntity.setSwVersion(deviceDetails.getSoftwareVersion());
100       }
101       if (deviceDetails.getHardwareVersion() != null) {
102         tr069DeviceEntity.setHwVersion(deviceDetails.getHardwareVersion());
103       }
104       Mockito.when(deviceRepository.findByDeviceId(Mockito.anyString()))
105           .thenReturn(tr069DeviceEntity);
106
107       Mockito.when(deviceRepository.save(Mockito.any(TR069DeviceEntity.class)))
108           .thenReturn(tr069DeviceEntity);
109
110       connectionReqEventHandler.onMessage(deviceDetails);
111
112       assertTrue(true);
113     } catch (Exception e) {
114       fail(e.getMessage());
115     }
116
117   }
118
119   @After
120   public void stopBroker() throws Exception {
121     try {
122       System.out.println("Tearing down the broker");
123       broker.stop();
124       broker.waitUntilStopped();
125       broker = null;
126     } catch (Exception e) {
127       e.printStackTrace();
128     }
129   }
130 }