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