Merge "vnf and vf module replace requests to make"
[so.git] / mso-api-handlers / mso-api-handler-infra / src / test / java / org / onap / so / apihandlerinfra / ServiceInstancesTest.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;
22
23
24 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
25 import static com.github.tomakehurst.wiremock.client.WireMock.get;
26 import static com.github.tomakehurst.wiremock.client.WireMock.post;
27 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
28 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
29 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
30 import static org.junit.Assert.assertEquals;
31 import static org.junit.Assert.assertFalse;
32 import static org.junit.Assert.assertNotNull;
33 import static org.junit.Assert.assertNull;
34 import static org.junit.Assert.assertThat;
35 import static org.junit.Assert.assertTrue;
36 import static org.onap.logging.filter.base.Constants.HttpHeaders.ONAP_REQUEST_ID;
37 import static org.onap.so.logger.HttpHeadersConstants.REQUESTOR_ID;
38 import static org.onap.logging.filter.base.Constants.HttpHeaders.TRANSACTION_ID;
39 import static org.onap.logging.filter.base.Constants.HttpHeaders.CLIENT_ID;
40 import java.io.File;
41 import java.io.IOException;
42 import java.net.MalformedURLException;
43 import java.net.URL;
44 import java.nio.file.Files;
45 import java.nio.file.Paths;
46 import java.util.List;
47 import java.util.Map;
48 import javax.ws.rs.core.MediaType;
49 import javax.ws.rs.core.Response;
50 import org.apache.http.HttpStatus;
51 import org.junit.Before;
52 import org.junit.Test;
53 import org.mockito.Mockito;
54 import org.onap.logging.ref.slf4j.ONAPLogConstants;
55 import org.onap.so.apihandlerinfra.exceptions.ContactCamundaException;
56 import org.onap.so.apihandlerinfra.exceptions.RequestDbFailureException;
57 import org.onap.so.db.catalog.beans.Service;
58 import org.onap.so.db.catalog.beans.ServiceRecipe;
59 import org.onap.so.db.request.beans.InfraActiveRequests;
60 import org.onap.so.serviceinstancebeans.CloudConfiguration;
61 import org.onap.so.serviceinstancebeans.ModelInfo;
62 import org.onap.so.serviceinstancebeans.ModelType;
63 import org.onap.so.serviceinstancebeans.RequestDetails;
64 import org.onap.so.serviceinstancebeans.RequestError;
65 import org.onap.so.serviceinstancebeans.RequestInfo;
66 import org.onap.so.serviceinstancebeans.RequestParameters;
67 import org.onap.so.serviceinstancebeans.RequestReferences;
68 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
69 import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
70 import org.springframework.beans.factory.annotation.Autowired;
71 import org.springframework.beans.factory.annotation.Value;
72 import org.springframework.http.HttpEntity;
73 import org.springframework.http.HttpHeaders;
74 import org.springframework.http.HttpMethod;
75 import org.springframework.http.ResponseEntity;
76 import org.springframework.util.ResourceUtils;
77 import org.springframework.web.util.UriComponentsBuilder;
78 import com.fasterxml.jackson.core.JsonParseException;
79 import com.fasterxml.jackson.core.JsonProcessingException;
80 import com.fasterxml.jackson.databind.DeserializationFeature;
81 import com.fasterxml.jackson.databind.JsonMappingException;
82 import com.fasterxml.jackson.databind.ObjectMapper;
83 import com.github.tomakehurst.wiremock.http.Fault;
84 import ch.qos.logback.classic.spi.ILoggingEvent;
85
86 public class ServiceInstancesTest extends BaseTest {
87
88     private final ObjectMapper mapper = new ObjectMapper();
89
90     @Autowired
91     private ServiceInstances servInstances;
92
93     @Autowired
94     private RequestHandlerUtils requestHandlerUtils;
95
96     @Value("${wiremock.server.port}")
97     private String wiremockPort;
98
99     private final String servInstanceuri = "/onap/so/infra/serviceInstantiation/";
100     private final String servInstanceUriPrev7 = "/onap/so/infra/serviceInstances/";
101     private String uri;
102     private URL selfLink;
103     private URL initialUrl;
104     private int initialPort;
105     private HttpHeaders headers;
106
107     @Before
108     public void beforeClass() {
109         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
110         // set headers
111         headers = new HttpHeaders();
112         headers.set(ONAPLogConstants.Headers.PARTNER_NAME, "test_name");
113         headers.set(TRANSACTION_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
114         headers.set(ONAP_REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
115         headers.set(ONAPLogConstants.MDCs.REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
116         headers.set(CLIENT_ID, "VID");
117         headers.set(REQUESTOR_ID, "xxxxxx");
118         try { // generate one-time port number to avoid RANDOM port number later.
119             initialUrl = new URL(createURLWithPort(Constants.ORCHESTRATION_REQUESTS_PATH));
120             initialPort = initialUrl.getPort();
121         } catch (MalformedURLException e) {
122             e.printStackTrace();
123         }
124         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/")).willReturn(aResponse()
125                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON).withStatus(HttpStatus.SC_OK)));
126         Mockito.doReturn(null).when(requestsDbClient).getInfraActiveRequestbyRequestId(Mockito.any());
127     }
128
129     public String inputStream(String JsonInput) throws IOException {
130         JsonInput = "src/test/resources/ServiceInstanceTest" + JsonInput;
131         return new String(Files.readAllBytes(Paths.get(JsonInput)));
132     }
133
134     private URL createExpectedSelfLink(String version, String requestId) {
135         System.out.println("createdUrl: " + initialUrl.toString());
136         try {
137             selfLink = new URL(initialUrl.toString().concat("/").concat(version).concat("/").concat(requestId));
138         } catch (MalformedURLException e) {
139             e.printStackTrace();
140         }
141         return selfLink;
142     }
143
144     private String getWiremockResponseForCatalogdb(String file) {
145         try {
146             File resource = ResourceUtils.getFile("classpath:__files/catalogdb/" + file);
147             return new String(Files.readAllBytes(resource.toPath())).replaceAll("localhost:8090",
148                     "localhost:" + wiremockPort);
149         } catch (IOException e) {
150             e.printStackTrace();
151             return null;
152         }
153
154     }
155
156     public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod,
157             HttpHeaders headers) {
158
159         if (!headers.containsKey(HttpHeaders.ACCEPT)) {
160             headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
161         }
162         if (!headers.containsKey(HttpHeaders.CONTENT_TYPE)) {
163             headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
164         }
165
166         UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath, initialPort));
167
168         HttpEntity<String> request = new HttpEntity<>(requestJson, headers);
169
170         return restTemplate.exchange(builder.toUriString(), reqMethod, request, String.class);
171     }
172
173     public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod) {
174         return sendRequest(requestJson, uriPath, reqMethod, new HttpHeaders());
175     }
176
177     @Test
178     public void createServiceInstanceVIDDefault() throws IOException {
179         TestAppender.events.clear();
180
181         ServiceRecipe serviceRecipe = new ServiceRecipe();
182         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
183         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
184         serviceRecipe.setAction(Action.createInstance.toString());
185         serviceRecipe.setId(1);
186         serviceRecipe.setRecipeTimeout(180);
187         Service defaultService = new Service();
188         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
189
190
191         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
192                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
193                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
194
195         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
196                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
197                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
198
199         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
200                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
201                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
202
203         // expect
204         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
205         RequestReferences requestReferences = new RequestReferences();
206         requestReferences.setInstanceId("1882939");
207         requestReferences.setRequestSelfLink(createExpectedSelfLink("v5", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
208         expectedResponse.setRequestReferences(requestReferences);
209         uri = servInstanceuri + "v5/serviceInstances";
210         ResponseEntity<String> response =
211                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
212
213         // then
214         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
215         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
216         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
217
218
219
220         for (ILoggingEvent logEvent : TestAppender.events)
221             if (logEvent.getLoggerName().equals("org.onap.so.logging.jaxrs.filter.SOAuditLogContainerFilter")
222                     && logEvent.getMarker() != null && logEvent.getMarker().getName().equals("ENTRY")) {
223                 Map<String, String> mdc = logEvent.getMDCPropertyMap();
224                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP));
225                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
226                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
227                 assertEquals("UNKNOWN", mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
228                 assertEquals("onap/so/infra/serviceInstantiation/v5/serviceInstances",
229                         mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
230                 assertEquals("INPROGRESS", mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
231             } else if (logEvent.getLoggerName().equals("org.onap.so.logging.jaxrs.filter.SOAuditLogContainerFilter")
232                     && logEvent.getMarker() != null && logEvent.getMarker().getName().equals("EXIT")) {
233                 Map<String, String> mdc = logEvent.getMDCPropertyMap();
234                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP));
235                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.LOG_TIMESTAMP));
236                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
237                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
238                 assertEquals("202", mdc.get(ONAPLogConstants.MDCs.RESPONSE_CODE));
239                 assertEquals("UNKNOWN", mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
240                 assertEquals("onap/so/infra/serviceInstantiation/v5/serviceInstances",
241                         mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
242                 assertEquals("COMPLETE", mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
243                 assertNotNull(mdc.get(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION));
244                 assertEquals("0", response.getHeaders().get("X-MinorVersion").get(0));
245                 assertEquals("0", response.getHeaders().get("X-PatchVersion").get(0));
246                 assertEquals("5.0.0", response.getHeaders().get("X-LatestVersion").get(0));
247             }
248     }
249
250     @Test
251     public void createServiceInstanceServiceInstancesUri() throws IOException {
252         ServiceRecipe serviceRecipe = new ServiceRecipe();
253         serviceRecipe.setOrchestrationUri("/mso/async/services/CreateGenericALaCarteServiceInstance");
254         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
255         serviceRecipe.setAction(Action.createInstance.toString());
256         serviceRecipe.setId(1);
257         serviceRecipe.setRecipeTimeout(180);
258         Service defaultService = new Service();
259         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
260
261         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/CreateGenericALaCarteServiceInstance"))
262                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
263                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
264
265
266         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
267                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
268                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
269
270         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
271                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
272                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
273         // expect
274         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
275         RequestReferences requestReferences = new RequestReferences();
276         requestReferences.setInstanceId("1882939");
277         requestReferences.setRequestSelfLink(createExpectedSelfLink("v5", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
278         expectedResponse.setRequestReferences(requestReferences);
279         uri = servInstanceuri + "v5";
280         ResponseEntity<String> response =
281                 sendRequest(inputStream("/ServiceInstancePrev7.json"), uri, HttpMethod.POST, headers);
282
283         // then
284         assertEquals(404, response.getStatusCode().value());
285         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
286     }
287
288     @Test
289     public void createServiceInstanceBpelStatusError() throws IOException {
290         ServiceRecipe serviceRecipe = new ServiceRecipe();
291         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
292         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
293         serviceRecipe.setAction(Action.createInstance.toString());
294         serviceRecipe.setId(1);
295         serviceRecipe.setRecipeTimeout(180);
296         Service defaultService = new Service();
297         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
298
299
300         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB")).willReturn(aResponse()
301                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
302                 .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_BAD_GATEWAY)));
303
304
305         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
306                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
307                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
308
309         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
310                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
311                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
312
313         uri = servInstanceuri + "v5/serviceInstances";
314         ResponseEntity<String> response =
315                 sendRequest(inputStream("/ServiceInstanceStatusError.json"), uri, HttpMethod.POST);
316
317         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
318     }
319
320     @Test
321     public void createServiceInstanceBadGateway() throws IOException {
322         ServiceRecipe serviceRecipe = new ServiceRecipe();
323         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
324         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
325         serviceRecipe.setAction(Action.createInstance.toString());
326         serviceRecipe.setId(1);
327         serviceRecipe.setRecipeTimeout(180);
328         Service defaultService = new Service();
329         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
330
331         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
332                 .willReturn(aResponse().withStatus(org.apache.http.HttpStatus.SC_BAD_GATEWAY).withBody("{}")));
333
334         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
335                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
336                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
337
338         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
339                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
340                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
341
342         uri = servInstanceuri + "v5/serviceInstances";
343         ResponseEntity<String> response =
344                 sendRequest(inputStream("/ServiceInstanceBadGateway.json"), uri, HttpMethod.POST);
345
346         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
347     }
348
349     @Test
350     public void createServiceInstanceEmptyResponse() throws IOException {
351         ServiceRecipe serviceRecipe = new ServiceRecipe();
352         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
353         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
354         serviceRecipe.setAction(Action.createInstance.toString());
355         serviceRecipe.setId(1);
356         serviceRecipe.setRecipeTimeout(180);
357         Service defaultService = new Service();
358         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
359
360         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
361                 .willReturn(aResponse().withFault(Fault.EMPTY_RESPONSE)));
362
363         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
364                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
365                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
366
367         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
368                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
369                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
370
371         uri = servInstanceuri + "v5/serviceInstances";
372         ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceEmpty.json"), uri, HttpMethod.POST);
373
374         assertEquals(Response.Status.BAD_GATEWAY.getStatusCode(), response.getStatusCode().value());
375     }
376
377     @Test
378     public void activateServiceInstanceNoRecipeALaCarte() throws IOException {
379         TestAppender.events.clear();
380         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/activate";
381         HttpHeaders requestIDheaders = new HttpHeaders();
382         requestIDheaders.set(ONAPLogConstants.Headers.REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
383         ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceALaCarteTrueNoRecipe.json"), uri,
384                 HttpMethod.POST, requestIDheaders);
385
386         Service defaultService = new Service();
387         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
388
389         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
390                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
391                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
392
393
394         wireMockServer.stubFor(get(urlMatching(
395                 ".*/serviceRecipe/search/findFirstByServiceModelUUIDAndAction?serviceModelUUID=d88da85c-d9e8-4f73-b837-3a72a431622a&action=activateInstance"))
396                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
397                                 .withStatus(HttpStatus.SC_NOT_FOUND)));
398
399         assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatusCode().value());
400
401         for (ILoggingEvent logEvent : TestAppender.events) {
402             if (logEvent.getLoggerName().equals("org.onap.so.logging.jaxrs.SOAuditLogContainerFilter")
403                     && logEvent.getMarker() != null && logEvent.getMarker().getName().equals("ENTRY")) {
404                 Map<String, String> mdc = logEvent.getMDCPropertyMap();
405                 assertEquals("32807a28-1a14-4b88-b7b3-2950918aa76d", mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
406                 assertNotNull(mdc.get("PartnerName"));
407             }
408         }
409     }
410
411     @Test
412     public void activateServiceInstanceNoRecipe() throws IOException {
413         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/activate";
414         Service defaultService = new Service();
415         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
416         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
417                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
418                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
419
420         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search/.*")).willReturn(aResponse()
421                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON).withStatus(HttpStatus.SC_NOT_FOUND)));
422
423         ResponseEntity<String> response =
424                 sendRequest(inputStream("/ServiceInstanceNoRecipe.json"), uri, HttpMethod.POST);
425
426         assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatusCode().value());
427     }
428
429     @Test
430     public void activateServiceInstance() throws IOException {
431         ServiceRecipe serviceRecipe = new ServiceRecipe();
432         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
433         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
434         serviceRecipe.setAction(Action.createInstance.toString());
435         serviceRecipe.setId(1);
436         serviceRecipe.setRecipeTimeout(180);
437         Service defaultService = new Service();
438         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
439
440         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
441                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
442                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
443
444         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
445                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
446                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
447
448         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
449                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
450                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
451         // expected response
452         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
453         RequestReferences requestReferences = new RequestReferences();
454         requestReferences.setInstanceId("1882939");
455         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
456         expectedResponse.setRequestReferences(requestReferences);
457         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/activate";
458         ResponseEntity<String> response =
459                 sendRequest(inputStream("/ServiceInstanceActivate.json"), uri, HttpMethod.POST, headers);
460
461         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
462         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
463         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
464     }
465
466     @Test
467     public void deactivateServiceInstance() throws IOException {
468
469         ServiceRecipe serviceRecipe = new ServiceRecipe();
470         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
471         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
472         serviceRecipe.setAction(Action.createInstance.toString());
473         serviceRecipe.setId(1);
474         serviceRecipe.setRecipeTimeout(180);
475         Service defaultService = new Service();
476         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
477
478         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
479                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
480                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
481
482         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
483                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
484                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
485
486         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
487                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
488                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
489
490         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
491                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
492                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
493
494         // expected response
495         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
496         RequestReferences requestReferences = new RequestReferences();
497         requestReferences.setInstanceId("1882939");
498         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
499         expectedResponse.setRequestReferences(requestReferences);
500         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/deactivate";
501         ResponseEntity<String> response =
502                 sendRequest(inputStream("/ServiceInstanceDeactivate.json"), uri, HttpMethod.POST, headers);
503
504         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
505         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
506         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
507     }
508
509     @Test
510     public void deleteServiceInstance() throws IOException {
511         ServiceRecipe serviceRecipe = new ServiceRecipe();
512         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
513         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
514         serviceRecipe.setAction(Action.createInstance.toString());
515         serviceRecipe.setId(1);
516         serviceRecipe.setRecipeTimeout(180);
517         Service defaultService = new Service();
518         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
519
520         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
521                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
522                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
523
524         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
525                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
526                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
527
528         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
529                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
530                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
531
532         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
533                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
534                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
535         // expected response
536         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
537         RequestReferences requestReferences = new RequestReferences();
538         requestReferences.setInstanceId("1882939");
539         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
540         expectedResponse.setRequestReferences(requestReferences);
541         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a8868/";
542         ResponseEntity<String> response =
543                 sendRequest(inputStream("/ServiceInstanceDelete.json"), uri, HttpMethod.DELETE, headers);
544
545         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
546         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
547         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
548     }
549
550     @Test
551     public void assignServiceInstance() throws IOException {
552         ServiceRecipe serviceRecipe = new ServiceRecipe();
553         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
554         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
555         serviceRecipe.setAction(Action.createInstance.toString());
556         serviceRecipe.setId(1);
557         serviceRecipe.setRecipeTimeout(180);
558         Service defaultService = new Service();
559         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
560
561         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
562                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
563                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
564
565         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
566                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
567                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
568
569         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
570                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
571                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
572
573         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
574                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
575                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
576         // expected response
577         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
578         RequestReferences requestReferences = new RequestReferences();
579         requestReferences.setInstanceId("1882939");
580         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
581         expectedResponse.setRequestReferences(requestReferences);
582         uri = servInstanceuri + "v7" + "/serviceInstances/assign";
583         ResponseEntity<String> response =
584                 sendRequest(inputStream("/ServiceAssign.json"), uri, HttpMethod.POST, headers);
585
586         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
587         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
588         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
589     }
590
591     @Test
592     public void unassignServiceInstance() throws IOException {
593         ServiceRecipe serviceRecipe = new ServiceRecipe();
594         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
595         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
596         serviceRecipe.setAction(Action.createInstance.toString());
597         serviceRecipe.setId(1);
598         serviceRecipe.setRecipeTimeout(180);
599         Service defaultService = new Service();
600         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
601
602         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
603                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
604                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
605
606         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
607                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
608                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
609
610         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
611                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
612                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
613
614         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
615                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
616                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
617         // expected response
618         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
619         RequestReferences requestReferences = new RequestReferences();
620         requestReferences.setInstanceId("1882939");
621         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
622         expectedResponse.setRequestReferences(requestReferences);
623         uri = servInstanceuri + "v7" + "/serviceInstances/ff305d54-75b4-431b-adb2-eb6b9e5ff000/unassign";
624         ResponseEntity<String> response =
625                 sendRequest(inputStream("/ServiceUnassign.json"), uri, HttpMethod.POST, headers);
626
627         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
628         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
629         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
630     }
631
632     @Test
633     public void createPortConfiguration() throws IOException {
634         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
635                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
636                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
637         // expected response
638         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
639         RequestReferences requestReferences = new RequestReferences();
640         requestReferences.setInstanceId("1882939");
641         requestReferences.setRequestSelfLink(createExpectedSelfLink("v5", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
642         expectedResponse.setRequestReferences(requestReferences);
643         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations";
644         ResponseEntity<String> response =
645                 sendRequest(inputStream("/ServiceInstancePortConfiguration.json"), uri, HttpMethod.POST, headers);
646
647         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
648         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
649         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
650         assertTrue(response.getBody().contains("1882939"));
651     }
652
653     @Test
654     public void createPortConfigurationEmptyProductFamilyId() throws IOException {
655         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations";
656         ResponseEntity<String> response =
657                 sendRequest(inputStream("/ServiceInstanceParseFail.json"), uri, HttpMethod.POST);
658
659         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
660     }
661
662     @Test
663     public void deletePortConfiguration() throws IOException {
664         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
665                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
666                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
667
668         // expected response
669         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
670         RequestReferences requestReferences = new RequestReferences();
671         requestReferences.setInstanceId("1882939");
672         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
673         expectedResponse.setRequestReferences(requestReferences);
674         uri = servInstanceuri + "v7"
675                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations/f7ce78bb-423b-11e7-93f8-0050569a7970";
676         ResponseEntity<String> response =
677                 sendRequest(inputStream("/ServiceInstance.json"), uri, HttpMethod.DELETE, headers);
678
679         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
680         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
681         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
682     }
683
684     @Test
685     public void enablePort() throws IOException {
686         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
687                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
688                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
689         // expected response
690         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
691         RequestReferences requestReferences = new RequestReferences();
692         requestReferences.setInstanceId("1882939");
693         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
694         expectedResponse.setRequestReferences(requestReferences);
695         uri = servInstanceuri + "v7"
696                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations/f7ce78bb-423b-11e7-93f8-0050569a7970/enablePort";
697         ResponseEntity<String> response =
698                 sendRequest(inputStream("/ServiceInstanceEnablePort.json"), uri, HttpMethod.POST, headers);
699
700         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
701         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
702         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
703     }
704
705     @Test
706     public void disablePort() throws IOException {
707         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
708                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
709                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
710         // expected response
711         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
712         RequestReferences requestReferences = new RequestReferences();
713         requestReferences.setInstanceId("1882939");
714         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
715         expectedResponse.setRequestReferences(requestReferences);
716         uri = servInstanceuri + "v7"
717                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations/f7ce78bb-423b-11e7-93f8-0050569a7970/disablePort";
718         ResponseEntity<String> response =
719                 sendRequest(inputStream("/ServiceInstanceDisablePort.json"), uri, HttpMethod.POST, headers);
720
721         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
722         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
723         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
724     }
725
726     @Test
727     public void activatePort() throws IOException {
728         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
729                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
730                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
731         // expected response
732         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
733         RequestReferences requestReferences = new RequestReferences();
734         requestReferences.setInstanceId("1882939");
735         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
736         expectedResponse.setRequestReferences(requestReferences);
737         uri = servInstanceuri + "v7"
738                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations/f7ce78bb-423b-11e7-93f8-0050569a7970/activate";
739         ResponseEntity<String> response =
740                 sendRequest(inputStream("/ServiceInstanceActivatePort.json"), uri, HttpMethod.POST, headers);
741
742         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
743         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
744         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
745     }
746
747     @Test
748     public void deactivatePort() throws IOException {
749         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
750                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
751                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
752         // expected response
753         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
754         RequestReferences requestReferences = new RequestReferences();
755         requestReferences.setInstanceId("1882939");
756         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
757         expectedResponse.setRequestReferences(requestReferences);
758         uri = servInstanceuri + "v7"
759                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations/f7ce78bb-423b-11e7-93f8-0050569a7970/deactivate";
760         ResponseEntity<String> response =
761                 sendRequest(inputStream("/ServiceInstanceDeactivatePort.json"), uri, HttpMethod.POST, headers);
762
763         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
764         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
765         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
766     }
767
768     @Test
769     public void addRelationships() throws IOException {
770         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
771                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
772                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
773         // expected response
774         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
775         RequestReferences requestReferences = new RequestReferences();
776         requestReferences.setInstanceId("1882939");
777         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
778         expectedResponse.setRequestReferences(requestReferences);
779         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/addRelationships";
780         ResponseEntity<String> response =
781                 sendRequest(inputStream("/AddRelationships.json"), uri, HttpMethod.POST, headers);
782
783         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
784         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
785         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
786     }
787
788     @Test
789     public void removeRelationships() throws IOException {
790         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
791                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
792                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
793         // expected response
794         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
795         RequestReferences requestReferences = new RequestReferences();
796         requestReferences.setInstanceId("1882939");
797         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
798         expectedResponse.setRequestReferences(requestReferences);
799         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/removeRelationships";
800         ResponseEntity<String> response =
801                 sendRequest(inputStream("/RemoveRelationships.json"), uri, HttpMethod.POST, headers);
802
803         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
804         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
805         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
806     }
807
808     @Test
809     public void createVnfInstanceNoALaCarte() throws IOException {
810         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
811                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
812                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
813
814
815         wireMockServer.stubFor(get(urlMatching(
816                 ".*/vnfResourceCustomization/search/findByModelCustomizationUUID[?]MODEL_CUSTOMIZATION_UUID=68dc9a92-214c-11e7-93ae-92361f002671"))
817                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
818                                 .withBody(getWiremockResponseForCatalogdb(
819                                         "vnfResourceCustomization_ReplaceVnf_Response.json"))
820                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
821
822         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/1/vnfResources"))
823                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
824                         .withBody(getWiremockResponseForCatalogdb("vnfResources_ReplaceVnf_Response.json"))
825                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
826
827         wireMockServer.stubFor(get(urlMatching(
828                 ".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=GR-API-DEFAULT&action=createInstance"))
829                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
830                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipeReplaceInstance_Response.json"))
831                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
832
833         // expected response
834         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
835         RequestReferences requestReferences = new RequestReferences();
836         requestReferences.setInstanceId("1882939");
837         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
838         expectedResponse.setRequestReferences(requestReferences);
839         uri = servInstanceuri + "v7" + "/serviceInstances/49585b36-2b5a-443a-8b10-c75d34bb5e46/vnfs";
840         ResponseEntity<String> response =
841                 sendRequest(inputStream("/VnfCreateDefault.json"), uri, HttpMethod.POST, headers);
842
843         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
844         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
845         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
846     }
847
848     @Test
849     public void createVnfInstance() throws IOException {
850         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
851                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
852                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
853
854         wireMockServer.stubFor(get(urlMatching(".*/service/5df8b6de-2083-11e7-93ae-92361f002672"))
855                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
856                         .withBody(getWiremockResponseForCatalogdb("serviceVnf_Response.json"))
857                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
858         wireMockServer.stubFor(get(urlMatching(".*/service/5df8b6de-2083-11e7-93ae-92361f002672/vnfCustomizations"))
859                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
860                         .withBody(getWiremockResponseForCatalogdb("vnfResourceCustomizationsList_Response.json"))
861                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
862
863
864         wireMockServer.stubFor(
865                 get(urlMatching(".*/vnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002672/vnfResources"))
866                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
867                                 .withBody(getWiremockResponseForCatalogdb("vnfResourcesCreateVnf_Response.json"))
868                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
869
870         wireMockServer.stubFor(get(urlMatching(
871                 ".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=GR-API-DEFAULT&action=createInstance"))
872                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
873                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipeCreateInstance_Response.json"))
874                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
875
876         // expected response
877         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
878         RequestReferences requestReferences = new RequestReferences();
879         requestReferences.setInstanceId("1882939");
880         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
881         expectedResponse.setRequestReferences(requestReferences);
882         uri = servInstanceuri + "v7" + "/serviceInstances/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs";
883         ResponseEntity<String> response =
884                 sendRequest(inputStream("/VnfWithServiceRelatedInstance.json"), uri, HttpMethod.POST, headers);
885
886         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
887         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
888         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
889         assertTrue(response.getBody().contains("1882939"));
890     }
891
892     @Test
893     public void createVnfWithServiceRelatedInstanceFail() throws IOException {
894         uri = servInstanceUriPrev7 + "v6" + "/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs";
895         ResponseEntity<String> response =
896                 sendRequest(inputStream("/VnfWithServiceRelatedInstanceFail.json"), uri, HttpMethod.POST);
897
898         assertEquals(404, response.getStatusCode().value());
899     }
900
901     @Test
902     public void createVnfInstanceInvalidVnfResource() throws IOException {
903         uri = servInstanceuri + "v7" + "/serviceInstances/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs";
904         ResponseEntity<String> response = sendRequest(inputStream("/NoVnfResource.json"), uri, HttpMethod.POST);
905
906         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
907         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
908         assertEquals("No valid vnfResource is specified", realResponse.getServiceException().getText());
909     }
910
911     @Test
912     public void replaceVnfInstance() throws IOException {
913         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
914                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
915                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
916
917         wireMockServer.stubFor(get(urlMatching(
918                 ".*/vnfResourceCustomization/search/findByModelCustomizationUUID[?]MODEL_CUSTOMIZATION_UUID=68dc9a92-214c-11e7-93ae-92361f002671"))
919                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
920                                 .withBody(getWiremockResponseForCatalogdb(
921                                         "vnfResourceCustomization_ReplaceVnf_Response.json"))
922                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
923
924         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/1/vnfResources"))
925                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
926                         .withBody(getWiremockResponseForCatalogdb("vnfResources_ReplaceVnf_Response.json"))
927                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
928
929         wireMockServer.stubFor(get(urlMatching(
930                 ".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=GR-API-DEFAULT&action=replaceInstance"))
931                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
932                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipeReplaceInstance_Response.json"))
933                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
934         // expected response
935         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
936         RequestReferences requestReferences = new RequestReferences();
937         requestReferences.setInstanceId("1882939");
938         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
939         expectedResponse.setRequestReferences(requestReferences);
940         uri = servInstanceuri + "v7"
941                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/replace";
942         ResponseEntity<String> response = sendRequest(inputStream("/ReplaceVnf.json"), uri, HttpMethod.POST, headers);
943
944         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
945         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
946         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
947     }
948
949     @Test
950     public void replaceVnfInstanceNoCloudConfig() throws IOException {
951         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/v1/getInfraActiveRequests.*"))
952                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
953                         .withBodyFile("infra/VnfLookup.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
954         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
955                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
956                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
957         wireMockServer.stubFor(get(urlMatching(
958                 ".*/vnfResourceCustomization/search/findByModelCustomizationUUID[?]MODEL_CUSTOMIZATION_UUID=68dc9a92-214c-11e7-93ae-92361f002671"))
959                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
960                                 .withBody(getWiremockResponseForCatalogdb(
961                                         "vnfResourceCustomization_ReplaceVnf_Response.json"))
962                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
963         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/1/vnfResources"))
964                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
965                         .withBody(getWiremockResponseForCatalogdb("vnfResources_ReplaceVnf_Response.json"))
966                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
967         wireMockServer.stubFor(get(urlMatching(
968                 ".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=GR-API-DEFAULT&action=replaceInstance"))
969                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
970                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipeReplaceInstance_Response.json"))
971                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
972         // expected response
973         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
974         RequestReferences requestReferences = new RequestReferences();
975         requestReferences.setInstanceId("1882939");
976         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
977         expectedResponse.setRequestReferences(requestReferences);
978         uri = servInstanceuri + "v7"
979                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/replace";
980         ResponseEntity<String> response =
981                 sendRequest(inputStream("/ReplaceVnfNoCloudConfig.json"), uri, HttpMethod.POST, headers);
982
983         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
984         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
985         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
986     }
987
988     @Test
989     public void replaceVnfRecreateInstance() throws IOException {
990         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/RecreateInfraVce"))
991                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
992                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
993
994         wireMockServer.stubFor(get(urlMatching(
995                 ".*/vnfResourceCustomization/search/findByModelCustomizationUUID[?]MODEL_CUSTOMIZATION_UUID=68dc9a92-214c-11e7-93ae-92361f002674"))
996                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
997                                 .withBody(getWiremockResponseForCatalogdb("vnfResourceCustomization_Response.json"))
998                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
999
1000         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/4/vnfResources"))
1001                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1002                         .withBody(getWiremockResponseForCatalogdb("vnfResources_Response.json"))
1003                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1004
1005         wireMockServer.stubFor(get(urlMatching(
1006                 ".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=TEST&action=replaceInstance"))
1007                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1008                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipe_Response.json"))
1009                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1010
1011         // expected response
1012         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1013         RequestReferences requestReferences = new RequestReferences();
1014         requestReferences.setInstanceId("1882939");
1015         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1016         expectedResponse.setRequestReferences(requestReferences);
1017         uri = servInstanceuri + "v7"
1018                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/replace";
1019         ResponseEntity<String> response =
1020                 sendRequest(inputStream("/ReplaceVnfRecreate.json"), uri, HttpMethod.POST, headers);
1021         logger.debug(response.getBody());
1022
1023         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1024         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1025         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1026     }
1027
1028     @Test
1029     public void recreateVnfInstance() throws IOException {
1030         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1031                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1032                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1033
1034         wireMockServer.stubFor(get(urlMatching(
1035                 ".*/vnfResourceCustomization/search/findByModelCustomizationUUID[?]MODEL_CUSTOMIZATION_UUID=68dc9a92-214c-11e7-93ae-92361f002674"))
1036                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1037                                 .withBody(getWiremockResponseForCatalogdb("vnfResourceCustomization_Response"))
1038                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1039
1040         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/4/vnfResources"))
1041                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1042                         .withBody(getWiremockResponseForCatalogdb("vnfResources_Response.json"))
1043                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1044
1045         wireMockServer.stubFor(get(urlMatching(
1046                 ".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=GR-API-DEFAULT&action=recreateInstance"))
1047                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1048                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipe_ResponseWorkflowAction.json"))
1049                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1050
1051         // expected response
1052         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1053         RequestReferences requestReferences = new RequestReferences();
1054         requestReferences.setInstanceId("1882939");
1055         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1056         expectedResponse.setRequestReferences(requestReferences);
1057         uri = servInstanceuri + "v7"
1058                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/recreate";
1059         ResponseEntity<String> response = sendRequest(inputStream("/VnfRecreate.json"), uri, HttpMethod.POST, headers);
1060         logger.debug(response.getBody());
1061
1062         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1063         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1064         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1065     }
1066
1067     @Test
1068     public void updateVnfInstance() throws IOException {
1069         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1070                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1071                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1072
1073         wireMockServer.stubFor(get(urlMatching(
1074                 ".*/vnfResourceCustomization/search/findByModelCustomizationUUID[?]MODEL_CUSTOMIZATION_UUID=68dc9a92-214c-11e7-93ae-92361f002674"))
1075                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1076                                 .withBody(getWiremockResponseForCatalogdb("vnfResourceCustomization_Response.json"))
1077                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1078
1079         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/4/vnfResources"))
1080                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1081                         .withBody(getWiremockResponseForCatalogdb("vnfResources_Response.json"))
1082                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1083
1084         wireMockServer.stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction"
1085                 + "[?]nfRole=GR-API-DEFAULT&action=updateInstance"))
1086                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1087                                 .withBody(getWiremockResponseForCatalogdb("UpdateVnfRecipe_Response.json"))
1088                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1089
1090         // expected response
1091         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1092         RequestReferences requestReferences = new RequestReferences();
1093         requestReferences.setInstanceId("1882939");
1094         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1095         expectedResponse.setRequestReferences(requestReferences);
1096         uri = servInstanceuri + "v7"
1097                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000";
1098         ResponseEntity<String> response = sendRequest(inputStream("/UpdateVnf.json"), uri, HttpMethod.PUT, headers);
1099
1100         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1101         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1102         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1103     }
1104
1105     @Test
1106     public void applyUpdatedConfig() throws IOException {
1107         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/VnfConfigUpdate"))
1108                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1109                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1110
1111
1112         wireMockServer.stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction"
1113                 + "[?]nfRole=GR-API-DEFAULT&action=applyUpdatedConfig"))
1114                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1115                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipeApplyUpdatedConfig_Response.json"))
1116                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1117
1118         // expected response
1119         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1120         RequestReferences requestReferences = new RequestReferences();
1121         requestReferences.setInstanceId("1882939");
1122         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1123         expectedResponse.setRequestReferences(requestReferences);
1124         uri = servInstanceuri + "v7"
1125                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/applyUpdatedConfig";
1126         ResponseEntity<String> response =
1127                 sendRequest(inputStream("/ApplyUpdatedConfig.json"), uri, HttpMethod.POST, headers);
1128
1129         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1130         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1131         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1132     }
1133
1134     @Test
1135     public void deleteVnfInstanceV5() throws IOException {
1136         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1137                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1138                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1139
1140         wireMockServer.stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction"
1141                 + "[?]nfRole=GR-API-DEFAULT&action=deleteInstance"))
1142                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1143                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipeDelete_Response.json"))
1144                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1145         // expected response
1146         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1147         RequestReferences requestReferences = new RequestReferences();
1148         requestReferences.setInstanceId("1882939");
1149         requestReferences.setRequestSelfLink(createExpectedSelfLink("v5", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1150         expectedResponse.setRequestReferences(requestReferences);
1151         uri = servInstanceuri + "v5"
1152                 + "/serviceInstances/e446b97d-9c35-437a-95a2-6b4c542c4507/vnfs/49befbfe-fccb-421d-bb4c-0734a43f5ea0";
1153         ResponseEntity<String> response =
1154                 sendRequest(inputStream("/DeleteVnfV5.json"), uri, HttpMethod.DELETE, headers);
1155
1156         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1157         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1158         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1159     }
1160
1161     @Test
1162     public void createVfModuleInstance() throws IOException {
1163         wireMockServer.stubFor(get(urlMatching(
1164                 "/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc\\?MODEL_CUSTOMIZATION_UUID=cb82ffd8-252a-11e7-93ae-92361f002671"))
1165                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1166                                 .withBody(getWiremockResponseForCatalogdb("vfModuleCustomization_Response.json"))
1167                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1168
1169         wireMockServer.stubFor(get(urlMatching("/vfModule/20c4431c-246d-11e7-93ae-92361f002671"))
1170                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1171                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1172                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1173
1174         wireMockServer.stubFor(get(urlMatching("/vfModuleCustomization/1/vfModule"))
1175                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1176                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1177                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1178
1179         wireMockServer.stubFor(get(urlMatching(
1180                 "/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc\\?MODEL_CUSTOMIZATION_UUID=20c4431c-246d-11e7-93ae-92361f002671"))
1181                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1182                                 .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1183                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1184
1185         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/CreateVfModuleInfra"))
1186                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1187                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1188
1189         wireMockServer.stubFor(get(urlMatching(
1190                 "/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1191                         + "[?]vfModuleModelUUID=20c4431c-246d-11e7-93ae-92361f002671&vnfComponentType=vfModule&action=createInstance"))
1192                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1193                                         .withBody(getWiremockResponseForCatalogdb("vnfComponentRecipe_Response.json"))
1194                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1195         // expected response
1196         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1197         RequestReferences requestReferences = new RequestReferences();
1198         requestReferences.setInstanceId("1882939");
1199         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1200         expectedResponse.setRequestReferences(requestReferences);
1201         uri = servInstanceuri + "v7"
1202                 + "/serviceInstances/7a88cbeb-0ec8-4765-a271-4f9e90c3da7b/vnfs/cbba721b-4803-4df7-9347-307c9a955426/vfModules";
1203         ResponseEntity<String> response =
1204                 sendRequest(inputStream("/VfModuleWithRelatedInstances.json"), uri, HttpMethod.POST, headers);
1205
1206         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1207         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1208         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1209         assertTrue(response.getBody().contains("1882939"));
1210     }
1211
1212     @Test
1213     public void createVfModuleInstanceNoModelCustomization() throws IOException {
1214         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/CreateVfModuleInfra"))
1215                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1216                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1217
1218         wireMockServer.stubFor(get(urlMatching(".*/vnfResource/fe6478e4-ea33-3346-ac12-ab121484a3fe"))
1219                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1220                         .withBody(getWiremockResponseForCatalogdb("vnfResourceForVfModule_Response.json"))
1221                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1222
1223         wireMockServer
1224                 .stubFor(get(urlMatching(".*/vnfResourceCustomization/search/findByModelInstanceNameAndVnfResources"
1225                         + "[?]MODEL_INSTANCE_NAME=test&VNF_RESOURCE_MODEL_UUID=fe6478e4-ea33-3346-ac12-ab121484a3fe"))
1226                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1227                                         .withBody(getWiremockResponseForCatalogdb(
1228                                                 "vnfResourceCustomizationForVfModule_Response.json"))
1229                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1230
1231         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/3/vfModuleCustomizations"))
1232                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1233                         .withBody(getWiremockResponseForCatalogdb("vfModuleCustomizationsPCM_Response.json"))
1234                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1235
1236         wireMockServer.stubFor(get(urlMatching(
1237                 ".*/vfModuleCustomization/search/findFirstByModelCustomizationUUIDAndVfModuleModelUUIDOrderByCreatedDesc[?]"
1238                         + "MODEL_CUSTOMIZATION_UUID=b4ea86b4-253f-11e7-93ae-92361f002672&MODEL_UUID=066de97e-253e-11e7-93ae-92361f002672"))
1239                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1240                                         .withBody(getWiremockResponseForCatalogdb(
1241                                                 "vfModuleCustomizationPCM_Response.json"))
1242                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1243
1244         wireMockServer.stubFor(get(urlMatching(".*/vfModuleCustomization/2/vfModule"))
1245                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1246                         .withBody(getWiremockResponseForCatalogdb("vfModulePCM_Response.json"))
1247                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1248
1249         wireMockServer.stubFor(get(urlMatching(".*/vfModule/066de97e-253e-11e7-93ae-92361f002672"))
1250                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1251                         .withBody(getWiremockResponseForCatalogdb("vfModulePCM_Response.json"))
1252                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1253
1254
1255         wireMockServer.stubFor(
1256                 get(urlMatching(".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVnfComponentTypeAndAction"
1257                         + "[?]vnfComponentType=vfModule&action=createInstance"))
1258                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1259                                         .withBody(getWiremockResponseForCatalogdb(
1260                                                 "vnfComponentRecipeVNF_API_Response.json"))
1261                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1262
1263         // expected response
1264         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1265         RequestReferences requestReferences = new RequestReferences();
1266         requestReferences.setInstanceId("1882939");
1267         requestReferences.setRequestSelfLink(createExpectedSelfLink("v6", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1268         expectedResponse.setRequestReferences(requestReferences);
1269         uri = servInstanceuri + "v6"
1270                 + "/serviceInstances/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules";
1271         ResponseEntity<String> response =
1272                 sendRequest(inputStream("/VfModuleNoModelCustomization.json"), uri, HttpMethod.POST, headers);
1273         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1274         ObjectMapper mapper = new ObjectMapper();
1275         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1276         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1277     }
1278
1279     @Test
1280     public void deleteVfModuleInstanceNoMatchingModelUUD() throws IOException {
1281         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1282                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1283                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1284
1285         wireMockServer.stubFor(get(urlMatching(".*/vnfResource/.*"))
1286                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1287                         .withBody(getWiremockResponseForCatalogdb("vnfResourceForVfModule_Response.json"))
1288                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1289
1290         wireMockServer
1291                 .stubFor(get(urlMatching(".*/vnfResourceCustomization/search/findByModelInstanceNameAndVnfResources.*"))
1292                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1293                                 .withBody(getWiremockResponseForCatalogdb(
1294                                         "vnfResourceCustomizationForVfModule_Response.json"))
1295                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1296
1297         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/3/vfModuleCustomizations"))
1298                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1299                         .withBody(getWiremockResponseForCatalogdb("vfModuleCustomizationsPCM_Response.json"))
1300                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1301
1302         wireMockServer.stubFor(get(urlMatching(
1303                 ".*/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc[?]MODEL_CUSTOMIZATION_UUID=b4ea86b4-253f-11e7-93ae-92361f002672"))
1304                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1305                                 .withBody(getWiremockResponseForCatalogdb("vfModuleCustomizationPCM_Response.json"))
1306                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1307
1308         wireMockServer.stubFor(get(urlMatching(".*/vfModuleCustomization/2/vfModule"))
1309                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1310                         .withBody(getWiremockResponseForCatalogdb("vfModulePCM_Response.json"))
1311                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1312
1313         wireMockServer.stubFor(get(urlMatching(".*/vfModule/066de97e-253e-11e7-93ae-92361f002672"))
1314                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1315                         .withBody(getWiremockResponseForCatalogdb("vfModulePCM_Response.json"))
1316                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1317
1318         wireMockServer.stubFor(get(urlMatching(
1319                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1320                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=vfModule&action=deleteInstance"))
1321                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1322                                         .withBody(getWiremockResponseForCatalogdb(
1323                                                 "vnfComponentRecipeDeleteVfModule_Response.json"))
1324                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1325
1326         // expected response
1327         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1328         RequestReferences requestReferences = new RequestReferences();
1329         requestReferences.setInstanceId("1882939");
1330         requestReferences.setRequestSelfLink(createExpectedSelfLink("v6", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1331         expectedResponse.setRequestReferences(requestReferences);
1332         uri = servInstanceuri + "v6"
1333                 + "/serviceInstances/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules/ff305d54-75b4-431b-adb2-eb6b9e5ff000";
1334         ResponseEntity<String> response =
1335                 sendRequest(inputStream("/VfModuleNoMatchingModelUUID.json"), uri, HttpMethod.DELETE, headers);
1336
1337
1338         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1339         ObjectMapper mapper = new ObjectMapper();
1340         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1341         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1342     }
1343
1344     @Test
1345     public void createVfModuleInstanceNoRecipe() throws IOException {
1346
1347         wireMockServer.stubFor(get(urlMatching(".*/vnfResource/fe6478e4-ea33-3346-ac12-ab121484a3fe"))
1348                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1349                         .withBody(getWiremockResponseForCatalogdb("vnfResourceForVfModule_Response.json"))
1350                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1351
1352         wireMockServer
1353                 .stubFor(get(urlMatching(".*/vnfResourceCustomization/search/findByModelInstanceNameAndVnfResources"
1354                         + "[?]MODEL_INSTANCE_NAME=test&VNF_RESOURCE_MODEL_UUID=fe6478e4-ea33-3346-ac12-ab121484a3fe"))
1355                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1356                                         .withBody(getWiremockResponseForCatalogdb(
1357                                                 "vnfResourceCustomizationForVfModule_Response.json"))
1358                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1359
1360         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/3/vfModuleCustomizations"))
1361                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1362                         .withBody(getWiremockResponseForCatalogdb("vfModuleCustomizationsPCM_Response.json"))
1363                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1364
1365         wireMockServer.stubFor(
1366                 get(urlMatching(".*/vfModuleCustomization/search/findByModelCustomizationUUIDAndVfModuleModelUUID[?]"
1367                         + "modelCustomizationUUID=b4ea86b4-253f-11e7-93ae-92361f002672&vfModuleModelUUID=066de97e-253e-11e7-93ae-92361f002672"))
1368                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1369                                         .withBody(getWiremockResponseForCatalogdb(
1370                                                 "vfModuleCustomizationPCM_Response.json"))
1371                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1372
1373         uri = servInstanceuri + "v6"
1374                 + "/serviceInstances/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules";
1375         ResponseEntity<String> response =
1376                 sendRequest(inputStream("/VfModuleInvalid.json"), uri, HttpMethod.POST, headers);
1377
1378         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
1379         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
1380         assertEquals("No valid vfModuleCustomization is specified", realResponse.getServiceException().getText());
1381     }
1382
1383     @Test
1384     public void replaceVfModuleInstance() throws IOException {
1385         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1386                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1387                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1388
1389         wireMockServer
1390                 .stubFor(get(urlMatching(".*/vfModule/search/findFirstVfModuleByModelInvariantUUIDAndModelVersion[?]"
1391                         + "modelInvariantUUID=78ca26d0-246d-11e7-93ae-92361f002671&modelVersion=2"))
1392                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1393                                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1394                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1395
1396         wireMockServer.stubFor(get(urlMatching(
1397                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1398                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=vfModule&action=replaceInstance"))
1399                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1400                                         .withBody(getWiremockResponseForCatalogdb(
1401                                                 "vnfComponentRecipeDeleteVfModule_Response.json"))
1402                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1403         // expected response
1404         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1405         RequestReferences requestReferences = new RequestReferences();
1406         requestReferences.setInstanceId("1882939");
1407         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1408         expectedResponse.setRequestReferences(requestReferences);
1409         uri = servInstanceuri + "v7"
1410                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules/ff305d54-75b4-431b-adb2-eb6b9e5ff000/replace";
1411         ResponseEntity<String> response =
1412                 sendRequest(inputStream("/ReplaceVfModule.json"), uri, HttpMethod.POST, headers);
1413
1414         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1415         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1416         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1417     }
1418
1419     @Test
1420     public void replaceVfModuleInstanceNoCloudConfigurationTest() throws IOException {
1421         wireMockServer.stubFor(
1422                 get(urlPathEqualTo("/aai/v17/network/generic-vnfs/generic-vnf/ff305d54-75b4-431b-adb2-eb6b9e5ff000"))
1423                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1424                                 .withBodyFile("infra/Vnf.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1425         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1426                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1427                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1428         wireMockServer
1429                 .stubFor(get(urlMatching(".*/vfModule/search/findFirstVfModuleByModelInvariantUUIDAndModelVersion[?]"
1430                         + "modelInvariantUUID=78ca26d0-246d-11e7-93ae-92361f002671&modelVersion=2"))
1431                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1432                                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1433                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1434         wireMockServer.stubFor(get(urlMatching(
1435                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1436                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=vfModule&action=replaceInstance"))
1437                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1438                                         .withBody(getWiremockResponseForCatalogdb(
1439                                                 "vnfComponentRecipeDeleteVfModule_Response.json"))
1440                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1441         // expected response
1442         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1443         RequestReferences requestReferences = new RequestReferences();
1444         requestReferences.setInstanceId("1882939");
1445         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1446         expectedResponse.setRequestReferences(requestReferences);
1447         uri = servInstanceuri + "v7"
1448                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules/ff305d54-75b4-431b-adb2-eb6b9e5ff000/replace";
1449         ResponseEntity<String> response =
1450                 sendRequest(inputStream("/ReplaceVfModuleNoCloudConfig.json"), uri, HttpMethod.POST, headers);
1451
1452         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1453         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1454         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1455     }
1456
1457     @Test
1458     public void updateVfModuleInstance() throws IOException {
1459         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1460                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1461                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1462
1463         wireMockServer.stubFor(get(urlMatching(
1464                 ".*/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc[?]MODEL_CUSTOMIZATION_UUID=cb82ffd8-252a-11e7-93ae-92361f002671"))
1465                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1466                                 .withBody(getWiremockResponseForCatalogdb("vfModuleCustomization_Response.json"))
1467                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1468
1469         wireMockServer.stubFor(get(urlMatching(".*/vfModuleCustomization/1/vfModule"))
1470                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1471                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1472                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1473
1474         wireMockServer.stubFor(get(urlMatching(".*/vfModule/20c4431c-246d-11e7-93ae-92361f002671"))
1475                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1476                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1477                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1478
1479         wireMockServer.stubFor(get(urlMatching(
1480                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1481                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=vfModule&action=updateInstance"))
1482                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1483                                         .withBody(getWiremockResponseForCatalogdb(
1484                                                 "vnfComponentRecipe_GRAPI_Response.json"))
1485                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1486
1487         // expected response
1488         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1489         RequestReferences requestReferences = new RequestReferences();
1490         requestReferences.setInstanceId("1882939");
1491         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1492         expectedResponse.setRequestReferences(requestReferences);
1493         uri = servInstanceuri + "v7"
1494                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules/ff305d54-75b4-431b-adb2-eb6b9e5ff000";
1495         ResponseEntity<String> response =
1496                 sendRequest(inputStream("/UpdateVfModule.json"), uri, HttpMethod.PUT, headers);
1497         logger.debug(response.getBody());
1498
1499         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1500         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1501         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1502     }
1503
1504     @Test
1505     public void createVfModuleNoModelType() throws IOException {
1506         InfraActiveRequests expectedRecord = new InfraActiveRequests();
1507         expectedRecord.setRequestStatus("FAILED");
1508         expectedRecord.setStatusMessage("Error parsing request: No valid modelType is specified");
1509         expectedRecord.setProgress(100L);
1510         expectedRecord.setSource("VID");
1511         expectedRecord.setRequestBody(inputStream("/VfModuleNoModelType.json"));
1512         expectedRecord.setLastModifiedBy("APIH");
1513         expectedRecord.setVfModuleName("testVfModule2");
1514         expectedRecord.setVfModuleModelName("serviceModel");
1515         expectedRecord.setRequestScope("vfModule");
1516         expectedRecord.setRequestAction("createInstance");
1517         expectedRecord.setRequestorId("zz9999");
1518         expectedRecord.setRequestId("32807a28-1a14-4b88-b7b3-2950918aa76d");
1519         // VnfType is not sent in this request, should be blank in db
1520         expectedRecord.setVnfType("");
1521         uri = servInstanceuri
1522                 + "v5/serviceInstances/32807a28-1a14-4b88-b7b3-2950918aa76d/vnfs/32807a28-1a14-4b88-b7b3-2950918aa76d/vfModules";
1523
1524         ResponseEntity<String> response =
1525                 sendRequest(inputStream("/VfModuleNoModelType.json"), uri, HttpMethod.POST, headers);
1526         // ActualRecord
1527         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
1528     }
1529
1530     @Test
1531     public void inPlaceSoftwareUpdate() throws IOException {
1532         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/VnfInPlaceUpdate"))
1533                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1534                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1535
1536         wireMockServer.stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]"
1537                 + "nfRole=GR-API-DEFAULT&action=inPlaceSoftwareUpdate"))
1538                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1539                                 .withBody(getWiremockResponseForCatalogdb("vnfRecipeInPlaceUpdate_Response.json"))
1540                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1541
1542         // expected response
1543         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1544         RequestReferences requestReferences = new RequestReferences();
1545         requestReferences.setInstanceId("1882939");
1546         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1547         expectedResponse.setRequestReferences(requestReferences);
1548         uri = servInstanceuri + "v7"
1549                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/inPlaceSoftwareUpdate";
1550         ResponseEntity<String> response =
1551                 sendRequest(inputStream("/InPlaceSoftwareUpdate.json"), uri, HttpMethod.POST, headers);
1552
1553         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1554         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1555         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1556     }
1557
1558     @Test
1559     public void deleteVfModuleInstance() throws IOException {
1560         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1561                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1562                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1563
1564         wireMockServer
1565                 .stubFor(get(urlMatching(".*/vfModule/search/findFirstVfModuleByModelInvariantUUIDAndModelVersion[?]"
1566                         + "modelInvariantUUID=78ca26d0-246d-11e7-93ae-92361f002671&modelVersion=2"))
1567                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1568                                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1569                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1570
1571         wireMockServer.stubFor(get(urlMatching(
1572                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1573                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=vfModule&action=deleteInstance"))
1574                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1575                                         .withBody(getWiremockResponseForCatalogdb(
1576                                                 "vnfComponentRecipeDeleteVfModule_Response.json"))
1577                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1578
1579         // expected response
1580         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1581         RequestReferences requestReferences = new RequestReferences();
1582         requestReferences.setInstanceId("1882939");
1583         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1584         expectedResponse.setRequestReferences(requestReferences);
1585         uri = servInstanceuri + "v7"
1586                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules/ff305d54-75b4-431b-adb2-eb6b9e5ff000";
1587         ResponseEntity<String> response =
1588                 sendRequest(inputStream("/DeleteVfModule.json"), uri, HttpMethod.DELETE, headers);
1589
1590         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1591         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1592         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1593     }
1594
1595     @Test
1596     public void deleteVfModuleNoModelInvariantId() throws IOException {
1597         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1598                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1599                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1600
1601         wireMockServer.stubFor(get(urlMatching(
1602                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1603                         + "[?]vfModuleModelUUID=VNF-API-DEFAULT&vnfComponentType=vfModule&action=deleteInstance"))
1604                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1605                                         .withBody(getWiremockResponseForCatalogdb(
1606                                                 "vnfComponentRecipeDeleteVfModule_Response.json"))
1607                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1608
1609         // expected response
1610         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1611         RequestReferences requestReferences = new RequestReferences();
1612         requestReferences.setInstanceId("1882939");
1613         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1614         expectedResponse.setRequestReferences(requestReferences);
1615         uri = servInstanceuri + "v7"
1616                 + "/serviceInstances/196b4a84-0858-4317-a1f6-497e2e52ae43/vnfs/36e4f902-ec32-451e-8d53-e3edc19e40a4/vfModules/09f3a38d-933f-450a-8784-9e6c4dec3f72";
1617         ResponseEntity<String> response =
1618                 sendRequest(inputStream("/DeleteVfModuleNoModelInvariantId.json"), uri, HttpMethod.DELETE, headers);
1619
1620         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1621         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1622         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1623     }
1624
1625     @Test
1626     public void deactivateAndCloudDeleteVfModuleInstance() throws IOException {
1627         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1628                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1629                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1630
1631         wireMockServer
1632                 .stubFor(get(urlMatching(".*/vfModule/search/findFirstVfModuleByModelInvariantUUIDAndModelVersion[?]"
1633                         + "modelInvariantUUID=78ca26d0-246d-11e7-93ae-92361f002671&modelVersion=2"))
1634                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1635                                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
1636                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1637
1638         wireMockServer.stubFor(get(urlMatching(
1639                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1640                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=vfModule&action=deactivateAndCloudDelete"))
1641                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1642                                         .withBody(getWiremockResponseForCatalogdb(
1643                                                 "vnfComponentRecipeDeactivate_Response.json"))
1644                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1645
1646         // expected response
1647         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1648         RequestReferences requestReferences = new RequestReferences();
1649         requestReferences.setInstanceId("1882939");
1650         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1651         expectedResponse.setRequestReferences(requestReferences);
1652         uri = servInstanceuri + "v7"
1653                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules/ff305d54-75b4-431b-adb2-eb6b9e5ff000/deactivateAndCloudDelete";
1654         ResponseEntity<String> response =
1655                 sendRequest(inputStream("/DeactivateAndCloudDeleteVfModule.json"), uri, HttpMethod.POST, headers);
1656
1657         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1658         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1659         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1660     }
1661
1662     @Test
1663     public void createVolumeGroupInstance() throws IOException {
1664         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1665                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1666                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1667
1668         wireMockServer.stubFor(get(urlMatching(
1669                 ".*/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc[?]MODEL_CUSTOMIZATION_UUID=b4ea86b4-253f-11e7-93ae-92361f002671"))
1670                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1671                                 .withBody(getWiremockResponseForCatalogdb("vfModuleCustomizationVolGrp_Response.json"))
1672                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1673
1674         wireMockServer.stubFor(get(urlMatching(".*/vfModuleCustomization/1/vfModule"))
1675                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1676                         .withBody(getWiremockResponseForCatalogdb("vfModuleVolGroup_Response.json"))
1677                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1678
1679         wireMockServer.stubFor(get(urlMatching(
1680                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1681                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=volumeGroup&action=createInstance"))
1682                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1683                                         .withBody(getWiremockResponseForCatalogdb(
1684                                                 "vnfComponentRecipeVolGrp_GRAPI_Response.json"))
1685                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1686
1687         // expected response
1688         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1689         RequestReferences requestReferences = new RequestReferences();
1690         requestReferences.setInstanceId("1882939");
1691         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1692         expectedResponse.setRequestReferences(requestReferences);
1693         uri = servInstanceuri + "v7"
1694                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/volumeGroups";
1695         ResponseEntity<String> response = sendRequest(inputStream("/VolumeGroup.json"), uri, HttpMethod.POST, headers);
1696
1697         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1698         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1699         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1700         assertTrue(response.getBody().contains("1882939"));
1701     }
1702
1703     @Test
1704     public void updateVolumeGroupInstance() throws IOException {
1705         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1706                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1707                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1708
1709         wireMockServer.stubFor(get(urlMatching(
1710                 ".*/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc[?]MODEL_CUSTOMIZATION_UUID=b4ea86b4-253f-11e7-93ae-92361f002671"))
1711                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1712                                 .withBody(getWiremockResponseForCatalogdb("vfModuleCustomizationVolGrp_Response.json"))
1713                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1714
1715         wireMockServer.stubFor(get(urlMatching(".*/vfModuleCustomization/1/vfModule"))
1716                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1717                         .withBody(getWiremockResponseForCatalogdb("vfModuleVolGroup_Response.json"))
1718                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1719
1720         wireMockServer.stubFor(get(urlMatching(
1721                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1722                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=volumeGroup&action=updateInstance"))
1723                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1724                                         .withBody(getWiremockResponseForCatalogdb(
1725                                                 "vnfComponentRecipeVolGrp_GRAPI_Response.json"))
1726                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1727
1728         // expected response
1729         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1730         RequestReferences requestReferences = new RequestReferences();
1731         requestReferences.setInstanceId("1882939");
1732         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1733         expectedResponse.setRequestReferences(requestReferences);
1734         uri = servInstanceuri + "v7"
1735                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/volumeGroups/ff305d54-75b4-431b-adb2-eb6b9e5ff000";
1736         ResponseEntity<String> response =
1737                 sendRequest(inputStream("/UpdateVolumeGroup.json"), uri, HttpMethod.PUT, headers);
1738
1739         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1740         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1741         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1742     }
1743
1744     @Test
1745     public void deleteVolumeGroupInstance() throws IOException {
1746         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1747                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1748                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1749
1750         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1751                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1752                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1753
1754         wireMockServer.stubFor(get(urlMatching(
1755                 ".*/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc[?]MODEL_CUSTOMIZATION_UUID=b4ea86b4-253f-11e7-93ae-92361f002671"))
1756                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1757                                 .withBody(getWiremockResponseForCatalogdb("vfModuleCustomizationVolGrp_Response.json"))
1758                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1759
1760         wireMockServer.stubFor(get(urlMatching(".*/vfModuleCustomization/1/vfModule"))
1761                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1762                         .withBody(getWiremockResponseForCatalogdb("vfModuleVolGroup_Response.json"))
1763                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1764
1765         wireMockServer.stubFor(get(urlMatching(
1766                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
1767                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=volumeGroup&action=deleteInstance"))
1768                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1769                                         .withBody(getWiremockResponseForCatalogdb(
1770                                                 "vnfComponentRecipeVolGrp_GRAPI_Response.json"))
1771                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
1772
1773         // expected response
1774         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1775         RequestReferences requestReferences = new RequestReferences();
1776         requestReferences.setInstanceId("1882939");
1777         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1778         expectedResponse.setRequestReferences(requestReferences);
1779         uri = servInstanceuri + "v7"
1780                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/volumeGroups/ff305d54-75b4-431b-adb2-eb6b9e5ff000";
1781         ResponseEntity<String> response =
1782                 sendRequest(inputStream("/DeleteVolumeGroup.json"), uri, HttpMethod.DELETE, headers);
1783
1784         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1785         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1786         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1787     }
1788
1789     @Test
1790     public void createNetworkInstance() throws IOException {
1791         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1792                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1793                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1794
1795         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
1796                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1797                         .withBody(getWiremockResponseForCatalogdb("networkResourceCustomization_Response.json"))
1798                         .withStatus(HttpStatus.SC_OK)));
1799
1800         wireMockServer.stubFor(
1801                 get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac/networkResource"))
1802                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1803                                 .withBody(getWiremockResponseForCatalogdb("networkResource_Response.json"))
1804                                 .withStatus(HttpStatus.SC_OK)));
1805
1806         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
1807                 + "modelName=GR-API-DEFAULT&action=createInstance"))
1808                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1809                                 .withBody(getWiremockResponseForCatalogdb("networkRecipe_Response.json"))
1810                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1811
1812         // expected response
1813         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1814         RequestReferences requestReferences = new RequestReferences();
1815         requestReferences.setInstanceId("1882939");
1816         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1817         expectedResponse.setRequestReferences(requestReferences);
1818         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks";
1819         ResponseEntity<String> response =
1820                 sendRequest(inputStream("/NetworkCreate.json"), uri, HttpMethod.POST, headers);
1821
1822         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1823         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1824         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1825     }
1826
1827     @Test
1828     public void updateNetworkInstance() throws IOException {
1829         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1830                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1831                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1832
1833         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
1834                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1835                         .withBody(getWiremockResponseForCatalogdb("networkResourceCustomization_Response.json"))
1836                         .withStatus(HttpStatus.SC_OK)));
1837
1838         wireMockServer.stubFor(
1839                 get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac/networkResource"))
1840                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1841                                 .withBody(getWiremockResponseForCatalogdb("networkResource_Response.json"))
1842                                 .withStatus(HttpStatus.SC_OK)));
1843
1844         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
1845                 + "modelName=GR-API-DEFAULT&action=updateInstance"))
1846                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1847                                 .withBody(getWiremockResponseForCatalogdb("networkRecipe_Response.json"))
1848                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1849         // expected response
1850         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1851         RequestReferences requestReferences = new RequestReferences();
1852         requestReferences.setInstanceId("1882939");
1853         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1854         expectedResponse.setRequestReferences(requestReferences);
1855         uri = servInstanceuri + "v7"
1856                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks/1710966e-097c-4d63-afda-e0d3bb7015fb";
1857         ResponseEntity<String> response = sendRequest(inputStream("/UpdateNetwork.json"), uri, HttpMethod.PUT, headers);
1858
1859         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1860         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1861         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1862         assertTrue(response.getBody().contains("1882939"));
1863     }
1864
1865     @Test
1866     public void deleteNetworkInstance() throws IOException {
1867         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1868                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1869                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1870
1871         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
1872                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1873                         .withBody(getWiremockResponseForCatalogdb("networkResourceCustomization_Response.json"))
1874                         .withStatus(HttpStatus.SC_OK)));
1875
1876         wireMockServer.stubFor(
1877                 get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac/networkResource"))
1878                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1879                                 .withBody(getWiremockResponseForCatalogdb("networkResource_Response.json"))
1880                                 .withStatus(HttpStatus.SC_OK)));
1881
1882         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
1883                 + "modelName=VNF-API-DEFAULT&action=deleteInstance"))
1884                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1885                                 .withBody(getWiremockResponseForCatalogdb("networkRecipe_Response.json"))
1886                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1887
1888         // expected response
1889         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1890         RequestReferences requestReferences = new RequestReferences();
1891         requestReferences.setInstanceId("1882939");
1892         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1893         expectedResponse.setRequestReferences(requestReferences);
1894         uri = servInstanceuri + "v7"
1895                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks/1710966e-097c-4d63-afda-e0d3bb7015fb";
1896         ResponseEntity<String> response =
1897                 sendRequest(inputStream("/NetworkInstance.json"), uri, HttpMethod.DELETE, headers);
1898
1899         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1900         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1901         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1902     }
1903
1904     @Test
1905     public void deleteNetworkInstanceNoReqParams() throws IOException {
1906         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1907                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1908                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1909
1910         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
1911                 + "modelName=GR-API-DEFAULT&action=deleteInstance"))
1912                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1913                                 .withBody(getWiremockResponseForCatalogdb("networkRecipe_Response.json"))
1914                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
1915
1916
1917         // expected response
1918         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1919         RequestReferences requestReferences = new RequestReferences();
1920         requestReferences.setInstanceId("1882939");
1921         requestReferences.setRequestSelfLink(createExpectedSelfLink("v6", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1922         expectedResponse.setRequestReferences(requestReferences);
1923         uri = servInstanceuri + "v6"
1924                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks/1710966e-097c-4d63-afda-e0d3bb7015fb";
1925         ResponseEntity<String> response =
1926                 sendRequest(inputStream("/NetworkInstanceNoReqParams.json"), uri, HttpMethod.DELETE, headers);
1927
1928         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
1929         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
1930         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
1931     }
1932
1933     @Test
1934     public void convertJsonToServiceInstanceRequestFail() throws IOException {
1935         // ExpectedRecord
1936         InfraActiveRequests expectedRecord = new InfraActiveRequests();
1937         expectedRecord.setRequestStatus("FAILED");
1938         expectedRecord.setStatusMessage("Error mapping request: ");
1939         expectedRecord.setProgress(100L);
1940         expectedRecord.setRequestBody(inputStream("/ConvertRequestFail.json"));
1941         expectedRecord.setLastModifiedBy("APIH");
1942         expectedRecord.setRequestScope("network");
1943         expectedRecord.setRequestAction("deleteInstance");
1944         expectedRecord.setRequestId("32807a28-1a14-4b88-b7b3-2950918aa76d");
1945
1946         uri = servInstanceuri + "v6"
1947                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks/1710966e-097c-4d63-afda-e0d3bb7015fb";
1948         ResponseEntity<String> response =
1949                 sendRequest(inputStream("/ConvertRequestFail.json"), uri, HttpMethod.DELETE, headers);
1950
1951         // ActualRecord
1952
1953         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
1954     }
1955
1956     @Test
1957     public void convertJsonToServiceInstanceRequestConfigurationFail() throws IOException {
1958         uri = servInstanceuri + "v5"
1959                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/configurations/test/enablePort";
1960         ResponseEntity<String> response = sendRequest(inputStream("/ConvertRequestFail.json"), uri, HttpMethod.POST);
1961
1962         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
1963     }
1964
1965     @Test
1966     public void creatServiceInstanceGRTestApiNoCustomRecipeFound() throws IOException {
1967         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
1968                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1969                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
1970
1971         ServiceRecipe serviceRecipe = new ServiceRecipe();
1972         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
1973         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
1974         serviceRecipe.setAction(Action.createInstance.toString());
1975         serviceRecipe.setId(1);
1976         serviceRecipe.setRecipeTimeout(180);
1977         Service defaultService = new Service();
1978         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
1979
1980         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
1981                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1982                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
1983
1984         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
1985                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
1986                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
1987
1988         uri = servInstanceuri + "v7" + "/serviceInstances";
1989         ResponseEntity<String> response =
1990                 sendRequest(inputStream("/ServiceInstanceMacro.json"), uri, HttpMethod.POST, headers);
1991
1992         // expected response
1993         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
1994         RequestReferences requestReferences = new RequestReferences();
1995         requestReferences.setInstanceId("1882939");
1996         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
1997         expectedResponse.setRequestReferences(requestReferences);
1998
1999         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2000         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2001         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2002     }
2003
2004     @Test
2005     public void createNetworkInstanceTestApiUndefinedUsePropertiesDefault() throws IOException {
2006         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2007                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2008                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2009
2010         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
2011                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2012                         .withBody(getWiremockResponseForCatalogdb("networkResourceCustomization_Response.json"))
2013                         .withStatus(HttpStatus.SC_OK)));
2014
2015         wireMockServer.stubFor(
2016                 get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac/networkResource"))
2017                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2018                                 .withBody(getWiremockResponseForCatalogdb("networkResource_Response.json"))
2019                                 .withStatus(HttpStatus.SC_OK)));
2020
2021         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
2022                 + "modelName=GR-API-DEFAULT&action=createInstance"))
2023                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2024                                 .withBody(getWiremockResponseForCatalogdb("networkRecipe_Response.json"))
2025                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2026
2027         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks";
2028         ResponseEntity<String> response =
2029                 sendRequest(inputStream("/NetworkCreateAlternateInstanceName.json"), uri, HttpMethod.POST, headers);
2030
2031         // expected response
2032         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2033         RequestReferences requestReferences = new RequestReferences();
2034         requestReferences.setInstanceId("1882939");
2035         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2036         expectedResponse.setRequestReferences(requestReferences);
2037
2038         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2039         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2040         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2041     }
2042
2043     @Test
2044     public void createNetworkInstanceTestApiIncorrectUsePropertiesDefault() throws IOException {
2045         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2046                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2047                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2048
2049         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks";
2050         ResponseEntity<String> response =
2051                 sendRequest(inputStream("/NetworkCreateTestApiIncorrect.json"), uri, HttpMethod.POST);
2052
2053         // expected response
2054         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2055         RequestReferences requestReferences = new RequestReferences();
2056         requestReferences.setInstanceId("1882939");
2057         expectedResponse.setRequestReferences(requestReferences);
2058
2059         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2060     }
2061
2062     @Test
2063     public void createNetworkInstanceTestApiGrApi() throws IOException {
2064         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2065                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2066                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2067
2068         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
2069                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2070                         .withBody(getWiremockResponseForCatalogdb("networkResourceCustomization_Response.json"))
2071                         .withStatus(HttpStatus.SC_OK)));
2072
2073         wireMockServer.stubFor(
2074                 get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac/networkResource"))
2075                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2076                                 .withBody(getWiremockResponseForCatalogdb("networkResource_Response.json"))
2077                                 .withStatus(HttpStatus.SC_OK)));
2078
2079         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
2080                 + "modelName=GR-API-DEFAULT&action=createInstance"))
2081                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2082                                 .withBody(getWiremockResponseForCatalogdb("networkRecipe_Response.json"))
2083                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2084
2085         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks";
2086         ResponseEntity<String> response =
2087                 sendRequest(inputStream("/NetworkCreateTestApiGrApi.json"), uri, HttpMethod.POST, headers);
2088
2089         // expected response
2090         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2091         RequestReferences requestReferences = new RequestReferences();
2092         requestReferences.setInstanceId("1882939");
2093         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2094         expectedResponse.setRequestReferences(requestReferences);
2095
2096         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2097         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2098         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2099     }
2100
2101     @Test
2102     public void createNetworkInstanceTestApiVnfApi() throws IOException {
2103         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/CreateNetworkInstance"))
2104                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2105                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2106
2107         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
2108                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2109                         .withBody(getWiremockResponseForCatalogdb("networkResourceCustomization_Response.json"))
2110                         .withStatus(HttpStatus.SC_OK)));
2111
2112         wireMockServer.stubFor(
2113                 get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac/networkResource"))
2114                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2115                                 .withBody(getWiremockResponseForCatalogdb("networkResource_Response.json"))
2116                                 .withStatus(HttpStatus.SC_OK)));
2117
2118         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
2119                 + "modelName=VNF-API-DEFAULT&action=createInstance"))
2120                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2121                                 .withBody(getWiremockResponseForCatalogdb("networkRecipeVNF_API_Response.json"))
2122                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2123
2124         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks";
2125         ResponseEntity<String> response =
2126                 sendRequest(inputStream("/NetworkCreateTestApiVnfApi.json"), uri, HttpMethod.POST, headers);
2127
2128         // expected response
2129         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2130         RequestReferences requestReferences = new RequestReferences();
2131         requestReferences.setInstanceId("1882939");
2132         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2133         expectedResponse.setRequestReferences(requestReferences);
2134
2135         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2136         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2137         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2138     }
2139
2140     @Test
2141     public void activateServiceInstanceRequestStatus() throws IOException {
2142         ServiceRecipe serviceRecipe = new ServiceRecipe();
2143         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
2144         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2145         serviceRecipe.setAction(Action.createInstance.toString());
2146         serviceRecipe.setId(1);
2147         serviceRecipe.setRecipeTimeout(180);
2148         Service defaultService = new Service();
2149         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2150
2151         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2152                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2153                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2154
2155         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
2156                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2157                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2158
2159         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
2160                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2161                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
2162
2163         // expect
2164         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2165         RequestReferences requestReferences = new RequestReferences();
2166         requestReferences.setInstanceId("1882939");
2167         requestReferences.setRequestSelfLink(createExpectedSelfLink("v5", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2168         expectedResponse.setRequestReferences(requestReferences);
2169         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7999/activate";
2170         ResponseEntity<String> response =
2171                 sendRequest(inputStream("/ServiceInstancePrev8.json"), uri, HttpMethod.POST, headers);
2172
2173         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2174         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2175         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2176     }
2177
2178     @Test
2179     public void invalidRequestId() throws IOException {
2180         String illegalRequestId = "1234";
2181         HttpHeaders ivalidRequestIdHeaders = new HttpHeaders();
2182         ivalidRequestIdHeaders.set(ONAPLogConstants.Headers.REQUEST_ID, illegalRequestId);
2183         uri = servInstanceuri + "v5/serviceInstances";
2184         ResponseEntity<String> response =
2185                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, ivalidRequestIdHeaders);
2186
2187         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2188         assertTrue(response.getBody().contains("Request Id " + illegalRequestId + " is not a valid UUID"));
2189     }
2190
2191     @Test
2192     public void invalidBPELResponse() throws IOException {
2193
2194         ServiceRecipe serviceRecipe = new ServiceRecipe();
2195         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
2196         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2197         serviceRecipe.setAction(Action.createInstance.toString());
2198         serviceRecipe.setId(1);
2199         serviceRecipe.setRecipeTimeout(180);
2200         Service defaultService = new Service();
2201         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2202
2203         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB")).willReturn(aResponse()
2204                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2205                 .withBodyFile("Camunda/TestResponseInvalid2.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2206
2207         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
2208                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2209                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2210
2211         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
2212                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2213                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
2214
2215         uri = servInstanceuri + "v5/serviceInstances";
2216         ResponseEntity<String> response =
2217                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2218
2219         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2220         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2221         assertEquals("Request Failed due to BPEL error with HTTP Status = 202{\"instanceId\": \"1882939\"}",
2222                 realResponse.getServiceException().getText());
2223     }
2224
2225     @Test
2226     public void unauthorizedBPELResponse() throws IOException {
2227
2228         ServiceRecipe serviceRecipe = new ServiceRecipe();
2229         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
2230         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2231         serviceRecipe.setAction(Action.createInstance.toString());
2232         serviceRecipe.setId(1);
2233         serviceRecipe.setRecipeTimeout(180);
2234         Service defaultService = new Service();
2235         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2236
2237         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2238                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2239                         .withBodyFile("Camunda/UnauthorizedResponse.json")
2240                         .withStatus(org.apache.http.HttpStatus.SC_UNAUTHORIZED)));
2241
2242         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
2243                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2244                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2245
2246         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
2247                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2248                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
2249
2250         uri = servInstanceuri + "v5/serviceInstances";
2251         ResponseEntity<String> response =
2252                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2253
2254         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2255         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2256         assertEquals("Exception caught mapping Camunda JSON response to object",
2257                 realResponse.getServiceException().getText());
2258     }
2259
2260     @Test
2261     public void invalidBPELResponse2() throws IOException {
2262
2263         ServiceRecipe serviceRecipe = new ServiceRecipe();
2264         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
2265         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2266         serviceRecipe.setAction(Action.createInstance.toString());
2267         serviceRecipe.setId(1);
2268         serviceRecipe.setRecipeTimeout(180);
2269         Service defaultService = new Service();
2270         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2271
2272         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB")).willReturn(aResponse()
2273                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2274                 .withBodyFile("Camunda/TestResponseInvalid.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2275
2276         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
2277                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2278                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2279
2280         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
2281                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2282                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
2283         uri = servInstanceuri + "v5/serviceInstances";
2284         ResponseEntity<String> response =
2285                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2286
2287         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2288         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2289         assertTrue(realResponse.getServiceException().getText()
2290                 .contains("<aetgt:ErrorMessage>Exception in create execution list 500"));
2291     }
2292
2293     @Test
2294     public void createMacroServiceInstance() throws IOException {
2295         ServiceRecipe serviceRecipe = new ServiceRecipe();
2296         serviceRecipe.setOrchestrationUri("/mso/async/services/CreateMacroServiceNetworkVnf");
2297         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2298         serviceRecipe.setAction(Action.createInstance.toString());
2299         serviceRecipe.setId(1);
2300         serviceRecipe.setRecipeTimeout(180);
2301         Service defaultService = new Service();
2302         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2303
2304         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/CreateMacroServiceNetworkVnf"))
2305                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2306                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2307
2308         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB")).willReturn(aResponse()
2309                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2310                 .withBodyFile("Camunda/TestResponseInvalid.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2311
2312         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
2313                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2314                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2315
2316         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
2317                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2318                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
2319
2320         // expect
2321         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2322         RequestReferences requestReferences = new RequestReferences();
2323         requestReferences.setInstanceId("1882939");
2324         requestReferences.setRequestSelfLink(createExpectedSelfLink("v5", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2325         expectedResponse.setRequestReferences(requestReferences);
2326         uri = servInstanceuri + "v5";
2327         ResponseEntity<String> response =
2328                 sendRequest(inputStream("/MacroServiceInstance.json"), uri, HttpMethod.POST, headers);
2329
2330         // then
2331         assertEquals(404, response.getStatusCode().value());
2332     }
2333
2334     @Test
2335     public void testUserParams() throws IOException {
2336         ObjectMapper mapper = new ObjectMapper();
2337         ServiceInstancesRequest request =
2338                 mapper.readValue(inputStream("/MacroServiceInstance.json"), ServiceInstancesRequest.class);
2339         RequestParameters requestParameters = request.getRequestDetails().getRequestParameters();
2340         String userParamsTxt = inputStream("/userParams.txt");
2341
2342         List<Map<String, Object>> userParams = requestHandlerUtils.configureUserParams(requestParameters);
2343         System.out.println(userParams);
2344         assertTrue(userParams.size() > 0);
2345         assertTrue(userParams.get(0).containsKey("name"));
2346         assertTrue(userParams.get(0).containsKey("value"));
2347         assertEquals(userParamsTxt.replaceAll("\\s+", ""), userParams.toString().replaceAll("\\s+", ""));
2348     }
2349
2350     @Test
2351     public void testConfigureCloudConfig() throws IOException {
2352         ObjectMapper mapper = new ObjectMapper();
2353         ServiceInstancesRequest request =
2354                 mapper.readValue(inputStream("/MacroServiceInstance.json"), ServiceInstancesRequest.class);
2355         CloudConfiguration cloudConfig =
2356                 requestHandlerUtils.configureCloudConfig(request.getRequestDetails().getRequestParameters());
2357
2358         assertEquals("mdt25b", cloudConfig.getLcpCloudRegionId());
2359         assertEquals("aefb697db6524ddebfe4915591b0a347", cloudConfig.getTenantId());
2360     }
2361
2362     @Test
2363     public void testMapToLegacyRequest() throws IOException {
2364         ObjectMapper mapper = new ObjectMapper();
2365         ServiceInstancesRequest request =
2366                 mapper.readValue(inputStream("/MacroServiceInstance.json"), ServiceInstancesRequest.class);
2367         ServiceInstancesRequest expected =
2368                 mapper.readValue(inputStream("/LegacyMacroServiceInstance.json"), ServiceInstancesRequest.class);
2369         requestHandlerUtils.mapToLegacyRequest(request.getRequestDetails());
2370         System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(request));
2371         assertThat(request, sameBeanAs(expected));
2372     }
2373
2374     @Test
2375     public void scaleOutVfModule() throws IOException {
2376         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2377                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2378                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2379
2380         wireMockServer.stubFor(get(urlMatching(
2381                 ".*/vfModuleCustomization/search/findFirstByModelCustomizationUUIDOrderByCreatedDesc[?]MODEL_CUSTOMIZATION_UUID=cb82ffd8-252a-11e7-93ae-92361f002671"))
2382                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2383                                 .withBody(getWiremockResponseForCatalogdb("vfModuleCustomization_Response.json"))
2384                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2385
2386         wireMockServer.stubFor(get(urlMatching(".*/vfModuleCustomization/1/vfModule"))
2387                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2388                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
2389                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
2390
2391         wireMockServer.stubFor(get(urlMatching(".*/vfModule/20c4431c-246d-11e7-93ae-92361f002671"))
2392                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2393                         .withBody(getWiremockResponseForCatalogdb("vfModule_Response.json"))
2394                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
2395
2396
2397         wireMockServer.stubFor(get(urlMatching(
2398                 ".*/vnfComponentsRecipe/search/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction"
2399                         + "[?]vfModuleModelUUID=GR-API-DEFAULT&vnfComponentType=vfModule&action=scaleOut"))
2400                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2401                                         .withBody(getWiremockResponseForCatalogdb(
2402                                                 "vnfComponentRecipeVfModuleScaleOut_Response.json"))
2403                                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
2404
2405         wireMockServer.stubFor(get(urlMatching(
2406                 ".*/vfModule/search/findByModelInvariantUUIDOrderByModelVersionDesc[?]modelInvariantUUID=78ca26d0-246d-11e7-93ae-92361f002671"))
2407                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2408                                 .withBody(getWiremockResponseForCatalogdb("vfModulesListByInvariantId_Response.json"))
2409                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2410
2411         // expected response
2412         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2413         RequestReferences requestReferences = new RequestReferences();
2414         requestReferences.setInstanceId("1882939");
2415         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2416         expectedResponse.setRequestReferences(requestReferences);
2417         uri = servInstanceuri + "v7"
2418                 + "/serviceInstances/7a88cbeb-0ec8-4765-a271-4f9e90c3da7b/vnfs/cbba721b-4803-4df7-9347-307c9a955426/vfModules/scaleOut";
2419         ResponseEntity<String> response =
2420                 sendRequest(inputStream("/ScaleOutRequest.json"), uri, HttpMethod.POST, headers);
2421
2422         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2423         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2424         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2425         assertTrue(response.getBody().contains("1882939"));
2426     }
2427
2428     @Test
2429     public void createServiceInstanceBadResponse() throws IOException {
2430         ServiceRecipe serviceRecipe = new ServiceRecipe();
2431         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
2432         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2433         serviceRecipe.setAction(Action.createInstance.toString());
2434         serviceRecipe.setId(1);
2435         serviceRecipe.setRecipeTimeout(180);
2436         Service defaultService = new Service();
2437         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2438
2439         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2440                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2441                         .withBodyFile("Camunda/TestBadResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2442
2443         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
2444                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2445                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2446
2447         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
2448                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2449                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
2450
2451         uri = servInstanceuri + "v5/serviceInstances";
2452         ResponseEntity<String> response =
2453                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2454
2455         assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatusCode().value());
2456         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2457         assertEquals("Exception caught mapping Camunda JSON response to object",
2458                 realResponse.getServiceException().getText());
2459     }
2460
2461     @Test
2462     public void createServiceInstanceDuplicateError() throws IOException {
2463         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/checkInstanceNameDuplicate"))
2464                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2465                         .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
2466
2467         uri = servInstanceuri + "v5/serviceInstances";
2468         ResponseEntity<String> response =
2469                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2470
2471         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2472         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2473         assertEquals(
2474                 "Unable to check for duplicate instance due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
2475                 realResponse.getServiceException().getText());
2476     }
2477
2478     @Test
2479     public void createServiceInstanceDuplicateHistoryCheck() throws IOException {
2480         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/checkInstanceNameDuplicate"))
2481                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2482                         .withBodyFile("InfraActiveRequests/createInfraActiveRequests.json")
2483                         .withStatus(HttpStatus.SC_ACCEPTED)));
2484         wireMockServer.stubFor(get(
2485                 ("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
2486                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2487                                 .withBodyFile("Camunda/HistoryCheckResponse.json")
2488                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2489
2490         uri = servInstanceuri + "v5/serviceInstances";
2491         ResponseEntity<String> response =
2492                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2493
2494         assertEquals(Response.Status.CONFLICT.getStatusCode(), response.getStatusCode().value());
2495         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2496         assertEquals(
2497                 "Error: Locked instance - This service (testService9) already has a request being worked with a status of UNLOCKED (RequestId - f0a35706-efc4-4e27-80ea-a995d7a2a40f). The existing request must finish or be cleaned up before proceeding.",
2498                 realResponse.getServiceException().getText());
2499     }
2500
2501     @Test
2502     public void createServiceInstanceDuplicateHistoryCheckException() throws IOException {
2503         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/checkInstanceNameDuplicate"))
2504                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2505                         .withBodyFile("InfraActiveRequests/createInfraActiveRequests.json")
2506                         .withStatus(HttpStatus.SC_ACCEPTED)));
2507         wireMockServer.stubFor(get(
2508                 ("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
2509                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2510                                 .withStatus(org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR)));
2511
2512         uri = servInstanceuri + "v5/serviceInstances";
2513         ResponseEntity<String> response =
2514                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2515
2516         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2517         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2518         assertEquals(
2519                 "Unable to get process-instance history from Camunda for requestId: f0a35706-efc4-4e27-80ea-a995d7a2a40f due to error: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
2520                 realResponse.getServiceException().getText());
2521     }
2522
2523     @Test
2524     public void createServiceInstanceDuplicate() throws IOException {
2525         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/checkInstanceNameDuplicate"))
2526                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2527                         .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
2528
2529         uri = servInstanceuri + "v5/serviceInstances";
2530         ResponseEntity<String> response =
2531                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2532
2533         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2534         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2535         assertEquals(
2536                 "Unable to check for duplicate instance due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
2537                 realResponse.getServiceException().getText());
2538     }
2539
2540     @Test
2541     public void createServiceInstanceSaveError() throws IOException {
2542         ServiceRecipe serviceRecipe = new ServiceRecipe();
2543         serviceRecipe.setOrchestrationUri("/mso/async/services/WorkflowActionBB");
2544         serviceRecipe.setServiceModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2545         serviceRecipe.setAction(Action.createInstance.toString());
2546         serviceRecipe.setId(1);
2547         serviceRecipe.setRecipeTimeout(180);
2548         Service defaultService = new Service();
2549         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
2550         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/"))
2551                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2552                         .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
2553         wireMockServer.stubFor(get(urlMatching(".*/service/.*"))
2554                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2555                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2556
2557         wireMockServer.stubFor(get(urlMatching(".*/serviceRecipe/search.*"))
2558                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2559                         .withBody(mapper.writeValueAsString(serviceRecipe)).withStatus(HttpStatus.SC_OK)));
2560
2561         uri = servInstanceuri + "v5/serviceInstances";
2562         ResponseEntity<String> response =
2563                 sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
2564
2565         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2566         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2567         assertEquals(
2568                 "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
2569                 realResponse.getServiceException().getText());
2570     }
2571
2572     @Test
2573     public void createPortConfigurationSaveError() throws IOException {
2574         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/"))
2575                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2576                         .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
2577         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
2578                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2579                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2580
2581         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations";
2582         ResponseEntity<String> response =
2583                 sendRequest(inputStream("/ServiceInstancePortConfiguration.json"), uri, HttpMethod.POST, headers);
2584
2585         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2586         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2587         assertEquals(
2588                 "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
2589                 realResponse.getServiceException().getText());
2590     }
2591
2592     @Test
2593     public void createPortConfigDbUpdateError() throws IOException {
2594         wireMockServer.stubFor(post(urlMatching(".*/infraActiveRequests/"))
2595                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2596                         .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
2597
2598         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations";
2599         ResponseEntity<String> response =
2600                 sendRequest(inputStream("/ServiceInstanceParseFail.json"), uri, HttpMethod.POST, headers);
2601
2602         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
2603         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2604         assertEquals(
2605                 "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
2606                 realResponse.getServiceException().getText());
2607     }
2608
2609     @Test
2610     public void vnfUpdateWithNetworkInstanceGroup() throws IOException {
2611         TestAppender.events.clear();
2612         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2613                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2614                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2615
2616         wireMockServer.stubFor(get(urlMatching(
2617                 ".*/vnfResourceCustomization/search/findByModelCustomizationUUID[?]MODEL_CUSTOMIZATION_UUID=2ccae1b4-7d9e-46fa-a452-9180ce008d17"))
2618                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2619                                 .withBody(getWiremockResponseForCatalogdb("vnfResourceCustomization_Response.json"))
2620                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2621
2622         wireMockServer.stubFor(get(urlMatching(".*/vnfResourceCustomization/4/vnfResources"))
2623                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2624                         .withBody(getWiremockResponseForCatalogdb("vnfResources_Response.json"))
2625                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
2626
2627         wireMockServer.stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction"
2628                 + "[?]nfRole=GR-API-DEFAULT&action=updateInstance"))
2629                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2630                                 .withBody(getWiremockResponseForCatalogdb("UpdateVnfRecipe_Response.json"))
2631                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2632         headers.set(ONAPLogConstants.Headers.PARTNER_NAME, "VID");
2633         // expect
2634         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2635         RequestReferences requestReferences = new RequestReferences();
2636         requestReferences.setInstanceId("1882939");
2637         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2638         expectedResponse.setRequestReferences(requestReferences);
2639         uri = servInstanceuri
2640                 + "v7/serviceInstances/e05864f0-ab35-47d0-8be4-56fd9619ba3c/vnfs/f501ce76-a9bc-4601-9837-74fd9f4d5eca";
2641         ResponseEntity<String> response =
2642                 sendRequest(inputStream("/VnfwithNeteworkInstanceGroup.json"), uri, HttpMethod.PUT, headers);
2643         // then
2644         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2645         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2646         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2647         assertEquals(response.getHeaders().get(TRANSACTION_ID).get(0), "32807a28-1a14-4b88-b7b3-2950918aa76d");
2648
2649         for (ILoggingEvent logEvent : TestAppender.events) {
2650             if (logEvent.getLoggerName().equals("org.onap.so.logging.jaxrs.filter.SOAuditLogContainerFilter")
2651                     && logEvent.getMarker() != null && logEvent.getMarker().getName().equals("ENTRY")) {
2652                 Map<String, String> mdc = logEvent.getMDCPropertyMap();
2653                 assertEquals("32807a28-1a14-4b88-b7b3-2950918aa76d", mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
2654                 assertEquals("VID", mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
2655             }
2656         }
2657     }
2658
2659     @Test
2660     public void createInstanceGroup() throws IOException {
2661         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2662                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2663                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2664
2665         // expect
2666         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2667         RequestReferences requestReferences = new RequestReferences();
2668         requestReferences.setInstanceId("1882939");
2669         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2670         expectedResponse.setRequestReferences(requestReferences);
2671         uri = servInstanceuri + "/v7/instanceGroups";
2672         ResponseEntity<String> response =
2673                 sendRequest(inputStream("/CreateInstanceGroup.json"), uri, HttpMethod.POST, headers);
2674
2675         // then
2676         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2677         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2678         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2679     }
2680
2681     @Test
2682     public void deleteInstanceGroup() throws IOException {
2683         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2684                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2685                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2686
2687         // expect
2688         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2689         RequestReferences requestReferences = new RequestReferences();
2690         requestReferences.setInstanceId("1882939");
2691         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2692         expectedResponse.setRequestReferences(requestReferences);
2693         uri = servInstanceuri + "/v7/instanceGroups/e05864f0-ab35-47d0-8be4-56fd9619ba3c";
2694         ResponseEntity<String> response = sendRequest(null, uri, HttpMethod.DELETE, headers);
2695
2696         // then
2697         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2698         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2699         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2700     }
2701
2702     @Test
2703     public void deleteInstanceGroupNoRequestIdHeader() throws IOException {
2704         uri = servInstanceuri + "/v7/instanceGroups/e05864f0-ab35-47d0-8be4-56fd9619ba3c";
2705         ResponseEntity<String> response = sendRequest(null, uri, HttpMethod.DELETE);
2706         // then
2707         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
2708         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2709         assertEquals(realResponse.getServiceException().getText(), "No valid X-ONAP-RequestID header is specified");
2710     }
2711
2712     @Test
2713     public void deleteInstanceGroupNoPartnerNameHeader() throws IOException {
2714         HttpHeaders noPartnerHeaders = new HttpHeaders();
2715         noPartnerHeaders.set(ONAPLogConstants.Headers.REQUEST_ID, "eca3a1b1-43ab-457e-ab1c-367263d148b4");
2716         noPartnerHeaders.set(REQUESTOR_ID, "xxxxxx");
2717         uri = servInstanceuri + "/v7/instanceGroups/e05864f0-ab35-47d0-8be4-56fd9619ba3c";
2718         ResponseEntity<String> response = sendRequest(null, uri, HttpMethod.DELETE, noPartnerHeaders);
2719         // then
2720         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
2721         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2722         assertEquals(realResponse.getServiceException().getText(), "No valid X-ONAP-PartnerName header is specified");
2723     }
2724
2725     @Test
2726     public void deleteInstanceGroupNoRquestorIdHeader() throws IOException {
2727         HttpHeaders noRequestorIdHheaders = new HttpHeaders();
2728         noRequestorIdHheaders.set(ONAPLogConstants.Headers.REQUEST_ID, "eca3a1b1-43ab-457e-ab1c-367263d148b4");
2729         noRequestorIdHheaders.set(ONAPLogConstants.Headers.PARTNER_NAME, "eca3a1b1-43ab-457e-ab1c-367263d148b4");
2730         // expect
2731         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2732         RequestReferences requestReferences = new RequestReferences();
2733         requestReferences.setInstanceId("1882939");
2734         expectedResponse.setRequestReferences(requestReferences);
2735         uri = servInstanceuri + "/v7/instanceGroups/e05864f0-ab35-47d0-8be4-56fd9619ba3c";
2736         ResponseEntity<String> response = sendRequest(null, uri, HttpMethod.DELETE, noRequestorIdHheaders);
2737
2738         // then
2739         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
2740         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2741         assertEquals(realResponse.getServiceException().getText(), "No valid X-RequestorID header is specified");
2742     }
2743
2744     @Test
2745     public void addMembers() throws IOException {
2746         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2747                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2748                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2749         // expect
2750         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2751         RequestReferences requestReferences = new RequestReferences();
2752         requestReferences.setInstanceId("1882939");
2753         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2754         expectedResponse.setRequestReferences(requestReferences);
2755         uri = servInstanceuri + "/v7/instanceGroups/e05864f0-ab35-47d0-8be4-56fd9619ba3c/addMembers";
2756         ResponseEntity<String> response = sendRequest(inputStream("/AddMembers.json"), uri, HttpMethod.POST, headers);
2757
2758         // then
2759         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2760         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2761         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2762     }
2763
2764     @Test
2765     public void removeMembers() throws IOException {
2766         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2767                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2768                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2769         // expect
2770         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2771         RequestReferences requestReferences = new RequestReferences();
2772         requestReferences.setInstanceId("1882939");
2773         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2774         expectedResponse.setRequestReferences(requestReferences);
2775         uri = servInstanceuri + "/v7/instanceGroups/e05864f0-ab35-47d0-8be4-56fd9619ba3c/removeMembers";
2776         ResponseEntity<String> response =
2777                 sendRequest(inputStream("/RemoveMembers.json"), uri, HttpMethod.POST, headers);
2778
2779         // then
2780         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2781         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2782         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2783     }
2784
2785     @Test
2786     public void deleteNetworkInstanceNoCustomizationEntry() throws IOException {
2787         wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
2788                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2789                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
2790
2791         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
2792                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2793                         .withStatus(HttpStatus.SC_NOT_FOUND)));
2794
2795         wireMockServer.stubFor(get(urlMatching(".*/networkRecipe/search/findFirstByModelNameAndAction[?]"
2796                 + "modelName=VNF-API-DEFAULT&action=deleteInstance"))
2797                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2798                                 .withBody(getWiremockResponseForCatalogdb("networkRecipe_Response.json"))
2799                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2800
2801         // expected response
2802         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
2803         RequestReferences requestReferences = new RequestReferences();
2804         requestReferences.setInstanceId("1882939");
2805         requestReferences.setRequestSelfLink(createExpectedSelfLink("v7", "32807a28-1a14-4b88-b7b3-2950918aa76d"));
2806         expectedResponse.setRequestReferences(requestReferences);
2807         uri = servInstanceuri + "v7"
2808                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks/1710966e-097c-4d63-afda-e0d3bb7015fb";
2809         ResponseEntity<String> response =
2810                 sendRequest(inputStream("/NetworkInstance.json"), uri, HttpMethod.DELETE, headers);
2811
2812         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
2813         ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
2814         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));
2815     }
2816
2817     @Test
2818     public void updateNetworkInstanceNoCustomizationEntry() throws IOException {
2819         wireMockServer.stubFor(get(urlMatching(".*/networkResourceCustomization/3bdbb104-476c-483e-9f8b-c095b3d308ac"))
2820                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2821                         .withStatus(HttpStatus.SC_NOT_FOUND)));
2822
2823         uri = servInstanceuri + "v7"
2824                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks/1710966e-097c-4d63-afda-e0d3bb7015fb";
2825         ResponseEntity<String> response = sendRequest(inputStream("/UpdateNetwork.json"), uri, HttpMethod.PUT, headers);
2826
2827         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
2828         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
2829         assertEquals(realResponse.getServiceException().getText(),
2830                 "No valid modelCustomizationId for networkResourceCustomization lookup is specified");
2831     }
2832
2833     @Test
2834     public void setServiceTypeTestALaCarte() throws JsonProcessingException {
2835         String requestScope = ModelType.service.toString();
2836         Boolean aLaCarteFlag = true;
2837         ServiceInstancesRequest sir = new ServiceInstancesRequest();
2838         RequestDetails requestDetails = new RequestDetails();
2839         RequestInfo requestInfo = new RequestInfo();
2840         requestInfo.setSource("VID");
2841         requestDetails.setRequestInfo(requestInfo);
2842         sir.setRequestDetails(requestDetails);
2843         Service defaultService = new Service();
2844         defaultService.setServiceType("testServiceTypeALaCarte");
2845
2846         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
2847                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2848                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2849
2850         String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
2851         assertEquals(serviceType, "testServiceTypeALaCarte");
2852     }
2853
2854     @Test
2855     public void setServiceTypeTest() throws JsonProcessingException {
2856         String requestScope = ModelType.service.toString();
2857         Boolean aLaCarteFlag = false;
2858         ServiceInstancesRequest sir = new ServiceInstancesRequest();
2859         RequestDetails requestDetails = new RequestDetails();
2860         RequestInfo requestInfo = new RequestInfo();
2861         ModelInfo modelInfo = new ModelInfo();
2862         modelInfo.setModelVersionId("0dd91181-49da-446b-b839-cd959a96f04a");
2863         requestInfo.setSource("VID");
2864         requestDetails.setModelInfo(modelInfo);
2865         requestDetails.setRequestInfo(requestInfo);
2866         sir.setRequestDetails(requestDetails);
2867         Service defaultService = new Service();
2868         defaultService.setServiceType("testServiceType");
2869
2870         wireMockServer.stubFor(get(urlMatching(".*/service/0dd91181-49da-446b-b839-cd959a96f04a"))
2871                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2872                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2873
2874         String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
2875         assertEquals(serviceType, "testServiceType");
2876     }
2877
2878     @Test
2879     public void setServiceTypeTestDefault() throws JsonProcessingException {
2880         String requestScope = ModelType.service.toString();
2881         Boolean aLaCarteFlag = false;
2882         ServiceInstancesRequest sir = new ServiceInstancesRequest();
2883         RequestDetails requestDetails = new RequestDetails();
2884         RequestInfo requestInfo = new RequestInfo();
2885         ModelInfo modelInfo = new ModelInfo();
2886         modelInfo.setModelVersionId("0dd91181-49da-446b-b839-cd959a96f04a");
2887         requestInfo.setSource("VID");
2888         requestDetails.setModelInfo(modelInfo);
2889         requestDetails.setRequestInfo(requestInfo);
2890         sir.setRequestDetails(requestDetails);
2891         Service defaultService = new Service();
2892         defaultService.setServiceType("testServiceType");
2893
2894         wireMockServer.stubFor(get(urlMatching(".*/service/0dd91181-49da-446b-b839-cd959a96f04a"))
2895                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2896                         .withStatus(HttpStatus.SC_NOT_FOUND)));
2897         wireMockServer.stubFor(get(urlMatching(".*/service/search/.*"))
2898                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2899                         .withBody(mapper.writeValueAsString(defaultService)).withStatus(HttpStatus.SC_OK)));
2900
2901         String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
2902         assertEquals(serviceType, "testServiceType");
2903     }
2904
2905     @Test
2906     public void setServiceTypeTestNetwork() throws JsonProcessingException {
2907         String requestScope = ModelType.network.toString();
2908         Boolean aLaCarteFlag = null;
2909         ServiceInstancesRequest sir = new ServiceInstancesRequest();
2910         RequestDetails requestDetails = new RequestDetails();
2911         RequestInfo requestInfo = new RequestInfo();
2912         ModelInfo modelInfo = new ModelInfo();
2913         modelInfo.setModelName("networkModelName");
2914         requestInfo.setSource("VID");
2915         requestDetails.setModelInfo(modelInfo);
2916         requestDetails.setRequestInfo(requestInfo);
2917         sir.setRequestDetails(requestDetails);
2918
2919         String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
2920         assertEquals(serviceType, "networkModelName");
2921     }
2922
2923     @Test
2924     public void setServiceInstanceIdInstanceGroupTest() throws JsonParseException, JsonMappingException, IOException {
2925         String requestScope = "instanceGroup";
2926         ServiceInstancesRequest sir =
2927                 mapper.readValue(inputStream("/CreateInstanceGroup.json"), ServiceInstancesRequest.class);
2928         assertEquals("ddcbbf3d-f2c1-4ca0-8852-76a807285efc",
2929                 requestHandlerUtils.setServiceInstanceId(requestScope, sir));
2930     }
2931
2932     @Test
2933     public void setServiceInstanceIdTest() {
2934         String requestScope = "vnf";
2935         ServiceInstancesRequest sir = new ServiceInstancesRequest();
2936         sir.setServiceInstanceId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
2937         assertEquals("f0a35706-efc4-4e27-80ea-a995d7a2a40f",
2938                 requestHandlerUtils.setServiceInstanceId(requestScope, sir));
2939     }
2940
2941     @Test
2942     public void setServiceInstanceIdReturnNullTest() {
2943         String requestScope = "vnf";
2944         ServiceInstancesRequest sir = new ServiceInstancesRequest();
2945         assertNull(requestHandlerUtils.setServiceInstanceId(requestScope, sir));
2946     }
2947
2948     @Test
2949     public void camundaHistoryCheckTest() throws ContactCamundaException, RequestDbFailureException {
2950         wireMockServer.stubFor(get(
2951                 ("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
2952                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2953                                 .withBodyFile("Camunda/HistoryCheckResponse.json")
2954                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2955
2956         InfraActiveRequests duplicateRecord = new InfraActiveRequests();
2957         duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
2958         boolean inProgress = false;
2959         inProgress = requestHandlerUtils.camundaHistoryCheck(duplicateRecord, null);
2960         assertTrue(inProgress);
2961     }
2962
2963     @Test
2964     public void camundaHistoryCheckNoneFoundTest() throws ContactCamundaException, RequestDbFailureException {
2965         wireMockServer.stubFor(get(
2966                 ("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
2967                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2968                                 .withBody("[]").withStatus(org.apache.http.HttpStatus.SC_OK)));
2969
2970         InfraActiveRequests duplicateRecord = new InfraActiveRequests();
2971         duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
2972         boolean inProgress = false;
2973         inProgress = requestHandlerUtils.camundaHistoryCheck(duplicateRecord, null);
2974         assertFalse(inProgress);
2975     }
2976
2977     @Test
2978     public void camundaHistoryCheckNotInProgressTest() throws ContactCamundaException, RequestDbFailureException {
2979         wireMockServer.stubFor(get(
2980                 ("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
2981                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
2982                                 .withBodyFile("Camunda/HistoryCheckResponseCompleted.json")
2983                                 .withStatus(org.apache.http.HttpStatus.SC_OK)));
2984
2985         InfraActiveRequests duplicateRecord = new InfraActiveRequests();
2986         duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
2987         boolean inProgress = false;
2988         inProgress = requestHandlerUtils.camundaHistoryCheck(duplicateRecord, null);
2989         assertFalse(inProgress);
2990     }
2991
2992     @Test
2993     public void handleReplaceInstance_Test() throws JsonParseException, JsonMappingException, IOException {
2994         String replaceVfModule = inputStream("/ReplaceVfModule.json");
2995         ObjectMapper mapper = new ObjectMapper();
2996         ServiceInstancesRequest sir = mapper.readValue(replaceVfModule, ServiceInstancesRequest.class);
2997         Actions action = servInstances.handleReplaceInstance(Action.replaceInstance, sir);
2998         assertEquals(Action.replaceInstance, action);
2999     }
3000
3001     @Test
3002     public void handleReplaceInstance_retainAssignments_Test()
3003             throws JsonParseException, JsonMappingException, IOException {
3004         String replaceVfModule = inputStream("/ReplaceVfModuleRetainAssignments.json");
3005         ObjectMapper mapper = new ObjectMapper();
3006         ServiceInstancesRequest sir = mapper.readValue(replaceVfModule, ServiceInstancesRequest.class);
3007         Actions action = servInstances.handleReplaceInstance(Action.replaceInstance, sir);
3008         assertEquals(Action.replaceInstanceRetainAssignments, action);
3009     }
3010
3011     @Test
3012     public void getCloudConfigurationAAIEntityNotFoundTest() throws IOException {
3013         RequestError expectedResponse =
3014                 mapper.readValue(inputStream("/AAIEntityNotFoundResponse.json"), RequestError.class);
3015         uri = servInstanceuri + "v7"
3016                 + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vfModules/ff305d54-75b4-431b-adb2-eb6b9e5ff000/replace";
3017         ResponseEntity<String> response =
3018                 sendRequest(inputStream("/ReplaceVfModuleNoCloudConfig.json"), uri, HttpMethod.POST, headers);
3019
3020         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
3021         RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
3022         assertThat(expectedResponse, sameBeanAs(realResponse));
3023     }
3024
3025 }
3026