summaryrefslogtreecommitdiffstats
path: root/so-nssmf-adapter-application/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'so-nssmf-adapter-application/src/test/java')
-rw-r--r--so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterControllerTest.java132
-rw-r--r--so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/entity/RestResponseTest.java59
-rw-r--r--so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/exceptions/ApplicationExceptionTest.java40
-rw-r--r--so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java645
-rw-r--r--so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/util/RestUtilTest.java161
5 files changed, 1037 insertions, 0 deletions
diff --git a/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterControllerTest.java b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterControllerTest.java
new file mode 100644
index 0000000..3a57938
--- /dev/null
+++ b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterControllerTest.java
@@ -0,0 +1,132 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.so.adapters.nssmf.controller;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.onap.so.adapters.nssmf.controller.NssmfAdapterController;
+import org.onap.so.adapters.nssmf.service.NssmfManagerService;
+import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.junit.Test;
+import java.lang.reflect.Field;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+import static org.mockito.MockitoAnnotations.initMocks;
+import static org.onap.so.beans.nsmf.NetworkType.CORE;
+
+@RunWith(SpringRunner.class)
+public class NssmfAdapterControllerTest {
+
+ @Mock
+ private NssmfManagerService nssmfManagerService;
+
+ private NssmfAdapterController controller;
+
+ @Mock
+ private ResponseEntity entity;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+ controller = new NssmfAdapterController();
+
+ Field nssmfManagerService = controller.getClass().getDeclaredField("nssmfManagerService");
+ nssmfManagerService.setAccessible(true);
+ nssmfManagerService.set(controller, this.nssmfManagerService);
+ }
+
+
+ @Test
+ public void allocateNssiTest() throws Exception {
+ commonMock();
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ ResponseEntity entity = controller.allocateNssi(request);
+ assertNotNull(entity);
+ }
+
+ @Test
+ public void deAllocateNssiTest() throws Exception {
+ commonMock();
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ String profileId = "7516eb33-e8d3-4805-b91a-96de1bb6d8bb";
+ ResponseEntity entity = controller.deAllocateNssi(request, profileId);
+ assertNotNull(entity);
+
+ }
+
+ @Test
+ public void activateNssiTest() throws Exception {
+ commonMock();
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ String snssai = "01-772523CD";
+ ResponseEntity entity = controller.activateNssi(request, snssai);
+ assertNotNull(entity);
+ }
+
+ @Test
+ public void deactivateNssiTest() throws Exception {
+ commonMock();
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ String snssai = "01-772523CD";
+ ResponseEntity entity = controller.deactivateNssi(request, snssai);
+ assertNotNull(entity);
+ }
+
+ @Test
+ public void queryJobStatusTest() throws Exception {
+ commonMock();
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ String jobId = "b86aa515-b285-487b-8a1e-01f3cc871b88";
+ ResponseEntity entity = controller.queryJobStatus(request, jobId);
+ assertNotNull(entity);
+ }
+
+ @Test
+ public void queryNSSISelectionCapabilityTest() throws Exception {
+ commonMock();
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ ResponseEntity entity = controller.queryNSSISelectionCapability(request);
+ assertNotNull(entity);
+ }
+
+ @Test
+ public void querySubnetCapabilityTest() throws Exception {
+ commonMock();
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ ResponseEntity entity = controller.querySubnetCapability(request);
+ assertNotNull(entity);
+ }
+
+ private void commonMock() {
+ NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest();
+ when(nssmfManagerService.allocateNssi(any())).thenReturn(entity);
+ when(nssmfManagerService.deAllocateNssi(any(), anyString())).thenReturn(entity);
+ when(nssmfManagerService.deActivateNssi(any(), anyString())).thenReturn(entity);
+ when(nssmfManagerService.activateNssi(any(), anyString())).thenReturn(entity);
+ when(nssmfManagerService.queryJobStatus(any(), anyString())).thenReturn(entity);
+ when(nssmfManagerService.querySubnetCapability(any())).thenReturn(entity);
+ when(nssmfManagerService.queryNSSISelectionCapability(any())).thenReturn(entity);
+ }
+}
diff --git a/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/entity/RestResponseTest.java b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/entity/RestResponseTest.java
new file mode 100644
index 0000000..d80359d
--- /dev/null
+++ b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/entity/RestResponseTest.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.so.adapters.nssmf.entity;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.junit4.SpringRunner;
+import java.util.HashMap;
+import java.util.Map;
+import static org.junit.Assert.*;
+
+@RunWith(SpringRunner.class)
+public class RestResponseTest {
+
+ @Test
+ public void testRestResponse() {
+ RestResponse restResponse = new RestResponse();
+ Map<String, String> header = new HashMap<>();
+ header.put("X-RequestID", "05a63ae2-249a-49b9-bc52-0c70a3bca487");
+ header.put("X-InvocationID", "bb7f7fc5-52ba-4937-a7af-55036694fe19");
+ header.put("testlong", "55036694");
+ header.put("testint", "55");
+ restResponse.setRespHeaderMap(header);
+
+ String headerStr = restResponse.getRespHeaderStr("X-RequestID");
+ assertEquals(headerStr, "05a63ae2-249a-49b9-bc52-0c70a3bca487");
+
+ long headerLong = restResponse.getRespHeaderLong("testlong");
+ long headerLongNull = restResponse.getRespHeaderLong("testlong1");
+ assertNotNull(headerLong);
+ assertEquals(headerLongNull, -1L);
+
+ int headerInt = restResponse.getRespHeaderInt("testint");
+ int headerIntNull = restResponse.getRespHeaderInt("testint1");
+ assertNotNull(headerInt);
+ assertEquals(headerIntNull, -1);
+
+ Map headerMap = restResponse.getRespHeaderMap();
+ assertNotNull(headerMap);
+ }
+
+}
diff --git a/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/exceptions/ApplicationExceptionTest.java b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/exceptions/ApplicationExceptionTest.java
new file mode 100644
index 0000000..27043bb
--- /dev/null
+++ b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/exceptions/ApplicationExceptionTest.java
@@ -0,0 +1,40 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.so.adapters.nssmf.exceptions;
+
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+import static org.junit.Assert.*;
+
+@RunWith(SpringRunner.class)
+public class ApplicationExceptionTest {
+
+ @Test
+ public void buildErrorResponseTest() {
+ ApplicationException appException = new ApplicationException(500, "system internal error");
+ ResponseEntity entity = appException.buildErrorResponse();
+ assertNotNull(entity);
+ assertEquals(entity.getStatusCodeValue(), 500);
+ }
+
+}
diff --git a/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java
new file mode 100644
index 0000000..6bb70ea
--- /dev/null
+++ b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java
@@ -0,0 +1,645 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.so.adapters.nssmf.service.impl;
+
+
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.StatusLine;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.conn.util.DomainType;
+import org.ehcache.config.ResourceType;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.stubbing.Answer;
+import org.onap.aai.domain.yang.ServiceInstance;
+import org.onap.so.adapters.nssmf.config.NssmfAdapterConfig;
+import org.onap.so.adapters.nssmf.consts.NssmfAdapterConsts;
+import org.onap.so.adapters.nssmf.entity.NssmfInfo;
+import org.onap.so.adapters.nssmf.entity.TokenResponse;
+import org.onap.so.adapters.nssmf.enums.ActionType;
+import org.onap.so.adapters.nssmf.enums.HttpMethod;
+import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
+import org.onap.so.adapters.nssmf.util.RestUtil;
+import org.onap.so.beans.nsmf.*;
+import org.onap.so.db.request.beans.ResourceOperationStatus;
+import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+import javax.persistence.Access;
+import javax.persistence.ManyToOne;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.*;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
+import static org.mockito.MockitoAnnotations.initMocks;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
+import static org.onap.so.beans.nsmf.NetworkType.*;
+import static org.onap.so.beans.nsmf.ResourceSharingLevel.NON_SHARED;
+
+@RunWith(SpringRunner.class)
+public class NssmfManagerServiceImplTest {
+
+ @Mock
+ private RestUtil restUtil;
+
+
+ private NssmfManagerServiceImpl nssiManagerService;
+
+ @Mock
+ private HttpResponse tokenResponse;
+
+ @Mock
+ private HttpEntity tokenEntity;
+
+ @Mock
+ private HttpResponse commonResponse;
+
+ @Mock
+ private HttpEntity commonEntity;
+
+ @Mock
+ private StatusLine statusLine;
+
+ @Mock
+ private HttpClient httpClient;
+
+ private InputStream postStream;
+
+ private InputStream tokenStream;
+
+ @Mock
+ private NssmfAdapterConfig adapterConfig;
+
+ @Mock
+ private ResourceOperationStatusRepository repository;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+
+ nssiManagerService = new NssmfManagerServiceImpl();
+
+ Field restUtil = nssiManagerService.getClass().getDeclaredField("restUtil");
+ restUtil.setAccessible(true);
+ restUtil.set(nssiManagerService, this.restUtil);
+
+ Field adapterConfig = nssiManagerService.getClass().getDeclaredField("nssmfAdapterConfig");
+ adapterConfig.setAccessible(true);
+ adapterConfig.set(nssiManagerService, this.adapterConfig);
+
+ Field repository = nssiManagerService.getClass().getDeclaredField("repository");
+ repository.setAccessible(true);
+ repository.set(nssiManagerService, this.repository);
+ // nssiManagerService.setRestUtil(this.restUtil);
+
+ when(this.restUtil.send(any(String.class), any(HttpMethod.class), any(), any(Header.class)))
+ .thenCallRealMethod();
+ when(this.restUtil.createResponse(any(Integer.class), any(String.class))).thenCallRealMethod();
+ }
+
+ private void createCommonMock(int statusCode, NssmfInfo nssmf) throws Exception {
+ when(restUtil.getToken(any(NssmfInfo.class))).thenReturn("7512eb3feb5249eca5ddd742fedddd39");
+ when(restUtil.getHttpsClient()).thenReturn(httpClient);
+ when(restUtil.getServiceInstance(any())).thenReturn(new ServiceInstance());
+
+ when(statusLine.getStatusCode()).thenReturn(statusCode);
+ when(restUtil.getNssmfHost(any(EsrInfo.class))).thenReturn(nssmf);
+
+ when(tokenResponse.getEntity()).thenReturn(tokenEntity);
+ when(tokenResponse.getStatusLine()).thenReturn(statusLine);
+ when(tokenEntity.getContent()).thenReturn(tokenStream);
+
+ when(commonResponse.getEntity()).thenReturn(commonEntity);
+ when(commonResponse.getStatusLine()).thenReturn(statusLine);
+ when(commonEntity.getContent()).thenReturn(postStream);
+
+ when(adapterConfig.getInfraAuth()).thenReturn("SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==");
+
+ Answer<HttpResponse> answer = invocation -> {
+ Object[] arguments = invocation.getArguments();
+ if (arguments != null && arguments.length == 1 && arguments[0] != null) {
+
+ HttpRequestBase base = (HttpRequestBase) arguments[0];
+ if (base.getURI().toString().endsWith("/oauth/token")) {
+ return tokenResponse;
+ } else {
+ return commonResponse;
+ }
+ }
+ return commonResponse;
+ };
+
+ doAnswer(answer).when(httpClient).execute(any(HttpRequestBase.class));
+
+ }
+
+ @Test
+ public void allocateCnNssiTest() throws Exception {
+ allocateNssi(CORE);
+
+ }
+
+ @Test
+ public void allocateTnNssiTest() throws Exception {
+ allocateNssi(TRANSPORT);
+ }
+
+ @Test
+ public void allocateAnNssiTest() throws Exception {
+ allocateNssi(ACCESS);
+ }
+
+
+ public void allocateNssi(NetworkType domainType) throws Exception {
+ NssmfInfo nssmf = new NssmfInfo();
+ nssmf.setUserName("nssmf-user");
+ nssmf.setPassword("nssmf-pass");
+ nssmf.setPort("8080");
+ nssmf.setIpAddress("127.0.0.1");
+ nssmf.setUrl("http://127.0.0.1:8080");
+
+ NssiResponse nssiRes = new NssiResponse();
+ nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
+ nssiRes.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
+
+ TokenResponse token = new TokenResponse();
+ token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
+ token.setExpires(1800);
+
+ postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
+ tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
+
+ createCommonMock(200, nssmf);
+ NssmfAdapterNBIRequest nbiRequest = null;
+
+ switch (domainType) {
+ case CORE:
+ nbiRequest = createCnAllocateNssi();
+ break;
+ case TRANSPORT:
+ nbiRequest = createTnAllocateNssi();
+ break;
+ case ACCESS:
+ nbiRequest = createAnAllocateNssi();
+ break;
+ }
+
+ assertNotNull(nbiRequest);
+ System.out.println(marshal(nbiRequest));
+ ResponseEntity res = nssiManagerService.allocateNssi(nbiRequest);
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
+ if (!domainType.equals(ACCESS)) {
+ assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
+ assertEquals(allRes.getNssiId(), "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
+ }
+
+ System.out.println(res);
+ }
+
+
+
+ private NssmfAdapterNBIRequest createCnAllocateNssi() {
+ CnSliceProfile sP = new CnSliceProfile();
+ List<String> sns = new LinkedList<>();
+ sns.add("001-100001");
+ List<String> plmn = new LinkedList<>();
+ plmn.add("460-00");
+ plmn.add("460-01");
+ PerfReqEmbb embb = new PerfReqEmbb();
+ embb.setActivityFactor(50);
+ List<PerfReqEmbb> embbList = new LinkedList<>();
+ embbList.add(embb);
+ PerfReq perfReq = new PerfReq();
+ perfReq.setPerfReqEmbbList(embbList);
+ List<String> taList = new LinkedList<>();
+ taList.add("1");
+ taList.add("2");
+ taList.add("3");
+ sP.setSnssaiList(sns);
+ sP.setSliceProfileId("ab9af40f13f721b5f13539d87484098");
+ sP.setPLMNIdList(plmn);
+ sP.setPerfReq(perfReq);
+ sP.setMaxNumberOfUEs(200);
+ sP.setCoverageAreaTAList(taList);
+ sP.setLatency(6);
+ sP.setResourceSharingLevel(NON_SHARED);
+ NsiInfo nsiInfo = new NsiInfo();
+ nsiInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ nsiInfo.setNsiName("eMBB-001");
+ AllocateCnNssi cnNssi = new AllocateCnNssi();
+ cnNssi.setNssiId("NSST-C-001-HDBNJ-NSSMF-01-A-ZX");
+ cnNssi.setNssiName("eMBB-001");
+ cnNssi.setScriptName("CN1");
+ cnNssi.setSliceProfile(sP);
+ cnNssi.setNsiInfo(nsiInfo);
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE);
+ nbiRequest.setAllocateCnNssi(cnNssi);
+ return nbiRequest;
+ }
+
+ private NssmfAdapterNBIRequest createAnAllocateNssi() {
+
+ AnSliceProfile sP = new AnSliceProfile();
+ List<String> sns = new LinkedList<>();
+ sns.add("001-100001");
+ List<String> plmn = new LinkedList<>();
+ plmn.add("460-00");
+ plmn.add("460-01");
+ PerfReqEmbb embb = new PerfReqEmbb();
+ embb.setActivityFactor(50);
+ List<PerfReqEmbb> embbList = new LinkedList<>();
+ embbList.add(embb);
+ PerfReq perfReq = new PerfReq();
+ perfReq.setPerfReqEmbbList(embbList);
+ List<Integer> taList = new LinkedList<>();
+ taList.add(1);
+ taList.add(2);
+ taList.add(3);
+ sP.setSNSSAIList(sns);
+ sP.setSliceProfileId("ab9af40f13f721b5f13539d87484098");
+ sP.setPLMNIdList(plmn);
+ sP.setPerfReq(perfReq);
+ sP.setMaxNumberOfUEs(200);
+ sP.setCoverageAreaTAList(taList);
+ sP.setLatency(6);
+ sP.setResourceSharingLevel(NON_SHARED);
+ sP.setUeMobilityLevel(UeMobilityLevel.STATIONARY);
+ sP.setResourceSharingLevel(NON_SHARED);
+ NsiInfo nsiInfo = new NsiInfo();
+ nsiInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ nsiInfo.setNsiName("eMBB-001");
+ AllocateAnNssi anNssi = new AllocateAnNssi();
+ anNssi.setNssiId("NSST-C-001-HDBNJ-NSSMF-01-A-ZX");
+ anNssi.setNssiName("eMBB-001");
+ anNssi.setScriptName("CN1");
+ anNssi.setSliceProfile(sP);
+ anNssi.setNsiInfo(nsiInfo);
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(ACCESS);
+ nbiRequest.setAllocateAnNssi(anNssi);
+ return nbiRequest;
+ }
+
+
+ private NssmfAdapterNBIRequest createTnAllocateNssi() {
+ TnSliceProfile sP = new TnSliceProfile();
+ List<String> sns = new LinkedList<>();
+ sns.add("01-1EB5BA40");
+ List<String> plmn = new LinkedList<>();
+ plmn.add("460-00");
+ PerfReqEmbb embb = new PerfReqEmbb();
+ embb.setActivityFactor(50);
+ List<PerfReqEmbb> embbList = new LinkedList<>();
+ embbList.add(embb);
+
+ sP.setSNSSAIList(sns);
+ sP.setSliceProfileId("fec94836-87a0-41dc-a199-0ad9aa3890d1");
+ sP.setPLMNIdList(plmn);
+ sP.setLatency(10);
+ sP.setMaxBandwidth(1000);
+ sP.setJitter(10);
+
+ List<TransportSliceNetwork> networks = new LinkedList<>();
+ TransportSliceNetwork network = new TransportSliceNetwork();
+ List<ConnectionLink> connectionLinks = new LinkedList<>();
+ ConnectionLink connectionLink = new ConnectionLink();
+ connectionLink.setTransportEndpointA("a47c76e3-c010-4eaf-adbb-0ba264118cab");
+ connectionLink.setTransportEndpointB("c0c83e33-80d2-43da-b6cb-17b930420d74");
+ connectionLinks.add(connectionLink);
+ network.setConnectionLinks(connectionLinks);
+ networks.add(network);
+
+ NsiInfo nsiInfo = new NsiInfo();
+ nsiInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ nsiInfo.setNsiName("eMBB-001");
+ AllocateTnNssi tnNssi = new AllocateTnNssi();
+ tnNssi.setTransportSliceNetworks(networks);
+ tnNssi.setScriptName("TN");
+ tnNssi.setSliceProfile(sP);
+ tnNssi.setNsiInfo(nsiInfo);
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(TRANSPORT);
+ nbiRequest.setAllocateTnNssi(tnNssi);
+ return nbiRequest;
+ }
+
+ @Test
+ public void deAllocateCnNssi() throws Exception {
+ deAllocateNssi(CORE);
+ }
+
+ @Test
+ public void deAllocateAnNssi() throws Exception {
+ deAllocateNssi(ACCESS);
+ }
+
+ @Test
+ public void deAllocateTnNssi() throws Exception {
+ deAllocateNssi(TRANSPORT);
+ }
+
+ public void deAllocateNssi(NetworkType domainType) throws Exception {
+ DeAllocateNssi deAllocateNssi = new DeAllocateNssi();
+ deAllocateNssi.setTerminateNssiOption(0);
+ List<String> snssai = new LinkedList<>();
+ snssai.add("001-100001");
+ deAllocateNssi.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ deAllocateNssi.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
+ deAllocateNssi.setScriptName("CN1");
+ deAllocateNssi.setSnssaiList(snssai);
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(domainType);
+ nbiRequest.setDeAllocateNssi(deAllocateNssi);
+
+ NssmfInfo nssmf = new NssmfInfo();
+ nssmf.setUserName("nssmf-user");
+ nssmf.setPassword("nssmf-pass");
+ nssmf.setPort("8080");
+ nssmf.setIpAddress("127.0.0.1");
+
+ NssiResponse nssiRes = new NssiResponse();
+ nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
+
+ TokenResponse token = new TokenResponse();
+ token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
+ token.setExpires(1800);
+
+ postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
+ tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
+
+ createCommonMock(202, nssmf);
+ ResponseEntity res = nssiManagerService.deAllocateNssi(nbiRequest, "ab9af40f13f721b5f13539d87484098");
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
+ if (!domainType.equals(ACCESS)) {
+ assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
+ }
+ }
+
+ @Test
+ public void activateAnNssi() throws Exception {
+ activateNssi(ACCESS);
+ }
+
+
+ @Test
+ public void activateCnNssi() throws Exception {
+ activateNssi(CORE);
+ }
+
+
+ @Test
+ public void activateTnNssi() throws Exception {
+ activateNssi(TRANSPORT);
+ }
+
+
+ private void activateNssi(NetworkType domainType) throws Exception {
+ NssmfInfo nssmf = new NssmfInfo();
+ nssmf.setUserName("nssmf-user");
+ nssmf.setPassword("nssmf-pass");
+ nssmf.setPort("8080");
+ nssmf.setIpAddress("127.0.0.1");
+
+ NssiResponse nssiRes = new NssiResponse();
+ nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
+
+ TokenResponse token = new TokenResponse();
+ token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
+ token.setExpires(1800);
+
+ postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
+ tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
+
+ ActDeActNssi act = new ActDeActNssi();
+ act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(domainType);
+ nbiRequest.setActDeActNssi(act);
+
+ createCommonMock(200, nssmf);
+ ResponseEntity res = nssiManagerService.activateNssi(nbiRequest, "001-100001");
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
+ if (!domainType.equals(ACCESS)) {
+ assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
+ }
+ }
+
+ @Test
+ public void deActivateNssi() throws Exception {
+ NssmfInfo nssmf = new NssmfInfo();
+ nssmf.setUserName("nssmf-user");
+ nssmf.setPassword("nssmf-pass");
+ nssmf.setPort("8080");
+ nssmf.setIpAddress("127.0.0.1");
+
+ NssiResponse nssiRes = new NssiResponse();
+ nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
+
+ TokenResponse token = new TokenResponse();
+ token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
+ token.setExpires(1800);
+
+ postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
+ tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
+
+ ActDeActNssi act = new ActDeActNssi();
+ act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE);
+ nbiRequest.setActDeActNssi(act);
+
+ createCommonMock(200, nssmf);
+ ResponseEntity res = nssiManagerService.deActivateNssi(nbiRequest, "001-100001");
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
+ assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
+ }
+
+ @Test
+ public void testNssmfRequest() throws ApplicationException {
+ NssmfRequest nssmfRequest = new NssmfRequest();
+ String sst = marshal(nssmfRequest);
+ System.out.println(sst);
+ }
+
+ @Test
+ public void queryCnAllocateJobStatus() throws Exception {
+ queryJobStatus(CORE, ActionType.ALLOCATE.toString());
+ }
+
+ @Test
+ public void queryCnActivateJobStatus() throws Exception {
+ queryJobStatus(CORE, ActionType.ACTIVATE.toString());
+ }
+
+ @Test
+ public void queryCnDeActivateJobStatus() throws Exception {
+ queryJobStatus(CORE, ActionType.DEACTIVATE.toString());
+ }
+
+ @Test
+ public void queryAnJobStatus() throws Exception {
+ queryJobStatus(ACCESS, ActionType.ALLOCATE.toString());
+ }
+
+ public void queryJobStatus(NetworkType domainType, String action) throws Exception {
+ NssmfInfo nssmf = new NssmfInfo();
+ nssmf.setUserName("nssmf-user");
+ nssmf.setPassword("nssmf-pass");
+ nssmf.setPort("8080");
+ nssmf.setIpAddress("127.0.0.1");
+
+ JobStatusResponse jobStatusResponse = new JobStatusResponse();
+ ResponseDescriptor descriptor = new ResponseDescriptor();
+ descriptor.setResponseId("7512eb3feb5249eca5ddd742fedddd39");
+ descriptor.setProgress(100);
+ descriptor.setStatusDescription("Initiating VNF Instance");
+ descriptor.setStatus("FINISHED");
+ jobStatusResponse.setResponseDescriptor(descriptor);
+
+ TokenResponse token = new TokenResponse();
+ token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
+ token.setExpires(1800);
+
+ postStream = new ByteArrayInputStream(marshal(jobStatusResponse).getBytes(UTF_8));
+ tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
+
+ ResourceOperationStatus operationStatus = new ResourceOperationStatus();
+ operationStatus.setOperationId("4b45d919816ccaa2b762df5120f72067");
+ operationStatus.setResourceTemplateUUID("8ee5926d-720b-4bb2-86f9-d20e921c143b");
+ operationStatus.setServiceId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ operationStatus.setOperType(action);
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(domainType);
+ nbiRequest.setResponseId("7512eb3feb5249eca5ddd742fedddd39");
+ List<ResourceOperationStatus> optional = new ArrayList<>();
+ optional.add(operationStatus);
+
+ doAnswer(invocation -> optional).when(repository).findByServiceIdAndOperationId(any(), any());
+
+ createCommonMock(200, nssmf);
+
+ ResponseEntity res = nssiManagerService.queryJobStatus(nbiRequest, "4b45d919816ccaa2b762df5120f72067");
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ JobStatusResponse allRes = unMarshal(res.getBody().toString(), JobStatusResponse.class);
+ assertEquals(allRes.getResponseDescriptor().getProgress(), 100);
+ assertEquals(allRes.getResponseDescriptor().getStatus(), "FINISHED");
+ if (!domainType.equals(ACCESS)) {
+ assertEquals(allRes.getResponseDescriptor().getResponseId(), "7512eb3feb5249eca5ddd742fedddd39");
+ }
+
+ }
+
+ @Test
+ public void queryNSSISelectionCapability() throws Exception {
+
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE);
+ ResponseEntity res = nssiManagerService.queryNSSISelectionCapability(nbiRequest);
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ Map allRes = unMarshal(res.getBody().toString(), Map.class);
+ assertEquals(allRes.get("selection"), "NSMF");
+
+ System.out.println(res);
+
+ nbiRequest.getEsrInfo().setVendor(NssmfAdapterConsts.ONAP_INTERNAL_TAG);
+ res = nssiManagerService.queryNSSISelectionCapability(nbiRequest);
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ allRes = unMarshal(res.getBody().toString(), Map.class);
+ assertEquals(allRes.get("selection"), "NSSMF");
+
+ System.out.println(res);
+
+ nbiRequest.getEsrInfo().setNetworkType(NetworkType.ACCESS);
+ res = nssiManagerService.queryNSSISelectionCapability(nbiRequest);
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ allRes = unMarshal(res.getBody().toString(), Map.class);
+ assertEquals(allRes.get("selection"), "NSSMF");
+
+ System.out.println(res);
+ }
+
+ private NssmfAdapterNBIRequest createNbiRequest(NetworkType networkType) {
+ NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest();
+ EsrInfo esrInfo = new EsrInfo();
+ switch (networkType) {
+ case CORE:
+ esrInfo.setVendor("huawei");
+ esrInfo.setNetworkType(CORE);
+ break;
+ case TRANSPORT:
+ esrInfo.setVendor("ONAP_internal");
+ esrInfo.setNetworkType(TRANSPORT);
+ break;
+ case ACCESS:
+ esrInfo.setVendor("huawei");
+ esrInfo.setNetworkType(ACCESS);
+ break;
+ }
+ ServiceInfo serviceInfo = new ServiceInfo();
+ serviceInfo.setServiceUuid("8ee5926d-720b-4bb2-86f9-d20e921c143b");
+ serviceInfo.setServiceInvariantUuid("e75698d9-925a-4cdd-a6c0-edacbe6a0b51");
+ serviceInfo.setGlobalSubscriberId("5GCustomer");
+ serviceInfo.setServiceType("5G");
+ serviceInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ nbiRequest.setEsrInfo(esrInfo);
+ nbiRequest.setServiceInfo(serviceInfo);
+ return nbiRequest;
+ }
+
+ @Test
+ public void querySubnetCapability() {
+ NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE);
+
+ QuerySubnetCapability subnetCapabilityQuery = new QuerySubnetCapability();
+ List<String> subnetTypes = Arrays.asList("CN");
+ subnetCapabilityQuery.setSubnetTypes(subnetTypes);
+ nbiRequest.setSubnetCapabilityQuery(subnetCapabilityQuery);
+ ResponseEntity res = nssiManagerService.querySubnetCapability(nbiRequest);
+ assertNotNull(res);
+ assertNotNull(res.getBody());
+ }
+}
diff --git a/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/util/RestUtilTest.java b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/util/RestUtilTest.java
new file mode 100644
index 0000000..5d07c5e
--- /dev/null
+++ b/so-nssmf-adapter-application/src/test/java/org/onap/so/adapters/nssmf/util/RestUtilTest.java
@@ -0,0 +1,161 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.so.adapters.nssmf.util;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.StatusLine;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.hibernate.jdbc.Expectations;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+import org.mockito.stubbing.Answer;
+import org.onap.aai.domain.yang.ServiceInstance;
+import org.onap.so.adapters.nssmf.entity.NssmfInfo;
+import org.onap.so.adapters.nssmf.entity.RestResponse;
+import org.onap.so.adapters.nssmf.enums.HttpMethod;
+import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
+import org.onap.so.adapters.nssmf.extclients.aai.AaiServiceProvider;
+import org.onap.so.beans.nsmf.EsrInfo;
+import org.onap.so.beans.nsmf.ServiceInfo;
+import org.springframework.test.context.junit4.SpringRunner;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.Optional;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.*;
+import static org.mockito.MockitoAnnotations.initMocks;
+import static org.onap.so.beans.nsmf.NetworkType.CORE;
+
+@RunWith(SpringRunner.class)
+public class RestUtilTest {
+
+
+ @Mock
+ public HttpClient httpClient;
+ @Mock
+ private HttpResponse tokenResponse;
+
+ @Mock
+ private HttpEntity tokenEntity;
+
+ private InputStream tokenStream;
+
+ @Mock
+ private StatusLine statusLine;
+
+ @Mock
+ private AaiServiceProvider aaiSvcProv;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ // Field nssmfManagerService = controller.getClass().getDeclaredField("nssmfManagerService");
+ // nssmfManagerService.setAccessible(true);
+ // nssmfManagerService.set(controller, this.nssmfManagerService);
+ }
+
+ private void commonMock() throws IOException, ApplicationException {
+
+ when(tokenResponse.getEntity()).thenReturn(tokenEntity);
+ when(tokenResponse.getStatusLine()).thenReturn(statusLine);
+
+ when(tokenEntity.getContent()).thenReturn(tokenStream);
+
+ when(httpClient.execute(any())).thenReturn(tokenResponse);
+
+ // Mockito.doReturn(httpClient).when(restUtil).getHttpsClient();
+ }
+
+ @Test
+ public void sendTest() throws Exception {
+ String url = "http://127.0.0.1:8080";
+ HttpMethod method = HttpMethod.PUT;
+ String content = "body content";
+ commonMock();
+
+ RestUtil restUtil = new RestUtil();
+ RestUtil util = Mockito.spy(restUtil);
+ doReturn(httpClient).when(util).getHttpsClient();
+
+ RestResponse restResponse = util.send(url, method, content, null);
+ assertNotNull(restResponse);
+ }
+
+ @Test
+ public void serviceInstanceOperationTest() throws NoSuchFieldException, IllegalAccessException {
+
+ RestUtil restUtil = new RestUtil();
+
+ Field aaiSvcProv = restUtil.getClass().getDeclaredField("aaiSvcProv");
+ aaiSvcProv.setAccessible(true);
+ aaiSvcProv.set(restUtil, this.aaiSvcProv);
+
+ ServiceInstance instance = new ServiceInstance();
+ ServiceInfo info = getServiceInfo();
+ restUtil.createServiceInstance(instance, info);
+ restUtil.getServiceInstance(info);
+ restUtil.deleteServiceInstance(info);
+ }
+
+ @Test
+ public void getNssmfHostTest() throws NoSuchFieldException, IllegalAccessException {
+ RestUtil restUtil = new RestUtil();
+
+ Field aaiSvcProv = restUtil.getClass().getDeclaredField("aaiSvcProv");
+ aaiSvcProv.setAccessible(true);
+ aaiSvcProv.set(restUtil, this.aaiSvcProv);
+ try {
+ restUtil.getNssmfHost(getEsrInfo());
+ } catch (ApplicationException ex) {
+ System.out.println(ex.getErrorMsg());
+ }
+ }
+
+
+ private EsrInfo getEsrInfo() {
+ EsrInfo esrInfo = new EsrInfo();
+ esrInfo.setVendor("huawei");
+ esrInfo.setNetworkType(CORE);
+ return esrInfo;
+ }
+
+ private ServiceInfo getServiceInfo() {
+ ServiceInfo serviceInfo = new ServiceInfo();
+ serviceInfo.setServiceUuid("8ee5926d-720b-4bb2-86f9-d20e921c143b");
+ serviceInfo.setServiceInvariantUuid("e75698d9-925a-4cdd-a6c0-edacbe6a0b51");
+ serviceInfo.setGlobalSubscriberId("5GCustomer");
+ serviceInfo.setServiceType("5G");
+ serviceInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+ return serviceInfo;
+ }
+
+}