52aa2e3880ca5b5f7961945ba0d1749ef3df702a
[vid.git] / vid-automation / src / test / java / org / onap / vid / api / ServiceTreeApiTest.java
1 package org.onap.vid.api;
2
3 import com.google.common.collect.ImmutableList;
4 import com.google.common.collect.ImmutableMap;
5 import com.google.common.collect.ImmutableMultimap;
6 import com.google.common.collect.Multimap;
7 import org.onap.simulator.presetGenerator.presets.aai.*;
8 import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet;
9 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet;
10 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet;
11 import org.springframework.http.HttpStatus;
12 import org.springframework.http.ResponseEntity;
13 import org.testng.annotations.BeforeClass;
14 import org.testng.annotations.Test;
15 import vid.automation.test.services.SimulatorApi;
16
17 import java.util.UUID;
18
19 import static org.apache.commons.text.StringEscapeUtils.escapeJson;
20 import static org.hamcrest.CoreMatchers.is;
21 import static org.hamcrest.MatcherAssert.assertThat;
22 import static org.hamcrest.Matchers.*;
23 import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET;
24
25 public class ServiceTreeApiTest extends BaseApiTest {
26
27     private static final String API_URL = "/aai_get_service_instance_topology/{subscriberId}/{serviceType}/{serviceInstanceId}";
28
29     @BeforeClass
30     public void login() {
31         super.login();
32     }
33
34     @Test
35     public void serviceWithNoChildren_requestDoesSomething() {
36         final PresetAAIStandardQueryGet serviceInstance =
37                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "global-customer-id", "service-instance-type", ImmutableMultimap.of());
38
39         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
40                 serviceInstance,
41                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("service-instance-model-invariant-id")),
42                 new PresetSDCGetServiceMetadataGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
43                 new PresetSDCGetServiceToscaModelGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip")
44         ), CLEAR_THEN_SET);
45         final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
46
47         assertJsonEquals(response, "" +
48                 "{" +
49                 "  \"instanceName\": \"" + escapeJson(serviceInstance.getInstanceName()) + "\"," +
50                 "  \"action\": \"None\"," +
51                 "  \"instanceId\": \"service-instance-id\"," +
52                 "  \"orchStatus\": \"GARBAGE DATA\"," +
53                 "  \"globalSubscriberId\": \"global-customer-id\"," +
54                 "  \"subscriptionServiceType\": \"service-instance-type\"," +
55                 "  \"owningEntityId\": null," +
56                 "  \"owningEntityName\": null," +
57                 "  \"productFamilyId\": null," +
58                 "  \"lcpCloudRegionId\": null," +
59                 "  \"tenantId\": null," +
60                 "  \"tenantName\": null," +
61                 "  \"aicZoneId\": null," +
62                 "  \"aicZoneName\": null," +
63                 "  \"projectName\": null," +
64                 "  \"rollbackOnFailure\": null," +
65                 "  \"modelInfo\": {" +
66                 "    \"modelInvariantId\": \"service-instance-model-invariant-id\"," +
67                 "    \"modelVersionId\": \"7a6ee536-f052-46fa-aa7e-2fca9d674c44\"," +
68                 "    \"modelName\": \"vf_vEPDG\"," +
69                 "    \"modelType\": \"service\"," +
70                 "    \"modelVersion\": \"2.0\"" +
71                 "  }," +
72                 "  \"vnfs\": {}," +
73                 "  \"networks\": {}," +
74                 "  \"vnfGroups\": {}," +
75                 "  \"validationCounter\": 0," +
76                 "  \"existingVNFCounterMap\": {}," +
77                 "  \"existingNetworksCounterMap\": {}," +
78                 "  \"existingVnfGroupCounterMap\": {}," +
79                 "  \"isALaCarte\": false" +
80                 "}");
81     }
82
83     @Test
84     public void searchGroupMembers_expected4vnfs() {
85         PresetAAIStandardQueryGet instanceGroup1 = PresetAAIStandardQueryGet.ofInstanceGroup("L3-NETWORK", "SUB_INTERFACE", ImmutableMultimap.of());
86         PresetAAIStandardQueryGet instanceGroup2 = PresetAAIStandardQueryGet.ofInstanceGroup("LOAD-GROUP", "SERVICE-ACCESS", ImmutableMultimap.of());
87
88         PresetAAIStandardQueryGet vnfPreset1 =
89                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "7a6ee536-f052-46fa-aa7e-2fca9d674c44",  "",
90                         ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()));
91
92         PresetAAIStandardQueryGet vnfPreset2 =
93                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
94                         "\"in-maint\": true,", ImmutableMultimap.of());
95
96         PresetAAIStandardQueryGet vnfPreset3 =
97                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "",
98                         ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()));
99
100         PresetAAIStandardQueryGet vnfPreset4 =
101                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "b7f2e8fb-ac71-4ea0-a801-06ef1479ea84",
102                         "\"in-maint\": true,", ImmutableMultimap.of());
103
104         PresetAAIStandardQueryGet vnfPreset5 =
105                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "b7f2e8fb-ac71-4ea0-a801-06ef1479ea84",
106                         "\"in-maint\": true,", ImmutableMultimap.of("instance-group", instanceGroup2.getReqPath()));
107
108         Multimap<String, String> serviceInstance1 = ImmutableMultimap.<String, String>builder()
109                         .putAll("generic-vnf", vnfPreset1.getReqPath())
110                         .putAll("generic-vnf", vnfPreset3.getReqPath())
111                         .build();
112
113         Multimap<String, String> serviceInstance2 = ImmutableMultimap.<String, String>builder()
114                         .putAll("generic-vnf", vnfPreset2.getReqPath())
115                         .putAll("generic-vnf", vnfPreset4.getReqPath())
116                         .putAll("generic-vnf", vnfPreset5.getReqPath())
117                         .build();
118
119         PresetAAIGetServiceInstancesByInvariantId serviceInstancesList = new PresetAAIGetServiceInstancesByInvariantId(
120                 "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14",
121                 ImmutableMap.of("service-instance-id1", serviceInstance1,
122                         "service-instance-id2", serviceInstance2));
123
124
125         SimulatorApi.registerExpectationFromPresets(
126                 ImmutableList.of(serviceInstancesList,
127                         vnfPreset1, instanceGroup1,
128                         vnfPreset2,
129                         vnfPreset3,
130                         vnfPreset4,
131                         vnfPreset5, instanceGroup2, //this vnf should be filtered out
132                         new PresetAAIModelsByInvariantIdGet(ImmutableList.of("vnf-instance-model-invariant-id")),
133                         new PresetAAIGetCloudRegionFromVnf(vnfPreset1.getInstanceId()),
134                         new PresetAAIGetCloudRegionFromVnf(vnfPreset2.getInstanceId()),
135                         new PresetAAIGetCloudRegionFromVnf(vnfPreset3.getInstanceId()),
136                         new PresetAAIGetCloudRegionFromVnf(vnfPreset4.getInstanceId())
137                 ), CLEAR_THEN_SET);
138
139         String api_url = "aai_search_group_members?subscriberId={subscriberId}&serviceType={serviceType}&serviceInvariantId={serviceInvariantId}" +
140                 "&groupType={groupType}&groupRole={groupRole}";
141
142         final String response = restTemplate.getForObject(buildUri(api_url), String.class, "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14", "LOAD-GROUP", "SERVICE-ACCESS");
143
144         LOGGER.info(response);
145
146         String expected = TestUtils.convertRequest(objectMapper, "VnfGroup/searchMembersResponse.json");
147         expected = expected
148                 .replace("VNF1_INSTANCE_NAME", vnfPreset1.getInstanceName())
149                 .replace("VNF1_INSTANCE_ID", vnfPreset1.getInstanceId())
150                 .replace("VNF1_INSTANCE_TYPE", vnfPreset1.getInstanceType())
151                 .replace("VNF2_INSTANCE_NAME", vnfPreset2.getInstanceName())
152                 .replace("VNF2_INSTANCE_ID", vnfPreset2.getInstanceId())
153                 .replace("VNF2_INSTANCE_TYPE", vnfPreset2.getInstanceType())
154                 .replace("VNF3_INSTANCE_NAME", vnfPreset3.getInstanceName())
155                 .replace("VNF3_INSTANCE_ID", vnfPreset3.getInstanceId())
156                 .replace("VNF3_INSTANCE_TYPE", vnfPreset3.getInstanceType())
157                 .replace("VNF4_INSTANCE_NAME", vnfPreset4.getInstanceName())
158                 .replace("VNF4_INSTANCE_ID", vnfPreset4.getInstanceId())
159                 .replace("VNF4_INSTANCE_TYPE", vnfPreset4.getInstanceType());
160
161         assertJsonEquals(response, expected);
162     }
163
164     @Test
165     public void searchGroupMembers_expectedNoResult() {
166         PresetAAIGetServiceInstancesByInvariantId serviceInstancesList = new PresetAAIGetServiceInstancesByInvariantId(
167                 "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14",
168                 ImmutableMap.of("service-instance-id1", ImmutableMultimap.of(),
169                         "service-instance-id2", ImmutableMultimap.of()));
170
171
172         SimulatorApi.registerExpectationFromPreset(serviceInstancesList, CLEAR_THEN_SET);
173
174         String api_url = "aai_search_group_members?subscriberId={subscriberId}&serviceType={serviceType}&serviceInvariantId={serviceInvariantId}" +
175                 "&groupType={groupType}&groupRole={groupRole}";
176
177         final String response = restTemplate.getForObject(buildUri(api_url), String.class, "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14", "LOAD-GROUP", "SERVICE-ACCESS");
178
179         assertJsonEquals(response, "[]");
180     }
181
182     @Test
183     public void serviceWithMultiplePlys_responseIsReasonable() {
184
185         PresetAAIStandardQueryGet l3NetworkPreset1 =
186                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Assigned",
187                         ImmutableMultimap.of());
188
189         PresetAAIStandardQueryGet vlanTag1 = PresetAAIStandardQueryGet.ofVlanTag(44);
190
191         PresetAAIStandardQueryGet l3NetworkPreset2 =
192
193                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Created",
194                         ImmutableMultimap.of("vlan-tag", vlanTag1.getReqPath()));
195
196         PresetAAIStandardQueryGet l3NetworkPreset3 =
197                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Assigned", "nvtprov", "ddc3f20c-08b5-40fd-af72-c6d14636b986","94fdd893-4a36-4d70-b16a-ec29c54c184f",
198                         ImmutableMultimap.of());
199
200         PresetAAIStandardQueryGet l3NetworkPreset4 =
201                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_HIMELGUARD", "Created", "preprov", "ddc3f20c-08b5-40fd-af72-c6d14636b986","94fdd893-4a36-4d70-b16a-ec29c54c184f",
202                         ImmutableMultimap.of());
203
204         PresetAAIStandardQueryGet volumeGroup1 =
205                 PresetAAIStandardQueryGet.ofVolumeGroup("vSON_test", ImmutableMultimap.of());
206
207         PresetAAIStandardQueryGet instanceGroup1 = PresetAAIStandardQueryGet.ofInstanceGroup("L3-NETWORK", "Ruby Figueroa", ImmutableMultimap.of());
208
209         PresetAAIStandardQueryGet collection1 =
210                 PresetAAIStandardQueryGet.ofCollectionResource("Assigned",
211                         ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()));
212
213         PresetAAIStandardQueryGet vnfPreset1 =
214                 PresetAAIStandardQueryGet.ofVnf(randUuid(),
215                         ImmutableMultimap.of("l3-network", l3NetworkPreset1.getReqPath(), "l3-network", l3NetworkPreset2.getReqPath()));
216
217         PresetAAIStandardQueryGet vnfPreset2 =
218                 PresetAAIStandardQueryGet.ofVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60","91415b44-753d-494c-926a-456a9172bbb9",
219                         "\"in-maint\": true,", ImmutableMultimap.of("volume-group", volumeGroup1.getReqPath()));
220
221         PresetAAIGetVfModulesByVnf vfModules2 = new PresetAAIGetVfModulesByVnf(vnfPreset2.getInstanceId());
222
223         final PresetAAIStandardQueryGet serviceInstance =
224                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "6e59c5de-f052-46fa-aa7e-2fca9d674c44", "d27e42cf-087e-4d31-88ac-6c4b7585f800", "global-customer-id", "service-instance-type",
225                         ImmutableMultimap.<String, String>builder()
226                                 .putAll("l3-network", l3NetworkPreset3.getReqPath(), l3NetworkPreset4.getReqPath())
227                                 .putAll("collection", collection1.getReqPath())
228                                 .putAll("generic-vnf", vnfPreset1.getReqPath(), vnfPreset2.getReqPath())
229                                 .build()
230                 );
231
232         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
233                 serviceInstance,
234                 l3NetworkPreset3, l3NetworkPreset4, vnfPreset1, vnfPreset2, collection1,
235                 volumeGroup1, l3NetworkPreset1, l3NetworkPreset2, instanceGroup1,
236                 vlanTag1, vfModules2,
237                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("d27e42cf-087e-4d31-88ac-6c4b7585f800")),
238                 new PresetGetSessionSlotCheckIntervalGet(),
239                 new PresetAAIGetSubscribersGet(),
240                 new PresetSDCGetServiceMetadataGet("6e59c5de-f052-46fa-aa7e-2fca9d674c44", "d27e42cf-087e-4d31-88ac-6c4b7585f800", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
241                 new PresetSDCGetServiceToscaModelGet("6e59c5de-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip")
242         ), CLEAR_THEN_SET);
243
244         String expected = TestUtils.convertRequest(objectMapper, "aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json");
245         expected = expected
246                 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
247                 .replace("VNF1_INSTANCE_NAME", vnfPreset1.getInstanceName())
248                 .replace("VNF1_INSTANCE_ID", vnfPreset1.getInstanceId())
249                 .replace("VNF1_INSTANCE_TYPE", vnfPreset1.getInstanceType())
250                 .replace("VNF2_INSTANCE_NAME", vnfPreset2.getInstanceName())
251                 .replace("VNF2_INSTANCE_ID", vnfPreset2.getInstanceId())
252                 .replace("VNF2_INSTANCE_TYPE", vnfPreset2.getInstanceType())
253                 .replace("NETWORK1_INSTANCE_NAME", l3NetworkPreset1.getInstanceName())
254                 .replace("NETWORK1_INSTANCE_ID", l3NetworkPreset1.getInstanceId())
255                 .replace("NETWORK2_INSTANCE_NAME", l3NetworkPreset2.getInstanceName())
256                 .replace("NETWORK2_INSTANCE_ID", l3NetworkPreset2.getInstanceId())
257                 .replace("NETWORK3_INSTANCE_NAME", l3NetworkPreset3.getInstanceName())
258                 .replace("NETWORK3_INSTANCE_ID", l3NetworkPreset3.getInstanceId())
259                 .replace("NETWORK4_INSTANCE_NAME", l3NetworkPreset4.getInstanceName())
260                 .replace("NETWORK4_INSTANCE_ID", l3NetworkPreset4.getInstanceId());
261
262         String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
263
264         assertJsonEquals(response, expected);
265     }
266
267     @Test
268     public void serviceWithVnfGotError_exceptionIsThrown() {
269
270         PresetAAIStandardQueryGet vnfPreset =
271                 PresetAAIStandardQueryGet.ofVnf(randUuid(),
272                         ImmutableMultimap.of("l3-network", "/aai/v../I'm a wrong path"));
273
274         final PresetAAIStandardQueryGet serviceInstance =
275                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "global-customer-id", "service-instance-type",
276                         ImmutableMultimap.<String, String>builder()
277                                 .putAll("generic-vnf", vnfPreset.getReqPath())
278                                 .build()
279                 );
280
281         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
282                 serviceInstance,
283                 vnfPreset,
284                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("service-instance-model-invariant-id")),
285                 new PresetSDCGetServiceMetadataGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
286                 new PresetSDCGetServiceToscaModelGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
287                 new PresetGetSessionSlotCheckIntervalGet(),
288                 new PresetAAIGetSubscribersGet()
289         ), CLEAR_THEN_SET);
290
291         final ResponseEntity<String> response = restTemplateErrorAgnostic.getForEntity(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
292         assertThat(response.getBody(),containsString("AAI node fetching failed"));
293         assertThat(response.getStatusCode(), is(HttpStatus.INTERNAL_SERVER_ERROR));
294     }
295
296     @Test
297     public void serviceWithTwoVnfGroupsAndRelatedVnfs() {
298         PresetAAIStandardQueryGet relatedVnf1 =
299                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
300                         "", ImmutableMultimap.of());
301
302         PresetAAIStandardQueryGet relatedVnf2 =
303                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60",
304                         "", ImmutableMultimap.of());
305
306         PresetAAIStandardQueryGet relatedVnf3 =
307                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60",
308                         "", ImmutableMultimap.of());
309
310         final PresetAAIStandardQueryGet vnfGroup1 =
311                 PresetAAIStandardQueryGet.ofInstanceGroup("vnfGroup-type", "Teresa Bradley",
312                         ImmutableMultimap.<String, String>builder()
313                                 .putAll("generic-vnf", relatedVnf1.getReqPath(), relatedVnf2.getReqPath(), relatedVnf3.getReqPath())
314                                 .build()
315                 );
316
317         final PresetAAIStandardQueryGet vnfGroup2 =
318                 PresetAAIStandardQueryGet.ofInstanceGroup("vnfGroup-type", "Stanley Mccarthy", ImmutableMultimap.of());
319
320         final PresetAAIStandardQueryGet serviceInstance =
321                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "7ee41ce4-4827-44b0-a48e-2707a59905d2", "global-customer-id", "service-instance-type",
322                         ImmutableMultimap.<String, String>builder()
323                                 .putAll("instance-group", vnfGroup1.getReqPath(),vnfGroup2.getReqPath())
324                                 .build()
325                 );
326
327         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
328                 serviceInstance,
329                 vnfGroup1,vnfGroup2, relatedVnf1, relatedVnf2, relatedVnf3,
330                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("7ee41ce4-4827-44b0-a48e-2707a59905d2", "vnf-instance-model-invariant-id")),
331                 new PresetGetSessionSlotCheckIntervalGet(),
332                 new PresetAAIGetSubscribersGet(),
333                 new PresetSDCGetServiceMetadataGet("4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "7ee41ce4-4827-44b0-a48e-2707a59905d2", "service-vnf-grouping-csar.zip"),
334                 new PresetSDCGetServiceToscaModelGet("4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "service-vnf-grouping-csar.zip")
335         ), CLEAR_THEN_SET);
336
337         String expected = TestUtils.convertRequest(objectMapper, "VnfGroup/serviceWithVnfGroupsChildren_serviceInstance.json");
338         expected = expected
339                 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
340                 .replace("VNF_GROUP1_INSTANCE_ID", vnfGroup1.getInstanceId())
341                 .replace("VNF_GROUP1_INSTANCE_NAME", vnfGroup1.getInstanceName())
342                 .replace("VNF_GROUP1_INSTANCE_TYPE", vnfGroup1.getInstanceType())
343                 .replace("VNF_GROUP1_INSTANCE_ROLE", vnfGroup1.getInstanceRole())
344
345                 .replace("RELATED_VNF1_INSTANCE_ID", relatedVnf1.getInstanceId())
346                 .replace("RELATED_VNF1_INSTANCE_NAME", relatedVnf1.getInstanceName())
347                 .replace("RELATED_VNF1_INSTANCE_TYPE", relatedVnf1.getInstanceType())
348
349                 .replace("RELATED_VNF2_INSTANCE_ID", relatedVnf2.getInstanceId())
350                 .replace("RELATED_VNF2_INSTANCE_NAME", relatedVnf2.getInstanceName())
351                 .replace("RELATED_VNF2_INSTANCE_TYPE", relatedVnf2.getInstanceType())
352
353                 .replace("RELATED_VNF3_INSTANCE_ID", relatedVnf3.getInstanceId())
354                 .replace("RELATED_VNF3_INSTANCE_NAME", relatedVnf3.getInstanceName())
355                 .replace("RELATED_VNF3_INSTANCE_TYPE", relatedVnf3.getInstanceType())
356
357                 .replace("VNF_GROUP2_INSTANCE_ID", vnfGroup2.getInstanceId())
358                 .replace("VNF_GROUP2_INSTANCE_NAME", vnfGroup2.getInstanceName())
359                 .replace("VNF_GROUP2_INSTANCE_TYPE", vnfGroup2.getInstanceType())
360                 .replace("VNF_GROUP2_INSTANCE_ROLE", vnfGroup2.getInstanceRole());
361
362         final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
363
364         assertJsonEquals(response, expected);
365     }
366
367     private String randUuid() {
368         return UUID.randomUUID().toString();
369     }
370 }