Containerization feature of SO
[so.git] / bpmn / MSOCoreBPMN / src / test / java / org / onap / so / bpmn / core / domain / ServiceDecompositionTest.java
1 /*
2 * ============LICENSE_START=======================================================
3  * ONAP : SO
4  * ================================================================================
5  * Copyright (C) 2018 TechMahindra
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19 */
20 package org.onap.so.bpmn.core.domain;
21
22 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
23 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertTrue;
27
28 import java.io.IOException;
29 import java.nio.file.Files;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33
34 import org.junit.Before;
35 import org.junit.Test;
36
37 import com.fasterxml.jackson.core.JsonProcessingException;
38
39 public class ServiceDecompositionTest {
40         private static final String RESOURCE_PATH = "src/test/resources/json-examples/";
41         
42         VnfResource vnfResource;
43         NetworkResource networkResource;
44         AllottedResource allottedResource;
45         ConfigResource configResource;
46         
47         @Before
48         public void before() {
49                 vnfResource = new VnfResource();
50                 vnfResource.setResourceId("vnfResourceId");
51                 vnfResource.setModules(new ArrayList<>());
52                 
53                 networkResource = new NetworkResource();
54                 networkResource.setResourceId("networkResourceId");
55                 
56                 allottedResource = new AllottedResource();
57                 allottedResource.setResourceId("allottedResourceId");
58         
59                 configResource = new ConfigResource();
60                 configResource.setResourceId("configResourceId");
61         }
62
63         @Test
64         public void serviceDecompositionTest() throws JsonProcessingException, IOException {
65                 // covering methods not covered by openpojo test
66                 String catalogRestOutput = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "ServiceDecomposition.json")));
67                 
68                 ServiceDecomposition serviceDecomp = new ServiceDecomposition(catalogRestOutput);
69                 serviceDecomp.addVnfResource(vnfResource);
70                 serviceDecomp.addNetworkResource(networkResource);
71                 serviceDecomp.addAllottedResource(allottedResource);
72                 serviceDecomp.addConfigResource(configResource);
73                 
74                 assertThat(serviceDecomp.getServiceResource(vnfResource.getResourceId()), sameBeanAs(vnfResource));
75                 assertThat(serviceDecomp.getServiceResource(networkResource.getResourceId()), sameBeanAs(networkResource));
76                 assertThat(serviceDecomp.getServiceResource(allottedResource.getResourceId()), sameBeanAs(allottedResource));
77                 assertThat(serviceDecomp.getServiceResource(configResource.getResourceId()), sameBeanAs(configResource));
78                 
79                 VnfResource vnfResourceReplace = new VnfResource();
80                 vnfResourceReplace.setResourceId(vnfResource.getResourceId());
81                 vnfResourceReplace.setResourceInstanceName("vnfResourceReplaceInstanceName");
82                 
83                 assertTrue(serviceDecomp.replaceResource(vnfResourceReplace));
84                 assertTrue(serviceDecomp.getVnfResources().contains(vnfResourceReplace));
85                 
86                 assertTrue(serviceDecomp.deleteResource(vnfResourceReplace));
87                 assertFalse(serviceDecomp.deleteResource(vnfResourceReplace));
88                 assertFalse(serviceDecomp.deleteResource(new VnfResource()));
89         }
90                 
91         @Test
92         public void serviceDecompositionJsonTest() throws IOException {
93                 String catalogRestOutput = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "ServiceDecomposition.json")));
94                 String expectedCatalogRestOutput = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "ServiceDecompositionExpected.json")));
95                 String vnfResourceJson = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "VnfResource.json")));
96                 String networkResourceJson = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "NetworkResource.json")));
97                 String allottedResourceJson = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "AllottedResource.json")));
98                 String configResourceJson = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "ConfigResource.json")));
99                 
100                 ServiceDecomposition serviceDecomp = new ServiceDecomposition(catalogRestOutput, "serviceInstanceId");
101                 serviceDecomp.addResource(vnfResource);
102                 serviceDecomp.addResource(networkResource);
103                 serviceDecomp.addResource(allottedResource);
104                 serviceDecomp.addResource(configResource);
105                 
106                 assertThat(serviceDecomp.getServiceResource(vnfResource.getResourceId()), sameBeanAs(vnfResource));
107                 assertThat(serviceDecomp.getServiceResource(networkResource.getResourceId()), sameBeanAs(networkResource));
108                 assertThat(serviceDecomp.getServiceResource(allottedResource.getResourceId()), sameBeanAs(allottedResource));
109                 assertThat(serviceDecomp.getServiceResource(configResource.getResourceId()), sameBeanAs(configResource));
110                 
111                 serviceDecomp = new ServiceDecomposition(catalogRestOutput, "serviceInstanceId");
112                 serviceDecomp.addVnfResource(vnfResourceJson);
113                 serviceDecomp.addNetworkResource(networkResourceJson);
114                 serviceDecomp.addAllottedResource(allottedResourceJson);
115                 serviceDecomp.addConfigResource(configResourceJson);
116                 
117                 ServiceDecomposition expectedServiceDecomp = new ServiceDecomposition(expectedCatalogRestOutput, "serviceInstanceId");
118                 
119                 assertThat(serviceDecomp, sameBeanAs(expectedServiceDecomp));
120                 assertEquals(serviceDecomp.listToJson(Arrays.asList(networkResource)) + serviceDecomp.listToJson(Arrays.asList(vnfResource)) + 
121                                 serviceDecomp.listToJson(Arrays.asList(allottedResource)) + serviceDecomp.listToJson(Arrays.asList(configResource)), 
122                                 serviceDecomp.getServiceResourcesJsonString());
123         }
124
125 }