Merge from ecomp 718fd196 - Integration Tests
[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 net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
20 import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
21 import static net.javacrumbs.jsonunit.core.Option.IGNORING_EXTRA_FIELDS;
22 import static org.apache.commons.text.StringEscapeUtils.escapeJson;
23 import static org.hamcrest.CoreMatchers.is;
24 import static org.hamcrest.MatcherAssert.assertThat;
25 import static org.hamcrest.Matchers.containsString;
26 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.*;
27 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.defaultPlacement;
28 import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET;
29
30 public class ServiceTreeApiTest extends BaseApiTest {
31
32     private static final String API_URL = "/aai_get_service_instance_topology/{subscriberId}/{serviceType}/{serviceInstanceId}";
33
34     @BeforeClass
35     public void login() {
36         super.login();
37     }
38
39     @Test
40     public void serviceWithNoChildren_requestDoesSomething() {
41         final PresetAAIStandardQueryGet serviceInstance =
42                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "global-customer-id", "service-instance-type", ImmutableMultimap.of());
43
44         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
45                 serviceInstance,
46                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("service-instance-model-invariant-id")),
47                 new PresetSDCGetServiceMetadataGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
48                 new PresetSDCGetServiceToscaModelGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip")
49         ), CLEAR_THEN_SET);
50         final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
51
52         assertJsonEquals(response, "" +
53                 "{" +
54                 "  \"instanceName\": \"" + escapeJson(serviceInstance.getInstanceName()) + "\"," +
55                 "  \"action\": \"None\"," +
56                 "  \"instanceId\": \"service-instance-id\"," +
57                 "  \"orchStatus\": \"GARBAGE DATA\"," +
58                 "  \"globalSubscriberId\": \"global-customer-id\"," +
59                 "  \"subscriptionServiceType\": \"service-instance-type\"," +
60                 "  \"owningEntityId\": null," +
61                 "  \"owningEntityName\": null," +
62                 "  \"productFamilyId\": null," +
63                 "  \"lcpCloudRegionId\": null," +
64                 "  \"tenantId\": null," +
65                 "  \"tenantName\": null," +
66                 "  \"aicZoneId\": null," +
67                 "  \"aicZoneName\": null," +
68                 "  \"projectName\": null," +
69                 "  \"rollbackOnFailure\": null," +
70                 "  \"modelInfo\": {" +
71                 "    \"modelInvariantId\": \"service-instance-model-invariant-id\"," +
72                 "    \"modelVersionId\": \"7a6ee536-f052-46fa-aa7e-2fca9d674c44\"," +
73                 "    \"modelName\": \"vf_vEPDG\"," +
74                 "    \"modelType\": \"service\"," +
75                 "    \"modelVersion\": \"2.0\"" +
76                 "  }," +
77                 "  \"vnfs\": {}," +
78                 "  \"networks\": {}," +
79                 "  \"vnfGroups\": {}," +
80                 "  \"validationCounter\": 0," +
81                 "  \"existingVNFCounterMap\": {}," +
82                 "  \"existingNetworksCounterMap\": {}," +
83                 "  \"existingVnfGroupCounterMap\": {}," +
84                 "  \"isALaCarte\": false" +
85                 "}");
86     }
87
88     @Test
89     public void searchGroupMembers_expected4vnfs() {
90         PresetAAIStandardQueryGet instanceGroup1 = PresetAAIStandardQueryGet.ofInstanceGroup("L3-NETWORK", "SUB_INTERFACE", ImmutableMultimap.of());
91         PresetAAIStandardQueryGet instanceGroup2 = PresetAAIStandardQueryGet.ofInstanceGroup("LOAD-GROUP", "SERVICE-ACCESS", ImmutableMultimap.of());
92
93         PresetAAIStandardQueryGet vnfPreset1 =
94                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "7a6ee536-f052-46fa-aa7e-2fca9d674c44",  "",
95                         ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()));
96
97         PresetAAIStandardQueryGet vnfPreset2 =
98                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
99                         "\"in-maint\": true,", ImmutableMultimap.of());
100
101         PresetAAIStandardQueryGet vnfPreset3 =
102                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "",
103                         ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()));
104
105         PresetAAIStandardQueryGet vnfPreset4 =
106                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "b7f2e8fb-ac71-4ea0-a801-06ef1479ea84",
107                         "\"in-maint\": true,", ImmutableMultimap.of());
108
109         PresetAAIStandardQueryGet vnfPreset5 =
110                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "b7f2e8fb-ac71-4ea0-a801-06ef1479ea84",
111                         "\"in-maint\": true,", ImmutableMultimap.of("instance-group", instanceGroup2.getReqPath()));
112
113         Multimap<String, String> serviceInstance1 = ImmutableMultimap.<String, String>builder()
114                 .putAll("generic-vnf", vnfPreset1.getReqPath())
115                 .putAll("generic-vnf", vnfPreset3.getReqPath())
116                 .build();
117
118         Multimap<String, String> serviceInstance2 = ImmutableMultimap.<String, String>builder()
119                 .putAll("generic-vnf", vnfPreset2.getReqPath())
120                 .putAll("generic-vnf", vnfPreset4.getReqPath())
121                 .putAll("generic-vnf", vnfPreset5.getReqPath())
122                 .build();
123
124         PresetAAIGetServiceInstancesByInvariantId serviceInstancesList = new PresetAAIGetServiceInstancesByInvariantId(
125                 "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14",
126                 ImmutableMap.of("service-instance-id1", serviceInstance1,
127                         "service-instance-id2", serviceInstance2));
128
129
130         SimulatorApi.registerExpectationFromPresets(
131                 ImmutableList.of(serviceInstancesList,
132                         vnfPreset1, instanceGroup1,
133                         vnfPreset2,
134                         vnfPreset3,
135                         vnfPreset4,
136                         vnfPreset5, instanceGroup2, //this vnf should be filtered out
137                         new PresetAAIModelsByInvariantIdGet(ImmutableList.of("vnf-instance-model-invariant-id")),
138                         new PresetAAIGetCloudRegionFromVnf(vnfPreset1.getInstanceId()),
139                         new PresetAAIGetCloudRegionFromVnf(vnfPreset2.getInstanceId()),
140                         new PresetAAIGetCloudRegionFromVnf(vnfPreset3.getInstanceId()),
141                         new PresetAAIGetCloudRegionFromVnf(vnfPreset4.getInstanceId())
142                 ), CLEAR_THEN_SET);
143
144         String api_url = "aai_search_group_members?subscriberId={subscriberId}&serviceType={serviceType}&serviceInvariantId={serviceInvariantId}" +
145                 "&groupType={groupType}&groupRole={groupRole}";
146
147         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");
148
149         LOGGER.info(response);
150
151         String expected = TestUtils.convertRequest(objectMapper, "VnfGroup/searchMembersResponse.json");
152         expected = expected
153                 .replace("VNF1_INSTANCE_NAME", vnfPreset1.getInstanceName())
154                 .replace("VNF1_INSTANCE_ID", vnfPreset1.getInstanceId())
155                 .replace("VNF1_INSTANCE_TYPE", vnfPreset1.getInstanceType())
156                 .replace("VNF2_INSTANCE_NAME", vnfPreset2.getInstanceName())
157                 .replace("VNF2_INSTANCE_ID", vnfPreset2.getInstanceId())
158                 .replace("VNF2_INSTANCE_TYPE", vnfPreset2.getInstanceType())
159                 .replace("VNF3_INSTANCE_NAME", vnfPreset3.getInstanceName())
160                 .replace("VNF3_INSTANCE_ID", vnfPreset3.getInstanceId())
161                 .replace("VNF3_INSTANCE_TYPE", vnfPreset3.getInstanceType())
162                 .replace("VNF4_INSTANCE_NAME", vnfPreset4.getInstanceName())
163                 .replace("VNF4_INSTANCE_ID", vnfPreset4.getInstanceId())
164                 .replace("VNF4_INSTANCE_TYPE", vnfPreset4.getInstanceType());
165
166         assertJsonEquals(response, expected);
167     }
168
169     @Test
170     public void searchGroupMembers_expectedNoResult() {
171         PresetAAIGetServiceInstancesByInvariantId serviceInstancesList = new PresetAAIGetServiceInstancesByInvariantId(
172                 "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14",
173                 ImmutableMap.of("service-instance-id1", ImmutableMultimap.of(),
174                         "service-instance-id2", ImmutableMultimap.of()));
175
176
177         SimulatorApi.registerExpectationFromPreset(serviceInstancesList, CLEAR_THEN_SET);
178
179         String api_url = "aai_search_group_members?subscriberId={subscriberId}&serviceType={serviceType}&serviceInvariantId={serviceInvariantId}" +
180                 "&groupType={groupType}&groupRole={groupRole}";
181
182         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");
183
184         assertJsonEquals(response, "[]");
185     }
186
187     @Test
188     public void serviceWithMultiplePlys_responseIsReasonable() {
189
190         PresetAAIStandardQueryGet l3NetworkPreset1 =
191                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Assigned",
192                         ImmutableMultimap.of());
193
194         PresetAAIStandardQueryGet vlanTag1 = PresetAAIStandardQueryGet.ofVlanTag(44);
195
196         PresetAAIStandardQueryGet l3NetworkPreset2 =
197
198                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Created",
199                         ImmutableMultimap.of("vlan-tag", vlanTag1.getReqPath()));
200
201         PresetAAIStandardQueryGet l3NetworkPreset3 =
202                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Assigned", "nvtprov", "ddc3f20c-08b5-40fd-af72-c6d14636b986","94fdd893-4a36-4d70-b16a-ec29c54c184f",
203                         ImmutableMultimap.of());
204
205         PresetAAIStandardQueryGet l3NetworkPreset4 =
206                 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_HIMELGUARD", "Created", "preprov", "ddc3f20c-08b5-40fd-af72-c6d14636b986","94fdd893-4a36-4d70-b16a-ec29c54c184f",
207                         ImmutableMultimap.of());
208
209         PresetAAIStandardQueryGet volumeGroup1 =
210                 PresetAAIStandardQueryGet.ofVolumeGroup("vSON_test", ImmutableMultimap.of());
211
212         PresetAAIStandardQueryGet instanceGroup1 = PresetAAIStandardQueryGet.ofInstanceGroup("L3-NETWORK", "Ruby Figueroa", ImmutableMultimap.of());
213
214         PresetAAIStandardQueryGet collection1 =
215                 PresetAAIStandardQueryGet.ofCollectionResource(
216                         "Assigned",
217                         ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()),
218                         "081ceb56-eb71-4566-a72d-3e7cbee5cdf1",
219                         "ce8c98bc-4691-44fb-8ff0-7a47487c11c4"
220                 );
221
222         PresetAAIStandardQueryGet vnfPreset1 =
223                 PresetAAIStandardQueryGet.ofVnf(randUuid(),
224                         ImmutableMultimap.of("l3-network", l3NetworkPreset1.getReqPath(), "l3-network", l3NetworkPreset2.getReqPath()),
225                         new Placement(ATT_NC, olson3, "229bcdc6eaeb4ca59d55221141d01f8e"));
226
227         PresetAAIStandardQueryGet vnfPreset2 =
228                 PresetAAIStandardQueryGet.ofVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60","91415b44-753d-494c-926a-456a9172bbb9",
229                         "\"in-maint\": true,", ImmutableMultimap.of("volume-group", volumeGroup1.getReqPath()),
230                         new Placement(ATT_AIC, hvf6, "88a6ca3ee0394ade9403f075db23167e"));
231
232         PresetAAIGetVfModulesByVnf vfModules2 = new PresetAAIGetVfModulesByVnf(vnfPreset2.getInstanceId());
233
234         final PresetAAIStandardQueryGet serviceInstance =
235                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "6e59c5de-f052-46fa-aa7e-2fca9d674c44", "d27e42cf-087e-4d31-88ac-6c4b7585f800", "global-customer-id", "service-instance-type",
236                         ImmutableMultimap.<String, String>builder()
237                                 .putAll("l3-network", l3NetworkPreset3.getReqPath(), l3NetworkPreset4.getReqPath())
238                                 .putAll("collection", collection1.getReqPath())
239                                 .putAll("generic-vnf", vnfPreset1.getReqPath(), vnfPreset2.getReqPath())
240                                 .build()
241                 );
242
243         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
244                 serviceInstance,
245                 l3NetworkPreset3, l3NetworkPreset4, vnfPreset1, vnfPreset2, collection1,
246                 volumeGroup1, l3NetworkPreset1, l3NetworkPreset2, instanceGroup1,
247                 vlanTag1, vfModules2,
248                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("d27e42cf-087e-4d31-88ac-6c4b7585f800")),
249                 new PresetGetSessionSlotCheckIntervalGet(),
250                 new PresetAAIGetSubscribersGet(),
251                 new PresetSDCGetServiceMetadataGet("6e59c5de-f052-46fa-aa7e-2fca9d674c44", "d27e42cf-087e-4d31-88ac-6c4b7585f800", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
252                 new PresetSDCGetServiceToscaModelGet("6e59c5de-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip")
253         ), CLEAR_THEN_SET);
254
255         String expected = TestUtils.convertRequest(objectMapper, "aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json");
256         expected = expected
257                 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
258                 .replace("VNF1_INSTANCE_NAME", vnfPreset1.getInstanceName())
259                 .replace("VNF1_INSTANCE_ID", vnfPreset1.getInstanceId())
260                 .replace("VNF1_INSTANCE_TYPE", vnfPreset1.getInstanceType())
261                 .replace("VNF2_INSTANCE_NAME", vnfPreset2.getInstanceName())
262                 .replace("VNF2_INSTANCE_ID", vnfPreset2.getInstanceId())
263                 .replace("VNF2_INSTANCE_TYPE", vnfPreset2.getInstanceType())
264                 .replace("NETWORK1_INSTANCE_NAME", l3NetworkPreset1.getInstanceName())
265                 .replace("NETWORK1_INSTANCE_ID", l3NetworkPreset1.getInstanceId())
266                 .replace("NETWORK2_INSTANCE_NAME", l3NetworkPreset2.getInstanceName())
267                 .replace("NETWORK2_INSTANCE_ID", l3NetworkPreset2.getInstanceId())
268                 .replace("NETWORK3_INSTANCE_NAME", l3NetworkPreset3.getInstanceName())
269                 .replace("NETWORK3_INSTANCE_ID", l3NetworkPreset3.getInstanceId())
270                 .replace("NETWORK4_INSTANCE_NAME", l3NetworkPreset4.getInstanceName())
271                 .replace("NETWORK4_INSTANCE_ID", l3NetworkPreset4.getInstanceId());
272
273         String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
274
275         assertJsonEquals(response, expected);
276     }
277
278     @Override
279     protected void assertJsonEquals(String actual, String expected) {
280         assertThat(actual, jsonEquals(expected)
281                 .when(IGNORING_ARRAY_ORDER)
282                 .when(IGNORING_EXTRA_FIELDS)
283         );
284     }
285
286     @Test
287     public void serviceWithVnfGotError_exceptionIsThrown() {
288
289         PresetAAIStandardQueryGet vnfPreset =
290                 PresetAAIStandardQueryGet.ofVnf(randUuid(),
291                         ImmutableMultimap.of("l3-network", "/aai/v../I'm a wrong path"),
292                         defaultPlacement());
293
294         final PresetAAIStandardQueryGet serviceInstance =
295                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "global-customer-id", "service-instance-type",
296                         ImmutableMultimap.<String, String>builder()
297                                 .putAll("generic-vnf", vnfPreset.getReqPath())
298                                 .build()
299                 );
300
301         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
302                 serviceInstance,
303                 vnfPreset,
304                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("service-instance-model-invariant-id")),
305                 new PresetSDCGetServiceMetadataGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
306                 new PresetSDCGetServiceToscaModelGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
307                 new PresetGetSessionSlotCheckIntervalGet(),
308                 new PresetAAIGetSubscribersGet()
309         ), CLEAR_THEN_SET);
310
311         final ResponseEntity<String> response = restTemplateErrorAgnostic.getForEntity(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
312         assertThat(response.getBody(),containsString("AAI node fetching failed"));
313         assertThat(response.getStatusCode(), is(HttpStatus.INTERNAL_SERVER_ERROR));
314     }
315
316     @Test
317     public void serviceWithTwoVnfGroupsAndRelatedVnfs() {
318         PresetAAIStandardQueryGet relatedVnf1 =
319                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
320                         "", ImmutableMultimap.of());
321
322         PresetAAIStandardQueryGet relatedVnf2 =
323                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60",
324                         "", ImmutableMultimap.of());
325
326         PresetAAIStandardQueryGet relatedVnf3 =
327                 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60",
328                         "", ImmutableMultimap.of());
329
330         final PresetAAIStandardQueryGet vnfGroup1 =
331                 PresetAAIStandardQueryGet.ofInstanceGroup("vnfGroup-type", "Teresa Bradley",
332                         ImmutableMultimap.<String, String>builder()
333                                 .putAll("generic-vnf", relatedVnf1.getReqPath(), relatedVnf2.getReqPath(), relatedVnf3.getReqPath())
334                                 .build()
335                 );
336
337         final PresetAAIStandardQueryGet vnfGroup2 =
338                 PresetAAIStandardQueryGet.ofInstanceGroup("vnfGroup-type", "Stanley Mccarthy", ImmutableMultimap.of());
339
340         final PresetAAIStandardQueryGet serviceInstance =
341                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "7ee41ce4-4827-44b0-a48e-2707a59905d2", "global-customer-id", "service-instance-type",
342                         ImmutableMultimap.<String, String>builder()
343                                 .putAll("instance-group", vnfGroup1.getReqPath(),vnfGroup2.getReqPath())
344                                 .build()
345                 );
346
347         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
348                 serviceInstance,
349                 vnfGroup1,vnfGroup2, relatedVnf1, relatedVnf2, relatedVnf3,
350                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("7ee41ce4-4827-44b0-a48e-2707a59905d2", "vnf-instance-model-invariant-id")),
351                 new PresetGetSessionSlotCheckIntervalGet(),
352                 new PresetAAIGetSubscribersGet(),
353                 new PresetSDCGetServiceMetadataGet("4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "7ee41ce4-4827-44b0-a48e-2707a59905d2", "service-vnf-grouping-csar.zip"),
354                 new PresetSDCGetServiceToscaModelGet("4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "service-vnf-grouping-csar.zip")
355         ), CLEAR_THEN_SET);
356
357         String expected = TestUtils.convertRequest(objectMapper, "VnfGroup/serviceWithVnfGroupsChildren_serviceInstance.json");
358         expected = expected
359                 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
360                 .replace("VNF_GROUP1_INSTANCE_ID", vnfGroup1.getInstanceId())
361                 .replace("VNF_GROUP1_INSTANCE_NAME", vnfGroup1.getInstanceName())
362                 .replace("VNF_GROUP1_INSTANCE_TYPE", vnfGroup1.getInstanceType())
363                 .replace("VNF_GROUP1_INSTANCE_ROLE", vnfGroup1.getInstanceRole())
364
365                 .replace("RELATED_VNF1_INSTANCE_ID", relatedVnf1.getInstanceId())
366                 .replace("RELATED_VNF1_INSTANCE_NAME", relatedVnf1.getInstanceName())
367                 .replace("RELATED_VNF1_INSTANCE_TYPE", relatedVnf1.getInstanceType())
368
369                 .replace("RELATED_VNF2_INSTANCE_ID", relatedVnf2.getInstanceId())
370                 .replace("RELATED_VNF2_INSTANCE_NAME", relatedVnf2.getInstanceName())
371                 .replace("RELATED_VNF2_INSTANCE_TYPE", relatedVnf2.getInstanceType())
372
373                 .replace("RELATED_VNF3_INSTANCE_ID", relatedVnf3.getInstanceId())
374                 .replace("RELATED_VNF3_INSTANCE_NAME", relatedVnf3.getInstanceName())
375                 .replace("RELATED_VNF3_INSTANCE_TYPE", relatedVnf3.getInstanceType())
376
377                 .replace("VNF_GROUP2_INSTANCE_ID", vnfGroup2.getInstanceId())
378                 .replace("VNF_GROUP2_INSTANCE_NAME", vnfGroup2.getInstanceName())
379                 .replace("VNF_GROUP2_INSTANCE_TYPE", vnfGroup2.getInstanceType())
380                 .replace("VNF_GROUP2_INSTANCE_ROLE", vnfGroup2.getInstanceRole());
381
382         final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
383
384         assertJsonEquals(response, expected);
385     }
386
387     @Test
388     public void serviceWithVrf_resultAsExpected(){
389         PresetAAIStandardQueryGet vpnBindingPreset =
390                 PresetAAIStandardQueryGet.ofVpn("Active", ImmutableMultimap.of(), "mock-global-1", "mock-role-x", "VPN1260","USA,EMEA");
391
392         // in order to verify thst only one route target is parsed from the Vpn - binding of the network
393         PresetAAIStandardQueryGet vpnBindingPresetOnlyForTheNetwork =
394                 PresetAAIStandardQueryGet.ofVpn("Active", ImmutableMultimap.of(), "shouldNotBeOnResult", "shouldNotBeOnResult","shouldNotBeOnResult","shouldNotBeOnResult");
395
396         PresetAAIStandardQueryGet l3NetworkPreset =
397                 PresetAAIStandardQueryGet.ofL3Network("SR-IOV-PROVIDER2-2", "Assigned",
398                         ImmutableMultimap.of("vpn-binding", vpnBindingPreset.getReqPath(),
399                                 "vpn-binding", vpnBindingPresetOnlyForTheNetwork.getReqPath()));
400
401         PresetAAIStandardQueryGet vrfPreset =
402                 PresetAAIStandardQueryGet.ofVrf("Create",
403                         ImmutableMultimap.of(
404                                 "l3-network", l3NetworkPreset.getReqPath(),
405                                 "vpn-binding", vpnBindingPreset.getReqPath()));
406
407         final PresetAAIStandardQueryGet serviceInstance =
408                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "BONDING", "INFRASTRUCTURE-VPN", "f028b2e2-7080-4b13-91b2-94944d4c42d8",
409                         "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", "global-customer-id", "service-instance-type", "GARBAGE DATA",
410                         ImmutableMultimap.of("configuration", vrfPreset.getReqPath()));
411
412         String expected = TestUtils.convertRequest(objectMapper, "aaiGetInstanceTopology/serviceWithVrfTopology.json");
413         expected = expected
414                 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
415                 .replace("VRF_INSTANCE_ID", vrfPreset.getInstanceId())
416                 .replace("VRF_INSTANCE_NAME", vrfPreset.getInstanceName())
417                 .replace("VPN_INSTANCE_ID", vpnBindingPreset.getInstanceId())
418                 .replace("VPN_INSTANCE_NAME", vpnBindingPreset.getInstanceName())
419                 .replace("NETWORK_INSTANCE_NAME", l3NetworkPreset.getInstanceName())
420                 .replace("NETWORK_INSTANCE_ROLE", l3NetworkPreset.getInstanceRole())
421                 .replace("NETWORK_INSTANCE_ID", l3NetworkPreset.getInstanceId());
422
423         SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
424                 serviceInstance,
425                 vrfPreset,
426                 vpnBindingPreset,
427                 l3NetworkPreset,
428                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("network-instance-model-invariant-id", "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", "b67a289b-1688-496d-86e8-1583c828be0a" )),
429                 new PresetGetSessionSlotCheckIntervalGet(),
430                 new PresetAAIGetSubscribersGet(),
431                 new PresetSDCGetServiceMetadataGet("f028b2e2-7080-4b13-91b2-94944d4c42d8", "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", "service-Infravpn-csar.zip"),
432                 new PresetSDCGetServiceToscaModelGet("f028b2e2-7080-4b13-91b2-94944d4c42d8", "service-Infravpn-csar.zip")
433         ), CLEAR_THEN_SET);
434
435         final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
436
437         assertJsonEquals(response, expected);
438     }
439
440     private String randUuid() {
441         return UUID.randomUUID().toString();
442     }
443
444 }