Merge "added check for null object"
[so.git] / bpmn / MSOCommonBPMN / src / test / java / org / onap / so / bpmn / servicedecomposition / tasks / CloudInfoFromAAITest.java
1 package org.onap.so.bpmn.servicedecomposition.tasks;
2
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;
9
10 import java.io.File;
11 import java.io.IOException;
12 import java.util.ArrayList;
13 import java.util.List;
14 import java.util.Optional;
15
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;
31
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;
36
37 @RunWith(MockitoJUnitRunner.class)
38 public class CloudInfoFromAAITest {
39
40         private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
41
42         @Spy
43         private CloudInfoFromAAI SPY_CloudInfoFromAAI = new CloudInfoFromAAI();
44
45         protected ObjectMapper mapper = new ObjectMapper();
46         
47         @Mock
48         private BBInputSetupUtils SPY_bbInputSetupUtils;
49
50         @Before
51         public void setup(){
52                 SPY_CloudInfoFromAAI.setBbInputSetupUtils(SPY_bbInputSetupUtils);
53         }
54         
55         @Test
56         public void testGetCloudInfoFromAAI() throws JsonParseException, JsonMappingException, IOException {
57                 //Test vnfs
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";
64                 vnf.setVnfId(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));
75                 
76                 //Test networks
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));
89                 
90                 //Test no relationships
91                 
92                 doReturn(Optional.empty()).when(SPY_CloudInfoFromAAI).getRelationshipsFromWrapper(isA(AAIResultWrapper.class));
93                 actual = SPY_CloudInfoFromAAI.getCloudInfoFromAAI(serviceInstance);
94                 assertEquals(actual, Optional.empty());
95                 
96                 //Test null
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());
102         }
103         
104         @Test
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);
117                 
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);
128                 
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);
137                 
138                 Optional<CloudRegion> actual = SPY_CloudInfoFromAAI.getRelatedCloudRegionAndTenant(relationships);
139                 
140                 assertThat(actual.get(), sameBeanAs(expected));
141         }
142 }