1 package org.onap.so.bpmn.servicedecomposition.tasks;
3 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
4 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
5 import static org.junit.Assert.assertEquals;
6 import static org.junit.Assert.assertNull;
7 import static org.mockito.Matchers.isA;
8 import static org.mockito.Mockito.doReturn;
11 import java.io.IOException;
12 import java.util.ArrayList;
13 import java.util.List;
14 import java.util.Optional;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.junit.runner.RunWith;
19 import org.mockito.Mock;
20 import org.mockito.Mockito;
21 import org.mockito.Spy;
22 import org.mockito.runners.MockitoJUnitRunner;
23 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
24 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
25 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
26 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
27 import org.onap.so.client.aai.AAICommonObjectMapperProvider;
28 import org.onap.so.client.aai.AAIObjectType;
29 import org.onap.so.client.aai.entities.AAIResultWrapper;
30 import org.onap.so.client.aai.entities.Relationships;
32 import com.fasterxml.jackson.core.JsonParseException;
33 import com.fasterxml.jackson.core.JsonProcessingException;
34 import com.fasterxml.jackson.databind.JsonMappingException;
35 import com.fasterxml.jackson.databind.ObjectMapper;
37 @RunWith(MockitoJUnitRunner.class)
38 public class CloudInfoFromAAITest {
40 private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
43 private CloudInfoFromAAI SPY_CloudInfoFromAAI = new CloudInfoFromAAI();
45 protected ObjectMapper mapper = new ObjectMapper();
48 private BBInputSetupUtils SPY_bbInputSetupUtils;
52 SPY_CloudInfoFromAAI.setBbInputSetupUtils(SPY_bbInputSetupUtils);
56 public void testGetCloudInfoFromAAI() throws JsonParseException, JsonMappingException, IOException {
58 ServiceInstance serviceInstance = mapper.readValue(
59 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
60 ServiceInstance.class);
61 CloudRegion expected = new CloudRegion();
62 GenericVnf vnf = new GenericVnf();
63 String vnfId = "vnfId";
65 serviceInstance.getVnfs().add(vnf);
66 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
67 aaiVnf.setVnfId(vnfId);
68 Relationships relationships = Mockito.mock(Relationships.class);
69 Optional<Relationships> relationshipsOp= Optional.of(relationships);
70 doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
71 doReturn(relationshipsOp).when(SPY_CloudInfoFromAAI).getRelationshipsFromWrapper(isA(AAIResultWrapper.class));
72 doReturn(Optional.of(expected)).when(SPY_CloudInfoFromAAI).getRelatedCloudRegionAndTenant(relationships);
73 Optional<CloudRegion> actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
74 assertThat(actual.get(), sameBeanAs(expected));
77 serviceInstance = mapper.readValue(
78 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
79 ServiceInstance.class);
80 L3Network l3Network = new L3Network();
81 String networkId = "networkId";
82 l3Network.setNetworkId(networkId);
83 serviceInstance.getNetworks().add(l3Network);
84 org.onap.aai.domain.yang.L3Network aaiL3Network = new org.onap.aai.domain.yang.L3Network();
85 aaiL3Network.setNetworkId(networkId);
86 doReturn(aaiL3Network).when(SPY_bbInputSetupUtils).getAAIL3Network(l3Network.getNetworkId());
87 actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
88 assertThat(actual.get(), sameBeanAs(expected));
90 //Test no relationships
92 doReturn(Optional.empty()).when(SPY_CloudInfoFromAAI).getRelationshipsFromWrapper(isA(AAIResultWrapper.class));
93 actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
94 assertEquals(actual, Optional.empty());
97 serviceInstance = mapper.readValue(
98 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
99 ServiceInstance.class);
100 actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
101 assertEquals(actual, Optional.empty());
105 public void testGetRelatedCloudRegionAndTenant() throws JsonProcessingException {
106 String cloudOwner = "cloudOwner";
107 String cloudRegionId = "cloudRegionId";
108 String cloudRegionVersion = "cloudRegionVersion";
109 String cloudRegionComplexName = "cloudRegionComplexName";
110 String tenantId = "tenantId";
111 CloudRegion expected = new CloudRegion();
112 expected.setCloudOwner(cloudOwner);
113 expected.setCloudRegionVersion(cloudRegionVersion);
114 expected.setComplex(cloudRegionComplexName);
115 expected.setLcpCloudRegionId(cloudRegionId);
116 expected.setTenantId(tenantId);
118 Relationships relationships = Mockito.mock(Relationships.class);
119 List<AAIResultWrapper> cloudRegions = new ArrayList<>();
120 org.onap.aai.domain.yang.CloudRegion cloudRegion = new org.onap.aai.domain.yang.CloudRegion();
121 cloudRegion.setCloudOwner(cloudOwner);
122 cloudRegion.setCloudRegionId(cloudRegionId);
123 cloudRegion.setCloudRegionVersion(cloudRegionVersion);
124 cloudRegion.setComplexName(cloudRegionComplexName);
125 AAIResultWrapper cloudRegionWrapper = new AAIResultWrapper(
126 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(cloudRegion));
127 cloudRegions.add(cloudRegionWrapper);
129 doReturn(cloudRegions).when(relationships).getByType(AAIObjectType.CLOUD_REGION);
130 List<AAIResultWrapper> tenants = new ArrayList<>();
131 org.onap.aai.domain.yang.Tenant tenant = new org.onap.aai.domain.yang.Tenant();
132 tenant.setTenantId(tenantId);
133 AAIResultWrapper tenantWrapper = new AAIResultWrapper(
134 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(tenant));
135 tenants.add(tenantWrapper);
136 doReturn(tenants).when(relationships).getByType(AAIObjectType.TENANT);
138 Optional<CloudRegion> actual = SPY_CloudInfoFromAAI.getRelatedCloudRegionAndTenant(relationships);
140 assertThat(actual.get(), sameBeanAs(expected));