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