2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2020 Nordix
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.apihandlerinfra;
25 import com.fasterxml.jackson.databind.DeserializationFeature;
26 import com.fasterxml.jackson.databind.JsonMappingException;
27 import com.fasterxml.jackson.databind.ObjectMapper;
28 import org.json.JSONException;
29 import org.junit.Test;
30 import org.onap.so.apihandlerinfra.workflowspecificationbeans.WorkflowInputParameter;
31 import org.onap.so.apihandlerinfra.workflowspecificationbeans.WorkflowSpecifications;
32 import org.onap.so.db.catalog.beans.*;
33 import org.skyscreamer.jsonassert.JSONAssert;
34 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.beans.factory.annotation.Value;
36 import org.springframework.http.HttpEntity;
37 import org.springframework.http.HttpHeaders;
38 import org.springframework.http.HttpMethod;
39 import org.springframework.http.ResponseEntity;
40 import org.springframework.util.ResourceUtils;
41 import org.springframework.web.util.UriComponentsBuilder;
42 import javax.ws.rs.core.MediaType;
43 import javax.ws.rs.core.Response;
45 import java.io.IOException;
46 import java.nio.file.Files;
47 import java.nio.file.Paths;
48 import java.util.ArrayList;
49 import java.util.List;
50 import static com.github.tomakehurst.wiremock.client.WireMock.*;
51 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
52 import static org.junit.Assert.assertEquals;
53 import static org.junit.Assert.assertThat;
55 public class WorkflowSpecificationsHandlerTest extends BaseTest {
57 WorkflowSpecificationsHandler workflowSpecificationsHandler;
62 @Value("${wiremock.server.port}")
63 private String wiremockPort;
65 private final String basePath = "/onap/so/infra/workflowSpecifications";
68 public void queryWorkflowSpecificationsByVnfModelUUID_Test_Success()
69 throws JSONException, JsonMappingException, IOException {
71 final String urlPath = basePath + "/v1/workflows";
72 HttpHeaders headers = new HttpHeaders();
73 headers.set("Accept", MediaType.APPLICATION_JSON);
74 headers.set("Content-Type", MediaType.APPLICATION_JSON);
75 HttpEntity<String> entity = new HttpEntity<String>(null, headers);
77 wireMockServer.stubFor(get(urlMatching(
78 "/workflow/search/findWorkflowByVnfModelUUID[?]vnfResourceModelUUID=b5fa707a-f55a-11e7-a796-005056856d52"))
79 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
80 .withBody(getWiremockResponseForCatalogdb("WorkflowSpecificationsQuery_Response.json"))
81 .withStatus(org.apache.http.HttpStatus.SC_OK)));
83 wireMockServer.stubFor(get(urlMatching("/workflow/1/workflowActivitySpecSequence"))
84 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
85 .withBody(getWiremockResponseForCatalogdb("WorkflowActivitySpecSequence_Response.json"))
86 .withStatus(org.apache.http.HttpStatus.SC_OK)));
88 wireMockServer.stubFor(get(urlMatching("/workflowActivitySpecSequence/1/activitySpec"))
89 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
90 .withBody(getWiremockResponseForCatalogdb("ActivitySpecSequence1_Response.json"))
91 .withStatus(org.apache.http.HttpStatus.SC_OK)));
93 wireMockServer.stubFor(get(urlMatching("/workflowActivitySpecSequence/2/activitySpec"))
94 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
95 .withBody(getWiremockResponseForCatalogdb("ActivitySpecSequence2_Response.json"))
96 .withStatus(org.apache.http.HttpStatus.SC_OK)));
98 wireMockServer.stubFor(get(urlMatching("/workflowActivitySpecSequence/3/activitySpec"))
99 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
100 .withBody(getWiremockResponseForCatalogdb("ActivitySpecSequence3_Response.json"))
101 .withStatus(org.apache.http.HttpStatus.SC_OK)));
103 wireMockServer.stubFor(get(urlMatching("/activitySpec/1/activitySpecUserParameters"))
104 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
105 .withBody(getWiremockResponseForCatalogdb("ActivitySpecUserParameters1_Response.json"))
106 .withStatus(org.apache.http.HttpStatus.SC_OK)));
108 wireMockServer.stubFor(get(urlMatching("/activitySpec/2/activitySpecUserParameters"))
109 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
110 .withBody(getWiremockResponseForCatalogdb("ActivitySpecUserParameters2_Response.json"))
111 .withStatus(org.apache.http.HttpStatus.SC_OK)));
113 wireMockServer.stubFor(get(urlMatching("/activitySpec/3/activitySpecUserParameters"))
114 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
115 .withBody(getWiremockResponseForCatalogdb("ActivitySpecUserParameters3_Response.json"))
116 .withStatus(org.apache.http.HttpStatus.SC_OK)));
118 wireMockServer.stubFor(get(urlMatching("/activitySpecUserParameters/1/userParameters"))
119 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
120 .withBody(getWiremockResponseForCatalogdb("UserParameters1_Response.json"))
121 .withStatus(org.apache.http.HttpStatus.SC_OK)));
123 wireMockServer.stubFor(get(urlMatching("/activitySpecUserParameters/2/userParameters"))
124 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
125 .withBody(getWiremockResponseForCatalogdb("UserParameters2_Response.json"))
126 .withStatus(org.apache.http.HttpStatus.SC_OK)));
128 wireMockServer.stubFor(get(urlMatching("/activitySpecUserParameters/3/userParameters"))
129 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
130 .withBody(getWiremockResponseForCatalogdb("UserParameters3_Response.json"))
131 .withStatus(org.apache.http.HttpStatus.SC_OK)));
133 wireMockServer.stubFor(get(urlMatching("/activitySpecUserParameters/4/userParameters"))
134 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
135 .withBody(getWiremockResponseForCatalogdb("UserParameters4_Response.json"))
136 .withStatus(org.apache.http.HttpStatus.SC_OK)));
138 wireMockServer.stubFor(get(urlMatching("/activitySpecUserParameters/5/userParameters"))
139 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
140 .withBody(getWiremockResponseForCatalogdb("UserParameters5_Response.json"))
141 .withStatus(org.apache.http.HttpStatus.SC_OK)));
143 wireMockServer.stubFor(get(urlMatching("/activitySpecUserParameters/6/userParameters"))
144 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
145 .withBody(getWiremockResponseForCatalogdb("UserParameters6_Response.json"))
146 .withStatus(org.apache.http.HttpStatus.SC_OK)));
148 UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(urlPath))
149 .queryParam("vnfModelVersionId", "b5fa707a-f55a-11e7-a796-005056856d52");
151 ResponseEntity<String> response =
152 restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity, String.class);
154 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
156 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
158 WorkflowSpecifications expectedResponse = mapper.readValue(
160 .readAllBytes(Paths.get("src/test/resources/__files/catalogdb/WorkflowSpecifications.json"))),
161 WorkflowSpecifications.class);
162 WorkflowSpecifications realResponse = mapper.readValue(response.getBody(), WorkflowSpecifications.class);
164 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
165 assertThat(expectedResponse, sameBeanAs(realResponse));
166 assertEquals("application/json", response.getHeaders().get(HttpHeaders.CONTENT_TYPE).get(0));
167 assertEquals("0", response.getHeaders().get("X-MinorVersion").get(0));
168 assertEquals("0", response.getHeaders().get("X-PatchVersion").get(0));
169 assertEquals("1.0.0", response.getHeaders().get("X-LatestVersion").get(0));
173 public void mapWorkflowsToWorkflowSpecifications_Test_Success() throws Exception {
174 List<Workflow> workflows = new ArrayList<>();
175 Workflow workflow = new Workflow();
176 workflow.setArtifactUUID("ab6478e4-ea33-3346-ac12-ab121484a333");
177 workflow.setArtifactName("inPlaceSoftwareUpdate-1_0.bpmn");
178 workflow.setVersion(1.0);
179 workflow.setDescription("xyz xyz");
180 workflow.setName("inPlaceSoftwareUpdate");
181 workflow.setOperationName("inPlaceSoftwareUpdate");
182 workflow.setSource("sdc");
183 workflow.setResourceTarget("vnf");
185 UserParameters userParameter1 = new UserParameters();
186 userParameter1.setLabel("Operations Timeout");
187 userParameter1.setType("text");
188 userParameter1.setIsRequried(true);
189 userParameter1.setMaxLength(50);
190 userParameter1.setAllowableChars("someRegEx");
191 userParameter1.setName("operations_timeout");
192 userParameter1.setPayloadLocation("userParams");
194 UserParameters userParameter2 = new UserParameters();
195 userParameter2.setLabel("Existing Software Version");
196 userParameter2.setType("text");
197 userParameter2.setIsRequried(true);
198 userParameter2.setMaxLength(50);
199 userParameter2.setAllowableChars("someRegEx");
200 userParameter2.setName("existing_software_version");
201 userParameter2.setPayloadLocation("userParams");
203 UserParameters userParameter3 = new UserParameters();
204 userParameter3.setLabel("Cloud Owner");
205 userParameter3.setType("text");
206 userParameter3.setIsRequried(true);
207 userParameter3.setMaxLength(7);
208 userParameter3.setAllowableChars("someRegEx");
209 userParameter3.setName("cloudOwner");
210 userParameter3.setPayloadLocation("cloudConfiguration");
212 UserParameters userParameter4 = new UserParameters();
213 userParameter4.setLabel("Tenant/Project ID");
214 userParameter4.setType("text");
215 userParameter4.setIsRequried(true);
216 userParameter4.setMaxLength(36);
217 userParameter4.setAllowableChars("someRegEx");
218 userParameter4.setName("tenantId");
219 userParameter4.setPayloadLocation("cloudConfiguration");
221 UserParameters userParameter5 = new UserParameters();
222 userParameter5.setLabel("New Software Version");
223 userParameter5.setType("text");
224 userParameter5.setIsRequried(true);
225 userParameter5.setMaxLength(50);
226 userParameter5.setAllowableChars("someRegEx");
227 userParameter5.setName("new_software_version");
228 userParameter5.setPayloadLocation("userParams");
230 UserParameters userParameter6 = new UserParameters();
231 userParameter6.setLabel("Cloud Region ID");
232 userParameter6.setType("text");
233 userParameter6.setIsRequried(true);
234 userParameter6.setMaxLength(7);
235 userParameter6.setAllowableChars("someRegEx");
236 userParameter6.setName("lcpCloudRegionId");
237 userParameter6.setPayloadLocation("cloudConfiguration");
240 List<ActivitySpecUserParameters> activitySpecUserParameters = new ArrayList<ActivitySpecUserParameters>();
242 ActivitySpecUserParameters activitySpecUserParameter1 = new ActivitySpecUserParameters();
243 activitySpecUserParameter1.setUserParameters(userParameter1);
244 activitySpecUserParameters.add(activitySpecUserParameter1);
246 ActivitySpecUserParameters activitySpecUserParameter2 = new ActivitySpecUserParameters();
247 activitySpecUserParameter2.setUserParameters(userParameter2);
248 activitySpecUserParameters.add(activitySpecUserParameter2);
250 ActivitySpecUserParameters activitySpecUserParameter3 = new ActivitySpecUserParameters();
251 activitySpecUserParameter3.setUserParameters(userParameter3);
252 activitySpecUserParameters.add(activitySpecUserParameter3);
255 ActivitySpecUserParameters activitySpecUserParameter4 = new ActivitySpecUserParameters();
256 activitySpecUserParameter4.setUserParameters(userParameter4);
257 activitySpecUserParameters.add(activitySpecUserParameter4);
259 ActivitySpecUserParameters activitySpecUserParameter5 = new ActivitySpecUserParameters();
260 activitySpecUserParameter5.setUserParameters(userParameter5);
261 activitySpecUserParameters.add(activitySpecUserParameter5);
263 ActivitySpecUserParameters activitySpecUserParameter6 = new ActivitySpecUserParameters();
264 activitySpecUserParameter6.setUserParameters(userParameter6);
265 activitySpecUserParameters.add(activitySpecUserParameter6);
267 List<WorkflowActivitySpecSequence> workflowActivitySpecSequences = new ArrayList<>();
269 ActivitySpec activitySpec1 = new ActivitySpec();
270 activitySpec1.setName("VNFQuiesceTrafficActivity");
271 activitySpec1.setDescription("Activity to QuiesceTraffic on VNF");
272 activitySpec1.setActivitySpecUserParameters(activitySpecUserParameters);
273 WorkflowActivitySpecSequence workflowActivitySpecSequence1 = new WorkflowActivitySpecSequence();
274 workflowActivitySpecSequence1.setActivitySpec(activitySpec1);
275 workflowActivitySpecSequences.add(workflowActivitySpecSequence1);
277 ActivitySpec activitySpec2 = new ActivitySpec();
278 activitySpec2.setName("VNFHealthCheckActivity");
279 activitySpec2.setDescription("Activity to HealthCheck VNF");
280 activitySpec2.setActivitySpecUserParameters(activitySpecUserParameters);
281 WorkflowActivitySpecSequence workflowActivitySpecSequence2 = new WorkflowActivitySpecSequence();
282 workflowActivitySpecSequence2.setActivitySpec(activitySpec2);
283 workflowActivitySpecSequences.add(workflowActivitySpecSequence2);
285 ActivitySpec activitySpec3 = new ActivitySpec();
286 activitySpec3.setName("FlowCompleteActivity");
287 activitySpec3.setDescription("Activity to Complete the BPMN Flow");
288 activitySpec3.setActivitySpecUserParameters(activitySpecUserParameters);
289 WorkflowActivitySpecSequence workflowActivitySpecSequence3 = new WorkflowActivitySpecSequence();
290 workflowActivitySpecSequence3.setActivitySpec(activitySpec3);
291 workflowActivitySpecSequences.add(workflowActivitySpecSequence3);
293 workflow.setWorkflowActivitySpecSequence(workflowActivitySpecSequences);
294 workflows.add(workflow);
296 Workflow workflowNative = new Workflow();
297 workflowNative.setArtifactUUID("da6478e4-ea33-3346-ac12-ab121284a333");
298 workflowNative.setArtifactName("VnfInPlaceUpdate.bpmn");
299 workflowNative.setVersion(1.0);
300 workflowNative.setDescription("native workflow");
301 workflowNative.setName("VnfInPlaceUpdate");
302 workflowNative.setOperationName("inPlaceSoftwareUpdate");
303 workflowNative.setSource("native");
304 workflowNative.setResourceTarget("vnf");
305 workflows.add(workflowNative);
307 WorkflowSpecifications workflowSpecifications =
308 workflowSpecificationsHandler.mapWorkflowsToWorkflowSpecifications(workflows);
310 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
311 String workflowSpecificationsJson = mapper.writeValueAsString(workflowSpecifications);
312 WorkflowSpecifications expectedResult = mapper.readValue(
314 .readAllBytes(Paths.get("src/test/resources/__files/catalogdb/WorkflowSpecifications.json"))),
315 WorkflowSpecifications.class);
316 String expectedResultJson = mapper.writeValueAsString(expectedResult);
318 JSONAssert.assertEquals(expectedResultJson, workflowSpecificationsJson, false);
319 assertThat(expectedResult, sameBeanAs(workflowSpecifications).ignoring(WorkflowInputParameter.class));
323 public void queryWorkflowSpecificationsByPnfModelUUID_Test_Success() throws JSONException, IOException {
325 final String urlPath = basePath + "/v1/workflows";
326 HttpHeaders headers = new HttpHeaders();
327 headers.set("Accept", MediaType.APPLICATION_JSON);
328 headers.set("Content-Type", MediaType.APPLICATION_JSON);
329 HttpEntity<String> entity = new HttpEntity<String>(null, headers);
331 wireMockServer.stubFor(get(urlMatching(
332 "/workflow/search/findWorkflowByPnfModelUUID[?]pnfResourceModelUUID=f2d1f2b2-88bb-49da-b716-36ae420ccbff"))
333 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
334 .withBody(getWiremockResponseForCatalogdb(
335 "WorkflowSpecificationsForPnfQuery_Response.json"))
336 .withStatus(org.apache.http.HttpStatus.SC_OK)));
338 wireMockServer.stubFor(get(urlMatching("/workflow/4/workflowActivitySpecSequence"))
339 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
340 .withBody(getWiremockResponseForCatalogdb("Empty_workflowActivitySpecSequence_Response.json"))
341 .withStatus(org.apache.http.HttpStatus.SC_OK)));
343 UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(urlPath))
344 .queryParam("pnfModelVersionId", "f2d1f2b2-88bb-49da-b716-36ae420ccbff");
346 ResponseEntity<String> response =
347 restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity, String.class);
349 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
351 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
353 WorkflowSpecifications expectedResponse = mapper.readValue(
354 new String(Files.readAllBytes(
355 Paths.get("src/test/resources/__files/catalogdb/WorkflowSpecificationsForPnf.json"))),
356 WorkflowSpecifications.class);
357 WorkflowSpecifications realResponse = mapper.readValue(response.getBody(), WorkflowSpecifications.class);
359 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
360 assertThat(expectedResponse, sameBeanAs(realResponse));
361 assertEquals("application/json", response.getHeaders().get(HttpHeaders.CONTENT_TYPE).get(0));
362 assertEquals("0", response.getHeaders().get("X-MinorVersion").get(0));
363 assertEquals("0", response.getHeaders().get("X-PatchVersion").get(0));
364 assertEquals("1.0.0", response.getHeaders().get("X-LatestVersion").get(0));
368 public void queryWorkflowSpecificationsByResourceTarget_Test_Success() throws JSONException, IOException {
370 String URL_PATH = basePath + "/v1/workflows";
371 HttpHeaders headers = new HttpHeaders();
372 headers.set("Accept", MediaType.APPLICATION_JSON);
373 headers.set("Content-Type", MediaType.APPLICATION_JSON);
374 HttpEntity<String> entity = new HttpEntity<String>(null, headers);
375 String WORKFLOW_QUERY = "/workflow/search/findByResourceTarget[?]resourceTarget=service";
376 String WORKFLOW_SPEC_QUERY = "/workflow/5/workflowActivitySpecSequence";
377 String JSON_FILE_PATH = "src/test/resources/__files/catalogdb/WorkflowSpecificationsForService.json";
378 String MOCK_RESP_FILE = "WorkflowSpecificationsForServiceWorkflows_Response.json";
379 String MOCK_RESP_SPEC_FILE = "Empty_workflowActivitySpecSequence_Response.json";
381 wireMockServer.stubFor(get(urlMatching(WORKFLOW_QUERY))
382 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
383 .withBody(getWiremockResponseForCatalogdb(MOCK_RESP_FILE))
384 .withStatus(org.apache.http.HttpStatus.SC_OK)));
386 wireMockServer.stubFor(get(urlMatching(WORKFLOW_SPEC_QUERY))
387 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
388 .withBody(getWiremockResponseForCatalogdb(MOCK_RESP_SPEC_FILE))
389 .withStatus(org.apache.http.HttpStatus.SC_OK)));
391 UriComponentsBuilder builder =
392 UriComponentsBuilder.fromHttpUrl(createURLWithPort(URL_PATH)).queryParam("resourceTarget", "service");
394 ResponseEntity<String> response =
395 restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity, String.class);
397 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
399 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
401 WorkflowSpecifications expectedResponse = mapper
402 .readValue(new String(Files.readAllBytes(Paths.get(JSON_FILE_PATH))), WorkflowSpecifications.class);
403 WorkflowSpecifications realResponse = mapper.readValue(response.getBody(), WorkflowSpecifications.class);
405 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
406 assertThat(expectedResponse, sameBeanAs(realResponse));
407 assertEquals("application/json", response.getHeaders().get(HttpHeaders.CONTENT_TYPE).get(0));
408 assertEquals("0", response.getHeaders().get("X-MinorVersion").get(0));
409 assertEquals("0", response.getHeaders().get("X-PatchVersion").get(0));
410 assertEquals("1.0.0", response.getHeaders().get("X-LatestVersion").get(0));
414 public void testWorkflowSpecificationsForPnf_Success() throws JSONException, IOException {
416 final String urlPath = basePath + "/v1/pnfWorkflows";
417 HttpHeaders headers = new HttpHeaders();
418 headers.set("Accept", MediaType.APPLICATION_JSON);
419 headers.set("Content-Type", MediaType.APPLICATION_JSON);
420 HttpEntity<String> entity = new HttpEntity(null, headers);
422 wireMockServer.stubFor(get(urlMatching("/workflow/search/findByResourceTarget[?]resourceTarget=pnf"))
423 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
425 getWiremockResponseForCatalogdb("WorkflowSpecificationsForPnfWorkflows_Response.json"))
426 .withStatus(org.apache.http.HttpStatus.SC_OK)));
428 wireMockServer.stubFor(get(urlMatching("/infraActiveRequests.*"))
429 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
430 .withStatus(org.apache.http.HttpStatus.SC_OK)));
432 wireMockServer.stubFor(get(urlMatching("/workflow/1/workflowActivitySpecSequence"))
433 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
434 .withBody(getWiremockResponseForCatalogdb("Empty_workflowActivitySpecSequence_Response.json"))
435 .withStatus(org.apache.http.HttpStatus.SC_OK)));
437 UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(urlPath));
439 ResponseEntity<String> response =
440 restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity, String.class);
442 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
444 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
446 WorkflowSpecifications expectedResponse = mapper.readValue(
447 new String(Files.readAllBytes(
448 Paths.get("src/test/resources/__files/catalogdb/WorkflowSpecificationsForPnf.json"))),
449 WorkflowSpecifications.class);
450 WorkflowSpecifications realResponse = mapper.readValue(response.getBody(), WorkflowSpecifications.class);
452 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
453 assertThat(expectedResponse, sameBeanAs(realResponse));
454 assertEquals("application/json", response.getHeaders().get(HttpHeaders.CONTENT_TYPE).get(0));
455 assertEquals("0", response.getHeaders().get("X-MinorVersion").get(0));
456 assertEquals("0", response.getHeaders().get("X-PatchVersion").get(0));
457 assertEquals("1.0.0", response.getHeaders().get("X-LatestVersion").get(0));
460 private String getWiremockResponseForCatalogdb(String file) {
462 File resource = ResourceUtils.getFile("classpath:__files/catalogdb/" + file);
463 return new String(Files.readAllBytes(resource.toPath())).replaceAll("localhost:8090",
464 "localhost:" + wiremockPort);
465 } catch (IOException e) {