AT&T 1712 and 1802 release code
[so.git] / mso-api-handlers / mso-api-handler-infra / src / test / java / org / openecomp / mso / apihandlerinfra / tenantisolation / process / ActivateVnfOperationalEnvironmentTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.mso.apihandlerinfra.tenantisolation.process;\r
22 \r
23 import static org.mockito.Matchers.any;\r
24 import static org.mockito.Mockito.doNothing;\r
25 import static org.mockito.Mockito.mock;\r
26 import static org.mockito.Mockito.spy;\r
27 import static org.mockito.Mockito.times;\r
28 import static org.mockito.Mockito.verify;\r
29 \r
30 import java.util.ArrayList;\r
31 import java.util.List;\r
32 \r
33 import org.json.JSONObject;\r
34 import org.junit.After;\r
35 import org.junit.Assert;\r
36 import org.junit.BeforeClass;\r
37 import org.junit.Test;\r
38 import org.mockito.Mockito;\r
39 import org.openecomp.mso.apihandlerinfra.Constants;\r
40 import org.openecomp.mso.apihandlerinfra.MsoPropertiesUtils;\r
41 import org.openecomp.mso.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;\r
42 import org.openecomp.mso.apihandlerinfra.tenantisolation.helpers.AAIClientHelper;\r
43 import org.openecomp.mso.apihandlerinfra.tenantisolation.helpers.AsdcClientHelper;\r
44 import org.openecomp.mso.apihandlerinfra.tenantisolationbeans.Manifest;\r
45 import org.openecomp.mso.apihandlerinfra.tenantisolationbeans.RecoveryAction;\r
46 import org.openecomp.mso.apihandlerinfra.tenantisolationbeans.RequestDetails;\r
47 import org.openecomp.mso.apihandlerinfra.tenantisolationbeans.RequestParameters;\r
48 import org.openecomp.mso.apihandlerinfra.tenantisolationbeans.ServiceModelList;\r
49 import org.openecomp.mso.client.aai.entities.AAIResultWrapper;\r
50 import org.openecomp.mso.properties.MsoJavaProperties;\r
51 import org.openecomp.mso.properties.MsoPropertiesFactory;\r
52 import org.openecomp.mso.requestsdb.OperationalEnvDistributionStatusDb;\r
53 import org.openecomp.mso.requestsdb.OperationalEnvServiceModelStatusDb;\r
54 import org.openecomp.mso.requestsdb.RequestsDBHelper;\r
55 import org.openecomp.mso.rest.APIResponse;\r
56 import org.openecomp.mso.rest.RESTClient;\r
57 import org.openecomp.mso.rest.RESTConfig;\r
58 \r
59 public class ActivateVnfOperationalEnvironmentTest {\r
60 \r
61         MsoJavaProperties properties = MsoPropertiesUtils.loadMsoProperties();\r
62         AsdcClientHelper asdcClientUtils = new AsdcClientHelper(properties);\r
63         \r
64         String requestId = "TEST_requestId";\r
65         String operationalEnvironmentId = "TEST_operationalEnvironmentId";      \r
66         CloudOrchestrationRequest request = new CloudOrchestrationRequest();\r
67         String workloadContext = "TEST_workloadContext";\r
68         String recoveryAction  = "RETRY";\r
69         String serviceModelVersionId = "TEST_serviceModelVersionId";    \r
70         int retryCount = 3;\r
71         String distributionId = "TEST_distributionId";\r
72         \r
73         @BeforeClass\r
74         public static void setUp() throws Exception {\r
75                 MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();\r
76                 msoPropertiesFactory.removeAllMsoProperties();\r
77                 msoPropertiesFactory.initializeMsoProperties(Constants.MSO_PROP_APIHANDLER_INFRA, "src/test/resources/mso.apihandler-infra.properties");\r
78         }       \r
79         \r
80         @After\r
81         public void tearDown() throws Exception {\r
82                 \r
83         }\r
84 \r
85         @Test\r
86         public void getAAIClientHelperTest() throws Exception {\r
87                 \r
88                 request.setOperationalEnvironmentId(operationalEnvironmentId);\r
89                 ActivateVnfOperationalEnvironment activateVnf = new ActivateVnfOperationalEnvironment(request, requestId);\r
90                 AAIClientHelper aaiHelper = activateVnf.getAaiHelper();\r
91                 \r
92                 Assert.assertNotNull(aaiHelper);\r
93                 \r
94         }\r
95         \r
96         @Test\r
97         public void getAAIOperationalEnvironmentTest() throws Exception {\r
98 \r
99                 // prepare return data\r
100                 JSONObject aaiJsonResponse = new JSONObject();\r
101                 aaiJsonResponse.put("operational-environment-id", "testASDCDistributionId");\r
102                 aaiJsonResponse.put("operational-environment-name", "testASDCDistributionIName");\r
103                 aaiJsonResponse.put("operational-environment-type", "VNF");\r
104                 aaiJsonResponse.put("operational-environment-status", "ACTIVE");\r
105                 aaiJsonResponse.put("tenant-context", "Test");\r
106                 aaiJsonResponse.put("workload-context", "PVT");\r
107                 aaiJsonResponse.put("resource-version", "1505228226913");\r
108                 String mockGetResponseJson = aaiJsonResponse.toString();  \r
109                 \r
110                 AAIResultWrapper aaiREsultWrapperObj = new AAIResultWrapper(mockGetResponseJson);  \r
111                 \r
112                 request.setOperationalEnvironmentId(operationalEnvironmentId);\r
113                 AAIClientHelper aaiClientHelperMock = Mockito.mock(AAIClientHelper.class);\r
114                 \r
115                 ActivateVnfOperationalEnvironment activateVnfMock = Mockito.mock(ActivateVnfOperationalEnvironment.class);\r
116                 ActivateVnfOperationalEnvironment activateVnf = new ActivateVnfOperationalEnvironment(request, requestId);\r
117 \r
118                 Mockito.when(aaiClientHelperMock.getAaiOperationalEnvironment(operationalEnvironmentId)).thenReturn(aaiREsultWrapperObj);               \r
119                 \r
120                 activateVnfMock = spy(activateVnf);\r
121                 activateVnfMock.setAaiHelper(aaiClientHelperMock);\r
122                 activateVnfMock.getAAIOperationalEnvironment(operationalEnvironmentId);\r
123 \r
124                 verify(activateVnfMock, times(1)).getAaiHelper();\r
125                 verify(aaiClientHelperMock, times(1)).getAaiOperationalEnvironment( any(String.class) );\r
126                 \r
127         }       \r
128         \r
129         @Test\r
130         public void processActivateASDCRequestTest() throws Exception {\r
131 \r
132                 String jsonPayload = asdcClientUtils.buildJsonWorkloadContext(workloadContext);\r
133                 String distributionId = "TEST_distributionId";\r
134                 \r
135                 JSONObject jsonObject = new JSONObject();\r
136                 jsonObject.put("statusCode", "202");\r
137                 jsonObject.put("message", "Success");\r
138                 jsonObject.put("distributionId", distributionId);\r
139                 \r
140                 List<ServiceModelList> serviceModelVersionIdList = new ArrayList<ServiceModelList>();\r
141                 ServiceModelList serviceModelList1 = new ServiceModelList(); \r
142                 serviceModelList1.setRecoveryAction(RecoveryAction.retry);\r
143                 serviceModelList1.setServiceModelVersionId(serviceModelVersionId);\r
144                 serviceModelVersionIdList.add(serviceModelList1);\r
145                 \r
146                 ActivateVnfOperationalEnvironment activate = new ActivateVnfOperationalEnvironment(request, requestId);\r
147                 ActivateVnfOperationalEnvironment activateVnfMock = spy(activate);\r
148 \r
149                 // Mockito mock\r
150                 OperationalEnvDistributionStatusDb distributionDb = Mockito.mock(OperationalEnvDistributionStatusDb.class);\r
151                 OperationalEnvServiceModelStatusDb serviceModelDb = Mockito.mock(OperationalEnvServiceModelStatusDb.class);\r
152                 AsdcClientHelper asdcClientHelperMock = Mockito.mock(AsdcClientHelper.class);\r
153                 RESTConfig configMock = Mockito.mock(RESTConfig.class);\r
154                 RESTClient clientMock = Mockito.mock(RESTClient.class);\r
155                 APIResponse apiResponseMock = Mockito.mock(APIResponse.class);\r
156                 \r
157                 activateVnfMock.setOperationalEnvDistributionStatusDb(distributionDb);\r
158                 activateVnfMock.setOperationalEnvServiceModelStatusDb(serviceModelDb);\r
159                 activateVnfMock.setAsdcClientHelper(asdcClientHelperMock);\r
160                 \r
161                 Mockito.when(asdcClientHelperMock.setRestClient(configMock)).thenReturn(clientMock);\r
162                 Mockito.when(asdcClientHelperMock.setHttpPostResponse(clientMock, jsonPayload)).thenReturn(apiResponseMock);\r
163                 Mockito.when(asdcClientHelperMock.enhanceJsonResponse(jsonObject, 202)).thenReturn(jsonObject);\r
164                 Mockito.when(asdcClientHelperMock.postActivateOperationalEnvironment(serviceModelVersionId, operationalEnvironmentId, workloadContext)).thenReturn(jsonObject);         \r
165                 \r
166                 activateVnfMock.processActivateASDCRequest(requestId, operationalEnvironmentId, serviceModelVersionIdList, workloadContext);\r
167                 \r
168                 verify(serviceModelDb, times(1)).insertOperationalEnvServiceModelStatus(requestId, operationalEnvironmentId, serviceModelVersionId, "SENT", "RETRY", retryCount, workloadContext);\r
169                 \r
170         }       \r
171         \r
172         @Test\r
173         public void executionTest() throws Exception {\r
174 \r
175                 // prepare request detail\r
176                 List<ServiceModelList> serviceModelVersionIdList = new ArrayList<ServiceModelList>();\r
177                 ServiceModelList serviceModelList1 = new ServiceModelList(); \r
178                 serviceModelList1.setRecoveryAction(RecoveryAction.retry);\r
179                 serviceModelList1.setServiceModelVersionId(serviceModelVersionId);\r
180                 serviceModelVersionIdList.add(serviceModelList1);\r
181                 \r
182                 RequestDetails requestDetails = new RequestDetails();\r
183                 RequestParameters requestParameters = new RequestParameters();\r
184                 Manifest manifest = new Manifest();\r
185                 manifest.setServiceModelList(serviceModelVersionIdList);\r
186                 requestParameters.setManifest(manifest);\r
187                 requestParameters.setWorkloadContext(workloadContext);\r
188                 requestDetails.setRequestParameters(requestParameters);\r
189                 \r
190                 // prepare aai return data\r
191                 JSONObject aaiJsonResponse = new JSONObject();\r
192                 aaiJsonResponse.put("operational-environment-id", "testASDCDistributionId");\r
193                 aaiJsonResponse.put("operational-environment-name", "testASDCDistributionIName");\r
194                 aaiJsonResponse.put("operational-environment-type", "VNF");\r
195                 aaiJsonResponse.put("operational-environment-status", "ACTIVE");\r
196                 aaiJsonResponse.put("tenant-context", "Test");\r
197                 aaiJsonResponse.put("workload-context", workloadContext);\r
198                 aaiJsonResponse.put("resource-version", "1505228226913");\r
199                 String mockGetResponseJson = aaiJsonResponse.toString();  \r
200                 AAIResultWrapper aaiREsultWrapperObj = new AAIResultWrapper(mockGetResponseJson);  \r
201                 \r
202                 // prepare asdc return data\r
203                 String jsonPayload = asdcClientUtils.buildJsonWorkloadContext(workloadContext);\r
204         \r
205                 JSONObject jsonObject = new JSONObject();\r
206                 jsonObject.put("statusCode", "202");\r
207                 jsonObject.put("message", "Success");\r
208                 jsonObject.put("distributionId", distributionId);\r
209                 \r
210                 // Mockito mock\r
211                 OperationalEnvDistributionStatusDb distributionDb = Mockito.mock(OperationalEnvDistributionStatusDb.class);\r
212                 OperationalEnvServiceModelStatusDb serviceModelDb = Mockito.mock(OperationalEnvServiceModelStatusDb.class);\r
213                 RequestsDBHelper dbUtils = mock(RequestsDBHelper.class);\r
214                 AsdcClientHelper asdcClientHelperMock = Mockito.mock(AsdcClientHelper.class);\r
215                 RESTConfig configMock = Mockito.mock(RESTConfig.class);\r
216                 RESTClient clientMock = Mockito.mock(RESTClient.class);\r
217                 APIResponse apiResponseMock = Mockito.mock(APIResponse.class);          \r
218         \r
219                 Mockito.when(asdcClientHelperMock.setRestClient(configMock)).thenReturn(clientMock);\r
220                 Mockito.when(asdcClientHelperMock.setHttpPostResponse(clientMock, jsonPayload)).thenReturn(apiResponseMock);\r
221                 Mockito.when(asdcClientHelperMock.enhanceJsonResponse(jsonObject, 202)).thenReturn(jsonObject);         \r
222                 \r
223                 AAIClientHelper aaiClientHelperMock = Mockito.mock(AAIClientHelper.class);\r
224                 Mockito.when(aaiClientHelperMock.getAaiOperationalEnvironment(operationalEnvironmentId)).thenReturn(aaiREsultWrapperObj);               \r
225                 Mockito.when(asdcClientHelperMock.postActivateOperationalEnvironment(serviceModelVersionId, operationalEnvironmentId, workloadContext)).thenReturn(jsonObject);         \r
226                 \r
227                 doNothing().when(serviceModelDb).insertOperationalEnvServiceModelStatus(requestId, operationalEnvironmentId, serviceModelVersionId, "SENT", recoveryAction, retryCount, workloadContext);\r
228                 doNothing().when(distributionDb).insertOperationalEnvDistributionStatus(distributionId, operationalEnvironmentId, serviceModelVersionId, "SENT", requestId);\r
229         \r
230                 request.setOperationalEnvironmentId(operationalEnvironmentId);\r
231                 request.setRequestDetails(requestDetails);\r
232                 ActivateVnfOperationalEnvironment activate = new ActivateVnfOperationalEnvironment(request, requestId);\r
233                 ActivateVnfOperationalEnvironment activateVnfMock = spy(activate);\r
234                 activateVnfMock.setOperationalEnvDistributionStatusDb(distributionDb);\r
235                 activateVnfMock.setOperationalEnvServiceModelStatusDb(serviceModelDb);\r
236                 activateVnfMock.setRequestsDBHelper(dbUtils);           \r
237                 activateVnfMock.setAsdcClientHelper(asdcClientHelperMock);\r
238                 activateVnfMock.setAaiHelper(aaiClientHelperMock);\r
239 \r
240                 activateVnfMock.execute();              \r
241                 \r
242                 verify(serviceModelDb, times(1)).insertOperationalEnvServiceModelStatus(requestId, operationalEnvironmentId, serviceModelVersionId, "SENT", recoveryAction, retryCount, workloadContext);\r
243                 verify(distributionDb, times(1)).insertOperationalEnvDistributionStatus(distributionId, operationalEnvironmentId, serviceModelVersionId, "SENT", requestId);            \r
244                 \r
245                 \r
246         }                       \r
247         \r
248         \r
249 }\r