Replaced all tabs with spaces in java and pom.xml
[so.git] / mso-api-handlers / mso-api-handler-infra / src / test / java / org / onap / so / apihandlerinfra / tenantisolation / process / ActivateVnfStatusOperationalEnvironmentTest.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.onap.so.apihandlerinfra.tenantisolation.process;
22
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
25 import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
26 import static com.github.tomakehurst.wiremock.client.WireMock.get;
27 import static com.github.tomakehurst.wiremock.client.WireMock.post;
28 import static com.github.tomakehurst.wiremock.client.WireMock.put;
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
30 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
31 import static org.hamcrest.Matchers.startsWith;
32 import static org.junit.Assert.assertEquals;
33 import static org.junit.Assert.assertThat;
34 import javax.ws.rs.core.HttpHeaders;
35 import javax.ws.rs.core.MediaType;
36 import org.apache.http.HttpStatus;
37 import org.json.JSONObject;
38 import org.junit.Ignore;
39 import org.junit.Rule;
40 import org.junit.Test;
41 import org.junit.rules.ExpectedException;
42 import org.onap.so.apihandler.common.ErrorNumbers;
43 import org.onap.so.apihandlerinfra.BaseTest;
44 import org.onap.so.apihandlerinfra.exceptions.ApiException;
45 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
46 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
47 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
48 import org.onap.so.apihandlerinfra.tenantisolationbeans.Status;
49 import org.onap.so.client.aai.AAIVersion;
50 import org.onap.so.db.request.beans.InfraActiveRequests;
51 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
52 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
53 import org.springframework.beans.factory.annotation.Autowired;
54 import com.fasterxml.jackson.core.JsonProcessingException;
55 import com.fasterxml.jackson.databind.ObjectMapper;
56
57 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest {
58
59     @Autowired
60     private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
61     @Rule
62     public ExpectedException thrown = ExpectedException.none();
63
64     private final String requestId = "TEST_requestId";
65     private final String requestIdOrig = "TEST_requestIdOrig";
66     private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";
67     private final String vnfOperationalEnvironmentId = "VNF_operationalEnvironmentId";
68     private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
69     private final String workloadContext = "TEST_workloadContext";
70     private final String recoveryActionRetry = "RETRY";
71     private final String recoveryActionAbort = "ABORT";
72     private final String recoveryActionSkip = "SKIP";
73     private final String serviceModelVersionId = "TEST_serviceModelVersionId";
74     private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
75     private final int retryCountThree = 3;
76     private final int retryCountTwo = 2;
77     private final int retryCountZero = 0;
78     private final String sdcDistributionId1 = "TEST_distributionId1";
79     private final String sdcDistributionId = "TEST_distributionId";
80     private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
81     private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
82     private final String statusSent = "SENT";
83     String json = "{\"operational-environment-status\" : \"INACTIVE\"}";
84
85     private final ObjectMapper mapper = new ObjectMapper();
86
87     @Test
88     public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
89
90         // two entries, both status Ok & retry 0
91         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
92         serviceModelDb.setRequestId(requestIdOrig);
93         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
94         serviceModelDb.setWorkloadContext(workloadContext);
95         serviceModelDb.setRecoveryAction(recoveryActionRetry);
96         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
97         serviceModelDb.setRetryCount(retryCountZero);
98         serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
99         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
100
101         serviceModelDb.setRequestId(requestIdOrig);
102         serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
103         serviceModelDb.setWorkloadContext(workloadContext);
104         serviceModelDb.setRecoveryAction(recoveryActionRetry);
105         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
106         serviceModelDb.setRetryCount(retryCountZero);
107         serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
108         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
109
110         InfraActiveRequests iar = new InfraActiveRequests();
111         iar.setRequestId(requestIdOrig);
112         iar.setRequestStatus("PENDING");
113
114         wireMockServer.stubFor(get(urlPathEqualTo(
115                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
116                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
117                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
118         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
119                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
120                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
121
122         activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
123
124         // overall is success
125     }
126
127     @Test
128     public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
129
130         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
131         serviceModelDb.setRequestId(requestIdOrig);
132         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
133         serviceModelDb.setWorkloadContext(workloadContext);
134         serviceModelDb.setRecoveryAction(recoveryActionRetry);
135         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
136         serviceModelDb.setRetryCount(retryCountZero);
137         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
138         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
139         wireMockServer.stubFor(get(urlPathEqualTo(
140                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
141                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
142                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
143
144         InfraActiveRequests iar = new InfraActiveRequests();
145         iar.setRequestId(requestIdOrig);
146         iar.setRequestStatus("PENDING");
147
148         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
149                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
150                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
151
152         try {
153             activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
154         } catch (ApiException e) {
155             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
156             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
157             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
158         }
159
160     }
161
162     @Test
163     public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
164
165         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
166         serviceModelDb.setRequestId(requestIdOrig);
167         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
168         serviceModelDb.setWorkloadContext(workloadContext);
169         serviceModelDb.setRecoveryAction(recoveryActionRetry);
170         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
171         serviceModelDb.setRetryCount(retryCountTwo);
172         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
173         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
174         wireMockServer.stubFor(get(urlPathEqualTo(
175                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
176                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
177                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
178
179         activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
180     }
181
182     @Test
183     public void executionTest_Ok() throws Exception {
184
185         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
186         serviceModelDb.setRequestId(requestIdOrig);
187         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
188         serviceModelDb.setWorkloadContext(workloadContext);
189         serviceModelDb.setRecoveryAction(recoveryActionRetry);
190         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
191         serviceModelDb.setRetryCount(retryCountThree);
192         serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
193         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
194         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
195
196         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
197         distributionDb.setDistributionId(sdcDistributionId);
198         distributionDb.setRequestId(requestIdOrig);
199         distributionDb.setOperationalEnvId(operationalEnvironmentId);
200         distributionDb.setDistributionIdStatus(statusSent);
201         distributionDb.setServiceModelVersionId(serviceModelVersionId);
202         distributionDb.setDistributionIdErrorReason(null);
203
204         // prepare distribution obj
205         Distribution distribution = new Distribution();
206         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
207         request.setDistribution(distribution);
208         request.setDistributionId(sdcDistributionId);
209         request.setOperationalEnvironmentId(operationalEnvironmentId);
210
211         InfraActiveRequests iar = new InfraActiveRequests();
212         iar.setRequestId(requestIdOrig);
213         iar.setRequestStatus("PENDING");
214
215         wireMockServer.stubFor(get(urlPathEqualTo(
216                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
217                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
218                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
219         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
220                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
221                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
222         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
223                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
224                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
225         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
226                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"RETRY\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
227                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
228                         .withStatus(HttpStatus.SC_OK)));
229
230         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
231                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
232                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
233                         .withStatus(HttpStatus.SC_OK)));
234
235         wireMockServer.stubFor(get(urlPathEqualTo("/aai/" + AAIVersion.LATEST
236                 + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
237                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
238                                 .withStatus(HttpStatus.SC_ACCEPTED)));
239         wireMockServer.stubFor(put(urlPathEqualTo("/aai/" + AAIVersion.LATEST
240                 + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
241                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
242                                 .withStatus(HttpStatus.SC_ACCEPTED)));
243
244         activateVnfStatus.execute(requestId, request);
245     }
246
247     @Test
248     public void executionTest_ERROR_Status_And_RETRY() throws Exception {
249
250         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
251         serviceModelDb.setRequestId(requestIdOrig);
252         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
253         serviceModelDb.setWorkloadContext(workloadContext);
254         serviceModelDb.setRecoveryAction(recoveryActionRetry);
255         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
256         serviceModelDb.setRetryCount(retryCountThree);
257         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
258         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
259         wireMockServer.stubFor(get(urlPathEqualTo(
260                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
261                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
262                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
263
264         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
265         distributionDb.setDistributionId(sdcDistributionId);
266         distributionDb.setRequestId(requestIdOrig);
267         distributionDb.setOperationalEnvId(operationalEnvironmentId);
268         distributionDb.setDistributionIdStatus(statusError);
269         distributionDb.setServiceModelVersionId(serviceModelVersionId);
270         distributionDb.setDistributionIdErrorReason(null);
271
272
273
274         // prepare new distribution obj
275         Distribution distribution = new Distribution();
276         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
277         distribution.setErrorReason("Unable to process.");
278         request.setDistribution(distribution);
279         request.setDistributionId(sdcDistributionId);
280         request.setOperationalEnvironmentId(operationalEnvironmentId);
281
282         // prepare sdc return data
283         JSONObject jsonObject = new JSONObject();
284         jsonObject.put("statusCode", "202");
285         jsonObject.put("message", "Success");
286         jsonObject.put("distributionId", sdcDistributionId1);
287
288         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
289                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
290                         .withStatus(HttpStatus.SC_ACCEPTED)));
291         wireMockServer.stubFor(get(urlPathEqualTo(
292                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
293                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
294                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
295         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
296                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
297                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
298         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
299                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\",\"distributionIdErrorReason\":\"Unable to process.\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
300                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
301                         .withStatus(HttpStatus.SC_OK)));
302
303         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).willReturn(aResponse()
304                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON).withStatus(HttpStatus.SC_OK)));
305
306         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
307                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
308                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
309                         .withStatus(HttpStatus.SC_OK)));
310
311         wireMockServer.stubFor(
312                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
313                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
314                                 .withStatus(HttpStatus.SC_ACCEPTED)));
315         wireMockServer.stubFor(
316                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
317                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
318                                 .withStatus(HttpStatus.SC_ACCEPTED)));
319
320         activateVnfStatus.execute(requestId, request);
321     }
322
323     @Test
324     public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
325
326         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
327         serviceModelDb.setRequestId(requestIdOrig);
328         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
329         serviceModelDb.setWorkloadContext(workloadContext);
330         serviceModelDb.setRecoveryAction(recoveryActionRetry);
331         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
332         serviceModelDb.setRetryCount(retryCountZero);
333         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
334         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
335
336         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
337         distributionDb.setDistributionId(sdcDistributionId);
338         distributionDb.setRequestId(requestIdOrig);
339         distributionDb.setOperationalEnvId(operationalEnvironmentId);
340         distributionDb.setDistributionIdStatus(statusError);
341         distributionDb.setServiceModelVersionId(serviceModelVersionId);
342         distributionDb.setDistributionIdErrorReason(null);
343
344
345
346         // prepare distribution obj
347         Distribution distribution = new Distribution();
348         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
349         request.setDistribution(distribution);
350         request.setDistributionId(sdcDistributionId);
351         request.setOperationalEnvironmentId(operationalEnvironmentId);
352
353         JSONObject jsonObject = new JSONObject();
354         jsonObject.put("statusCode", "202");
355         jsonObject.put("message", "Success");
356         jsonObject.put("distributionId", sdcDistributionId);
357
358         InfraActiveRequests iar = new InfraActiveRequests();
359         iar.setRequestId(requestIdOrig);
360         iar.setRequestStatus("PENDING");
361
362         wireMockServer.stubFor(get(urlPathEqualTo(
363                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
364                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
365                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
366         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
367                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
368                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
369         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
370                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
371                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
372
373         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
374                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
375                         .withStatus(HttpStatus.SC_ACCEPTED)));
376
377         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
378                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
379                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
380                         .withStatus(HttpStatus.SC_OK)));
381
382         wireMockServer.stubFor(
383                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
384                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
385                                 .withStatus(HttpStatus.SC_ACCEPTED)));
386         wireMockServer.stubFor(
387                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
388                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
389                                 .withStatus(HttpStatus.SC_ACCEPTED)));
390
391         try {
392             activateVnfStatus.execute(requestId, request);
393         } catch (ApiException e) {
394             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
395             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
396             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
397         }
398
399
400     }
401
402     @Test
403     public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
404
405         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
406         serviceModelDb.setRequestId(requestIdOrig);
407         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
408         serviceModelDb.setWorkloadContext(workloadContext);
409         serviceModelDb.setRecoveryAction(recoveryActionRetry);
410         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
411         serviceModelDb.setRetryCount(retryCountThree);
412         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
413         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
414
415         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
416         distributionDb.setDistributionId(sdcDistributionId);
417         distributionDb.setRequestId(requestIdOrig);
418         distributionDb.setOperationalEnvId(operationalEnvironmentId);
419         distributionDb.setDistributionIdStatus(statusError);
420         distributionDb.setServiceModelVersionId(serviceModelVersionId);
421         distributionDb.setDistributionIdErrorReason(null);
422
423         // prepare distribution obj
424         Distribution distribution = new Distribution();
425         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
426         distribution.setErrorReason("Unable to process.");
427         request.setDistribution(distribution);
428         request.setDistributionId(sdcDistributionId);
429         request.setOperationalEnvironmentId(operationalEnvironmentId);
430
431         // ERROR in sdc
432         JSONObject jsonMessages = new JSONObject();
433         jsonMessages.put("statusCode", "409");
434         jsonMessages.put("message", "Undefined Error Message!");
435         jsonMessages.put("messageId", "SVC4675");
436         jsonMessages.put("text", "Error: Service state is invalid for this action.");
437         JSONObject jsonServException = new JSONObject();
438         jsonServException.put("serviceException", jsonMessages);
439         JSONObject jsonErrorRequest = new JSONObject();
440         jsonErrorRequest.put("requestError", jsonServException);
441
442         InfraActiveRequests iar = new InfraActiveRequests();
443         iar.setRequestId(requestIdOrig);
444         iar.setRequestStatus("PENDING");
445         wireMockServer.stubFor(get(urlPathEqualTo(
446                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
447                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
448                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
449         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
450                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
451                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
452         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
453                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
454                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
455         wireMockServer.stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
456                 .withRequestBody(containing("operationalEnvId\":\"VNF_operationalEnvironmentId\""))
457                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
458                         .withStatus(HttpStatus.SC_OK)));
459
460         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
461                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString())
462                         .withStatus(HttpStatus.SC_CONFLICT)));
463
464         wireMockServer.stubFor(
465                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
466                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
467                                 .withStatus(HttpStatus.SC_ACCEPTED)));
468         wireMockServer.stubFor(
469                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
470                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
471                                 .withStatus(HttpStatus.SC_ACCEPTED)));
472
473         try {
474             activateVnfStatus.execute(requestId, request);
475         } catch (ApiException e) {
476             assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
477             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
478             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
479         }
480     }
481
482     @Test
483     public void executionTest_ERROR_Status_And_SKIP() throws Exception {
484
485         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
486         serviceModelDb.setRequestId(requestIdOrig);
487         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
488         serviceModelDb.setWorkloadContext(workloadContext);
489         serviceModelDb.setRecoveryAction(recoveryActionSkip);
490         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
491         serviceModelDb.setRetryCount(retryCountThree);
492         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
493         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
494
495         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
496         distributionDb.setDistributionId(sdcDistributionId);
497         distributionDb.setRequestId(requestIdOrig);
498         distributionDb.setOperationalEnvId(operationalEnvironmentId);
499         distributionDb.setDistributionIdStatus(statusError);
500         distributionDb.setServiceModelVersionId(serviceModelVersionId);
501         distributionDb.setDistributionIdErrorReason(null);
502
503         // prepare distribution obj
504         OperationalEnvDistributionStatus distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,
505                 operationalEnvironmentId, serviceModelVersionId);
506         distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
507
508         Distribution distribution = new Distribution();
509         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
510         request.setDistribution(distribution);
511         request.setDistributionId(sdcDistributionId);
512         request.setOperationalEnvironmentId(operationalEnvironmentId);
513         InfraActiveRequests iar = new InfraActiveRequests();
514         iar.setRequestId(requestIdOrig);
515         iar.setRequestStatus("PENDING");
516
517         wireMockServer.stubFor(get(urlPathEqualTo(
518                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
519                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
520                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
521         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
522                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
523                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
524         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
525                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
526                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
527         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
528                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"SKIP\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
529                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
530                         .withStatus(HttpStatus.SC_OK)));
531
532         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
533                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
534                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
535                         .withStatus(HttpStatus.SC_OK)));
536
537         wireMockServer.stubFor(
538                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
539                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
540                                 .withStatus(HttpStatus.SC_ACCEPTED)));
541         wireMockServer.stubFor(
542                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
543                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
544                                 .withStatus(HttpStatus.SC_ACCEPTED)));
545
546         activateVnfStatus.execute(requestId, request);
547
548     }
549
550     @Test
551     public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
552
553         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
554         serviceModelDb.setRequestId(requestIdOrig);
555         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
556         serviceModelDb.setWorkloadContext(workloadContext);
557         serviceModelDb.setRecoveryAction(recoveryActionAbort);
558         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
559         serviceModelDb.setRetryCount(retryCountThree);
560         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
561         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
562
563         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
564         distributionDb.setDistributionId(sdcDistributionId);
565         distributionDb.setRequestId(requestIdOrig);
566         distributionDb.setOperationalEnvId(operationalEnvironmentId);
567         distributionDb.setDistributionIdStatus(statusError);
568         distributionDb.setServiceModelVersionId(serviceModelVersionId);
569         distributionDb.setDistributionIdErrorReason(null);
570
571
572
573         // prepare distribution obj
574         Distribution distribution = new Distribution();
575         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
576         request.setDistribution(distribution);
577         request.setDistributionId(sdcDistributionId);
578         request.setOperationalEnvironmentId(operationalEnvironmentId);
579
580         InfraActiveRequests iar = new InfraActiveRequests();
581         iar.setRequestId(requestIdOrig);
582         iar.setRequestStatus("PENDING");
583
584         wireMockServer.stubFor(get(urlPathEqualTo(
585                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
586                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
587                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
588         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
589                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
590                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
591         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
592                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
593                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
594
595         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(containing(
596                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
597                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
598                         .withStatus(HttpStatus.SC_OK)));
599
600         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(containing(
601                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
602                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
603                         .withStatus(HttpStatus.SC_OK)));
604
605         wireMockServer.stubFor(
606                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
607                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
608                                 .withStatus(HttpStatus.SC_ACCEPTED)));
609         wireMockServer.stubFor(
610                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
611                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
612                                 .withStatus(HttpStatus.SC_ACCEPTED)));
613
614         try {
615             activateVnfStatus.execute(requestId, request);
616         } catch (ApiException e) {
617             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
618             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
619             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
620         }
621
622     }
623
624     @Test
625     @Ignore
626     public void callSDClientForRetryTest_202() throws Exception {
627         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
628         serviceModelDb.setRequestId(requestIdOrig);
629         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
630         serviceModelDb.setWorkloadContext(workloadContext);
631         serviceModelDb.setRecoveryAction(recoveryActionRetry);
632         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
633         serviceModelDb.setRetryCount(retryCountThree);
634         serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
635
636         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
637         distributionDb.setDistributionId(sdcDistributionId);
638         distributionDb.setRequestId(requestIdOrig);
639         distributionDb.setOperationalEnvId(operationalEnvironmentId);
640         distributionDb.setDistributionIdStatus(statusSent);
641         distributionDb.setServiceModelVersionId(serviceModelVersionId);
642         distributionDb.setDistributionIdErrorReason(null);
643
644
645
646         JSONObject jsonObject = new JSONObject();
647         jsonObject.put("statusCode", "202");
648         jsonObject.put("message", "Success");
649         jsonObject.put("distributionId", sdcDistributionId1);
650
651         // prepare distribution obj
652         Distribution distribution = new Distribution();
653         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
654         request.setDistribution(distribution);
655         request.setDistributionId(sdcDistributionId);
656         request.setOperationalEnvironmentId(operationalEnvironmentId);
657
658         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
659                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
660                         .withStatus(HttpStatus.SC_ACCEPTED)));
661
662         JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution);
663
664         assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
665         assertEquals("Success", jsonResponse.get("message"));
666         assertEquals("202", jsonResponse.get("statusCode"));
667
668     }
669 }