2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2019 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.bpmn.servicedecomposition.tasks;
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.mockito.ArgumentMatchers.isA;
27 import static org.mockito.Mockito.doReturn;
29 import java.io.IOException;
30 import java.util.ArrayList;
31 import java.util.List;
32 import java.util.Optional;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36 import org.mockito.Mock;
37 import org.mockito.Mockito;
38 import org.mockito.Spy;
39 import org.mockito.runners.MockitoJUnitRunner;
40 import org.onap.aaiclient.client.aai.AAICommonObjectMapperProvider;
41 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
42 import org.onap.aaiclient.client.aai.entities.Relationships;
43 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
48 import com.fasterxml.jackson.core.JsonParseException;
49 import com.fasterxml.jackson.core.JsonProcessingException;
50 import com.fasterxml.jackson.databind.JsonMappingException;
51 import com.fasterxml.jackson.databind.ObjectMapper;
53 @RunWith(MockitoJUnitRunner.class)
54 public class CloudInfoFromAAITest {
56 private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
59 private CloudInfoFromAAI SPY_CloudInfoFromAAI = new CloudInfoFromAAI();
61 protected ObjectMapper mapper = new ObjectMapper();
64 private BBInputSetupUtils SPY_bbInputSetupUtils;
68 SPY_CloudInfoFromAAI.setBbInputSetupUtils(SPY_bbInputSetupUtils);
72 public void testGetCloudInfoFromAAI() throws JsonParseException, JsonMappingException, IOException {
74 ServiceInstance serviceInstance =
75 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
76 ServiceInstance.class);
77 CloudRegion expected = new CloudRegion();
78 GenericVnf vnf = new GenericVnf();
79 String vnfId = "vnfId";
81 serviceInstance.getVnfs().add(vnf);
82 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
83 aaiVnf.setVnfId(vnfId);
84 Relationships relationships = Mockito.mock(Relationships.class);
85 Optional<Relationships> relationshipsOp = Optional.of(relationships);
86 doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
87 doReturn(relationshipsOp).when(SPY_CloudInfoFromAAI).getRelationshipsFromWrapper(isA(AAIResultWrapper.class));
88 doReturn(Optional.of(expected)).when(SPY_CloudInfoFromAAI).getRelatedCloudRegionAndTenant(relationships);
89 Optional<CloudRegion> actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
90 assertThat(actual.get(), sameBeanAs(expected));
94 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
95 ServiceInstance.class);
96 L3Network l3Network = new L3Network();
97 String networkId = "networkId";
98 l3Network.setNetworkId(networkId);
99 serviceInstance.getNetworks().add(l3Network);
100 org.onap.aai.domain.yang.L3Network aaiL3Network = new org.onap.aai.domain.yang.L3Network();
101 aaiL3Network.setNetworkId(networkId);
102 doReturn(aaiL3Network).when(SPY_bbInputSetupUtils).getAAIL3Network(l3Network.getNetworkId());
103 actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
104 assertThat(actual.get(), sameBeanAs(expected));
106 // Test no relationships
108 doReturn(Optional.empty()).when(SPY_CloudInfoFromAAI).getRelationshipsFromWrapper(isA(AAIResultWrapper.class));
109 actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
110 assertEquals(actual, Optional.empty());
114 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
115 ServiceInstance.class);
116 actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
117 assertEquals(actual, Optional.empty());
121 public void testGetRelatedCloudRegionAndTenant() throws JsonProcessingException {
122 String cloudOwner = "cloudOwner";
123 String cloudRegionId = "cloudRegionId";
124 String cloudRegionVersion = "cloudRegionVersion";
125 String cloudRegionComplexName = "cloudRegionComplexName";
126 String tenantId = "tenantId";
127 CloudRegion expected = new CloudRegion();
128 expected.setCloudOwner(cloudOwner);
129 expected.setCloudRegionVersion(cloudRegionVersion);
130 expected.setComplex(cloudRegionComplexName);
131 expected.setLcpCloudRegionId(cloudRegionId);
132 expected.setTenantId(tenantId);
134 Relationships relationships = Mockito.mock(Relationships.class);
135 List<AAIResultWrapper> cloudRegions = new ArrayList<>();
136 org.onap.aai.domain.yang.CloudRegion cloudRegion = new org.onap.aai.domain.yang.CloudRegion();
137 cloudRegion.setCloudOwner(cloudOwner);
138 cloudRegion.setCloudRegionId(cloudRegionId);
139 cloudRegion.setCloudRegionVersion(cloudRegionVersion);
140 cloudRegion.setComplexName(cloudRegionComplexName);
141 AAIResultWrapper cloudRegionWrapper =
142 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(cloudRegion));
143 cloudRegions.add(cloudRegionWrapper);
145 doReturn(cloudRegions).when(relationships).getByType(Types.CLOUD_REGION);
146 List<AAIResultWrapper> tenants = new ArrayList<>();
147 org.onap.aai.domain.yang.Tenant tenant = new org.onap.aai.domain.yang.Tenant();
148 tenant.setTenantId(tenantId);
149 AAIResultWrapper tenantWrapper =
150 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(tenant));
151 tenants.add(tenantWrapper);
152 doReturn(tenants).when(relationships).getByType(Types.TENANT);
154 Optional<CloudRegion> actual = SPY_CloudInfoFromAAI.getRelatedCloudRegionAndTenant(relationships);
156 assertThat(actual.get(), sameBeanAs(expected));