diff options
author | 2020-04-27 06:11:03 +0000 | |
---|---|---|
committer | 2020-04-27 08:51:12 +0000 | |
commit | 4408ab05ba1ee07b70d717b7183d76bd718653e5 (patch) | |
tree | de48eddaf697b1e9be5bad989d9c72ba4819b498 /msasimulator/src/test | |
parent | e3a5e83ea1385a3fdf56173027ba37ca6d17887f (diff) |
Added the base version of the controllers used
for the MDONS use case version(1.0.0SNAPSHOT)
with test cases.
Issue-ID: INT-1532
Change-Id: Ic51448e52722a5edef1ac07a978bb3fdaac07a5d
Signed-off-by: Mehreen Kaleem <mehreen.kaleem@us.fujitsu.com>
Diffstat (limited to 'msasimulator/src/test')
8 files changed, 582 insertions, 0 deletions
diff --git a/msasimulator/src/test/java/org/onap/msasimulator/Config.java b/msasimulator/src/test/java/org/onap/msasimulator/Config.java new file mode 100644 index 0000000..f39016a --- /dev/null +++ b/msasimulator/src/test/java/org/onap/msasimulator/Config.java @@ -0,0 +1,62 @@ +/* + * ============LICENSE_START======================================================= + * MSA-SIMULATOR + * ================================================================================ + * Copyright (C) 2020 Fujitsu Limited. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.msasimulator; + +import org.onap.msasimulator.utils.Utils; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.util.FileCopyUtils; +import org.springframework.context.annotation.Bean; +import org.mockito.Mockito; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; + +@Configuration +public class Config { + + @Bean + public Utils utils() { + Utils utils = Mockito.mock(Utils.class); + String topology = readFileclasspath("topology.json"); + when(utils.readFromFile("/opt/onap/msasimulator/templates/msa-topology.json")).thenReturn(topology); + + return utils; + } + + public static String readFileclasspath(String filename) { + String data = ""; + Resource resource = new ClassPathResource(filename); + InputStream inputStream; + try { + inputStream = resource.getInputStream(); + byte[] bdata = FileCopyUtils.copyToByteArray(inputStream); + data = new String(bdata, StandardCharsets.UTF_8); + return data; + } catch (IOException e) { + return data; + } + } + +} diff --git a/msasimulator/src/test/java/org/onap/msasimulator/TestUtils.java b/msasimulator/src/test/java/org/onap/msasimulator/TestUtils.java new file mode 100644 index 0000000..6b9c546 --- /dev/null +++ b/msasimulator/src/test/java/org/onap/msasimulator/TestUtils.java @@ -0,0 +1,47 @@ +/*
+ * ============LICENSE_START=======================================================
+ * MSA-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.msasimulator;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.util.FileCopyUtils;
+
+public class TestUtils {
+
+ public static String readFileclasspath(String filename) {
+ String data = "";
+ Resource resource = new ClassPathResource(filename);
+ InputStream inputStream;
+ try {
+ inputStream = resource.getInputStream();
+ byte[] bdata = FileCopyUtils.copyToByteArray(inputStream);
+ data = new String(bdata, StandardCharsets.UTF_8);
+ return data;
+ } catch (IOException e) {
+ return data;
+ }
+ }
+
+}
diff --git a/msasimulator/src/test/java/org/onap/msasimulator/controller/TestMsaController.java b/msasimulator/src/test/java/org/onap/msasimulator/controller/TestMsaController.java new file mode 100644 index 0000000..5515556 --- /dev/null +++ b/msasimulator/src/test/java/org/onap/msasimulator/controller/TestMsaController.java @@ -0,0 +1,110 @@ +/* + * ============LICENSE_START======================================================= + * MSA-SIMULATOR + * ================================================================================ + * Copyright (C) 2020 Fujitsu Limited. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.msasimulator.controller; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.msasimulator.Application; +import org.onap.msasimulator.Config; +import org.onap.msasimulator.TestUtils; +import org.onap.msasimulator.model.MsaServiceCreateRequest; +import org.onap.msasimulator.model.MsaServiceResponse; +import org.onap.msasimulator.service.MsaService; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +@RunWith(SpringRunner.class) +@SpringBootTest( + properties = "spring.main.allow-bean-definition-overriding=true", + classes = {Application.class, Config.class}, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class TestMsaController { + + @InjectMocks + MsaController msaController; + + @Mock + MsaService msaService; + + private MockMvc mvc; + + private ObjectMapper mapper; + + @Before + public void beforeEach() { + + MockitoAnnotations.initMocks(this); + + mvc = MockMvcBuilders.standaloneSetup(msaController).build(); + mapper = new ObjectMapper(); + + } + + @Test + public void testTopology() throws Exception { + String topology = TestUtils.readFileclasspath("topology.json"); + String uri = "/cxf/openroadm/v2/networks/otn-topology"; + when(msaService.getTopology()).thenReturn(topology); + MvcResult mvcResult = mvc.perform(get(uri).accept(MediaType.APPLICATION_JSON_VALUE)).andReturn(); + + int status = mvcResult.getResponse().getStatus(); + assertEquals(200, status); + String content = mvcResult.getResponse().getContentAsString(); + assertEquals(content, topology); + } + + @Test + public void testServiceCreateEndpoint() throws Exception { + String serviceCreaterequest = TestUtils.readFileclasspath("service-create-success.json"); + MsaServiceCreateRequest request = mapper.readValue(serviceCreaterequest, MsaServiceCreateRequest.class); + String response = "{\n" + " \"configuration-response-common\":{\n" + " \"request-id\":\"123456\",\n" + + " \"response-code\":\"200\",\n" + + " \"response-message\":\"Service creation was successful\",\n" + + " \"ack-final-indicator\":\"Y\"\n" + " }\n" + "}"; + MsaServiceResponse expectedResponse = mapper.readValue(response, MsaServiceResponse.class); + String uri = "/cxf/openroadm/openroadm-services/create"; + when(msaService.processMsaService(request)).thenReturn(expectedResponse); + MvcResult mvcResult = mvc.perform(post(uri).content(serviceCreaterequest) + .contentType(MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON_VALUE)).andReturn(); + + int status = mvcResult.getResponse().getStatus(); + assertEquals(200, status); + String content = mvcResult.getResponse().getContentAsString(); + MsaServiceResponse actualResponse = mapper.readValue(content, MsaServiceResponse.class); + assertEquals(actualResponse, expectedResponse); + } + +} diff --git a/msasimulator/src/test/java/org/onap/msasimulator/service/MsaServiceTest.java b/msasimulator/src/test/java/org/onap/msasimulator/service/MsaServiceTest.java new file mode 100644 index 0000000..bc9a5ba --- /dev/null +++ b/msasimulator/src/test/java/org/onap/msasimulator/service/MsaServiceTest.java @@ -0,0 +1,113 @@ +/* + * ============LICENSE_START======================================================= + * MSA-SIMULATOR + * ================================================================================ + * Copyright (C) 2020 Fujitsu Limited. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.msasimulator.service; + +import static org.junit.Assert.assertEquals; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.onap.msasimulator.Application; +import org.onap.msasimulator.Config; +import org.onap.msasimulator.TestUtils; +import org.onap.msasimulator.model.MsaServiceCreateRequest; +import org.onap.msasimulator.model.MsaServiceDeleteRequest; +import org.onap.msasimulator.model.MsaServiceResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest( + properties = "spring.main.allow-bean-definition-overriding=true", + classes = {Application.class, Config.class}, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) + +public class MsaServiceTest { + + @Autowired + MsaService msaService; + + @Autowired + ObjectMapper objectMapper; + + @Before + public void setUp() { + + MockitoAnnotations.initMocks(this); + + } + + @Test + public void testGetTopology() { + String topology = TestUtils.readFileclasspath("topology.json"); + assertEquals(topology, msaService.getTopology()); + } + + @Test + public void testServiceCreateFail() throws JsonParseException, JsonMappingException, IOException { + String requestJson = TestUtils.readFileclasspath("service-create-failure.json"); + MsaServiceCreateRequest request = objectMapper.readValue(requestJson, MsaServiceCreateRequest.class); + String response = "{\n" + " \"configuration-response-common\":{\n" + " \"request-id\":\"123456\",\n" + + " \"response-code\":\"410\",\n" + + " \"response-message\":\"Link not available , Service creation failed\",\n" + + " \"ack-final-indicator\":\"Y\"\n" + " }\n" + "}"; + MsaServiceResponse expectedResponse = objectMapper.readValue(response, MsaServiceResponse.class); + + MsaServiceResponse actualResponse = msaService.processMsaService(request); + assertEquals(expectedResponse, actualResponse); + } + + @Test + public void testServiceCreatSuccessl() throws JsonParseException, JsonMappingException, IOException { + String requestJson = TestUtils.readFileclasspath("service-create-success.json"); + MsaServiceCreateRequest request = objectMapper.readValue(requestJson, MsaServiceCreateRequest.class); + String response = "{\n" + " \"configuration-response-common\":{\n" + " \"request-id\":\"123456\",\n" + + " \"response-code\":\"200\",\n" + + " \"response-message\":\"Service creation was successful\",\n" + + " \"ack-final-indicator\":\"Y\"\n" + " }\n" + "}"; + MsaServiceResponse expectedResponse = objectMapper.readValue(response, MsaServiceResponse.class); + + MsaServiceResponse actualResponse = msaService.processMsaService(request); + assertEquals(expectedResponse, actualResponse); + } + + @Test + public void testServiceDelete() throws JsonParseException, JsonMappingException, IOException { + String requestJson = TestUtils.readFileclasspath("service-delete-request.json"); + MsaServiceDeleteRequest request = objectMapper.readValue(requestJson, MsaServiceDeleteRequest.class); + String response = "{\n" + " \"configuration-response-common\":{\n" + " \"request-id\":\"123456\",\n" + + " \"response-code\":\"200\",\n" + " \"response-message\":\"Service deletion success\",\n" + + " \"ack-final-indicator\":\"Y\"\n" + " }\n" + "}"; + MsaServiceResponse expectedResponse = objectMapper.readValue(response, MsaServiceResponse.class); + + MsaServiceResponse actualResponse = msaService.processMsaServiceDelete(request); + assertEquals(expectedResponse, actualResponse); + } + +} diff --git a/msasimulator/src/test/resources/service-create-failure.json b/msasimulator/src/test/resources/service-create-failure.json new file mode 100644 index 0000000..c008a6f --- /dev/null +++ b/msasimulator/src/test/resources/service-create-failure.json @@ -0,0 +1,54 @@ +{ + "common-id": "1234567", + "connection-type": "service", + "service-name": "svc-Customer1-orange-001_MDONS_OTN_MSA", + "sdnc-request-header": { + "request-id": "123456", + "rpc-action": "service-create", + "notification-url": "http://167.254.204.118:8090/receiver/services", + "request-system-id": "SDN-MLC" + }, + "service-a-end": { + "service-rate": 10, + "service-format": "Ethernet", + "clli": "OWB-AEND", + "node-id": "OWBSPDRNE15", + "optic-type": "gray", + "ethernet-encoding": "10GBASE-R", + "mapping-mode": "GFP-F", + "tx-direction": { + "port": { + "port-device-name": "router-1", + "port-name": "R1" + } + }, + "rx-direction": { + "port": { + "port-device-name": "router-1", + "port-name": "R1" + } + } + }, + "service-z-end": { + "service-rate": 10, + "service-format": "Ethernet", + "node-id": "OWBSPDRNE16", + "clli": "OWB-ZEND", + "optic-type": "gray", + "ethernet-encoding": "10GBASE-R", + "mapping-mode": "GFP-F", + "tx-direction": { + "port": { + "port-device-name": "router-2", + "port-name": "R2" + } + }, + "rx-direction": { + "port": { + "port-device-name": "router-2", + "port-name": "R2" + } + } + }, + "service-layer": "otn" +} diff --git a/msasimulator/src/test/resources/service-create-success.json b/msasimulator/src/test/resources/service-create-success.json new file mode 100644 index 0000000..2edae54 --- /dev/null +++ b/msasimulator/src/test/resources/service-create-success.json @@ -0,0 +1,54 @@ +{ + "common-id": "1234567", + "connection-type": "service", + "service-name": "customer", + "sdnc-request-header": { + "request-id": "123456", + "rpc-action": "service-create", + "notification-url": "http://167.254.204.118:8090/receiver/services", + "request-system-id": "SDN-MLC" + }, + "service-a-end": { + "service-rate": 10, + "service-format": "Ethernet", + "clli": "OWB-AEND", + "node-id": "NodeA", + "optic-type": "gray", + "ethernet-encoding": "10GBASE-R", + "mapping-mode": "GFP-F", + "tx-direction": { + "port": { + "port-device-name": "router-1", + "port-name": "R1" + } + }, + "rx-direction": { + "port": { + "port-device-name": "router-1", + "port-name": "R1" + } + } + }, + "service-z-end": { + "service-rate": 10, + "service-format": "Ethernet", + "node-id": "NodeB", + "clli": "OWB-ZEND", + "optic-type": "gray", + "ethernet-encoding": "10GBASE-R", + "mapping-mode": "GFP-F", + "tx-direction": { + "port": { + "port-device-name": "router-2", + "port-name": "R2" + } + }, + "rx-direction": { + "port": { + "port-device-name": "router-2", + "port-name": "R2" + } + } + }, + "service-layer": "otn" +} diff --git a/msasimulator/src/test/resources/service-delete-request.json b/msasimulator/src/test/resources/service-delete-request.json new file mode 100644 index 0000000..06ed4e9 --- /dev/null +++ b/msasimulator/src/test/resources/service-delete-request.json @@ -0,0 +1,12 @@ +{ + "sdnc-request-header": { + "request-id": "123456", + "rpc-action": "service-delete", + "notification-url": "http://167.254.204.118:8090/receiver/services", + "request-system-id": "SDN-MLC" + }, + "service-delete-req-info": { + "tail-retention": "no", + "service-name": "new" + } +} diff --git a/msasimulator/src/test/resources/topology.json b/msasimulator/src/test/resources/topology.json new file mode 100644 index 0000000..7519d93 --- /dev/null +++ b/msasimulator/src/test/resources/topology.json @@ -0,0 +1,130 @@ +{ + "network-id": "otn-topology", + "ietf-network-topology:link": [ + { + "link-id": "NodeA-XPDR1#XPDR1-NETWORK1##NodeB-XPDR1#XPDR1-NETWORK2", + "org-openroadm-network-topology:administrative-state": "outOfService", + "org-openroadm-otn-network-topology:link-type": "OTN-LINK", + "destination": { + "dest-node": "NodeB-XPDR1", + "dest-tp": "XPDR1-NETWORK2" + }, + "source": { + "source-node": "NodeA-XPDR1", + "source-tp": "XPDR1-NETWORK1" + } + } + ], + "supporting-network": [ + { + "network-ref": "openroadm-topology" + } + ], + "network-types": {}, + "node": [ + { + "supporting-node": [ + { + "network-ref": "openroadm-topology", + "node-ref": "NodeA-XPDR1" + } + ], + "node-id": "NodeA-XPDR1", + "ietf-network-topology:termination-point": [ + { + "org-openroadm-otn-network-topology:tp-type": "XPONDER-CLIENT", + "org-openroadm-otn-network-topology:eqpt-srg-id": 1, + "tp-id": "XPDR1-CLIENT1", + "supporting-termination-point": [ + { + "network-ref": "openroadm-topology", + "tp-ref": "XPDR1-CLIENT1", + "node-ref": "NodeA-XPDR1" + } + ] + }, + { + "org-openroadm-otn-network-topology:tp-type": "XPONDER-CLIENT", + "org-openroadm-otn-network-topology:eqpt-srg-id": 1, + "tp-id": "XPDR1-CLIENT2", + "supporting-termination-point": [ + { + "network-ref": "openroadm-topology", + "tp-ref": "XPDR1-CLIENT2", + "node-ref": "NodeA-XPDR1" + }, + { + "org-openroadm-otn-network-topology:tp-type": "XPONDER-NETWORK", + "org-openroadm-otn-network-topology:eqpt-srg-id": 1, + "tp-id": "XPDR1-NETWORK1", + "supporting-termination-point": [ + { + "network-ref": "openroadm-topology", + "tp-ref": "XPDR1-NETWORK1", + "node-ref": "NodeA-XPDR1" + } + ] + } + ] + } + ], + "org-openroadm-network:node-status": "PLANNED", + "org-openroadm-otn-network-topology:node-type": "SWITCH", + "org-openroadm-otn-network-topology:xpdr-attributes": { + "xpdr-number": 1 + } + }, + { + "supporting-node": [ + { + "network-ref": "openroadm-topology", + "node-ref": "NodeB-XPDR1" + } + ], + "node-id": "NodeB-XPDR1", + "ietf-network-topology:termination-point": [ + { + "org-openroadm-otn-network-topology:tp-type": "XPONDER-CLIENT", + "org-openroadm-otn-network-topology:eqpt-srg-id": 1, + "tp-id": "XPDR1-CLIENT1", + "supporting-termination-point": [ + { + "network-ref": "openroadm-topology", + "tp-ref": "XPDR1-CLIENT1", + "node-ref": "NodeA-XPDR1" + } + ] + }, + { + "org-openroadm-otn-network-topology:tp-type": "XPONDER-CLIENT", + "org-openroadm-otn-network-topology:eqpt-srg-id": 1, + "tp-id": "XPDR1-CLIENT2", + "supporting-termination-point": [ + { + "network-ref": "openroadm-topology", + "tp-ref": "XPDR1-CLIENT2", + "node-ref": "NodeA-XPDR1" + }, + { + "org-openroadm-otn-network-topology:tp-type": "XPONDER-NETWORK", + "org-openroadm-otn-network-topology:eqpt-srg-id": 1, + "tp-id": "XPDR1-NETWORK1", + "supporting-termination-point": [ + { + "network-ref": "openroadm-topology", + "tp-ref": "XPDR1-NETWORK1", + "node-ref": "NodeA-XPDR1" + } + ] + } + ] + } + ], + "org-openroadm-network:node-status": "PLANNED", + "org-openroadm-otn-network-topology:node-type": "SWITCH", + "org-openroadm-otn-network-topology:xpdr-attributes": { + "xpdr-number": 1 + } + } + ] +} |