From 02f06213855c9e7cf1d5c7f3eea1838b2093f46c Mon Sep 17 00:00:00 2001 From: zm330 Date: Thu, 4 Mar 2021 18:01:57 +0800 Subject: Add Unit test Issue-ID: SO-3555 Signed-off-by: zm330 Change-Id: I67c1d7cec957bdab6f9f41b118cba3e852d1ced3 --- .../so/adapters/nssmf/NssmfAdapterRestTest.java | 400 --------------------- .../controller/NssmfAdapterControllerTest.java | 132 +++++++ .../so/adapters/nssmf/entity/RestResponseTest.java | 59 +++ .../nssmf/exceptions/ApplicationExceptionTest.java | 40 +++ .../service/impl/NssmfManagerServiceImplTest.java | 271 ++++++++++++-- .../onap/so/adapters/nssmf/util/RestUtilTest.java | 161 +++++++++ 6 files changed, 629 insertions(+), 434 deletions(-) delete mode 100644 src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java create mode 100644 src/test/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterControllerTest.java create mode 100644 src/test/java/org/onap/so/adapters/nssmf/entity/RestResponseTest.java create mode 100644 src/test/java/org/onap/so/adapters/nssmf/exceptions/ApplicationExceptionTest.java create mode 100644 src/test/java/org/onap/so/adapters/nssmf/util/RestUtilTest.java (limited to 'src/test') diff --git a/src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java b/src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java deleted file mode 100644 index f78bfd2..0000000 --- a/src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java +++ /dev/null @@ -1,400 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2020 Huawei Technologies Co., Ltd. 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.so.adapters.nssmf; - -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.CORE; -import static org.onap.so.beans.nsmf.ResourceSharingLevel.NON_SHARED; -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.LinkedList; -import java.util.List; -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.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; -import org.onap.so.adapters.nssmf.entity.TokenResponse; -import org.onap.so.adapters.nssmf.enums.HttpMethod; -import org.onap.so.adapters.nssmf.rest.NssmfAdapterRest; -import org.onap.so.adapters.nssmf.entity.NssmfInfo; -import org.onap.so.adapters.nssmf.rest.NssmfManager; -import org.onap.so.adapters.nssmf.util.RestUtil; -import org.onap.so.beans.nsmf.ActDeActNssi; -import org.onap.so.beans.nsmf.AllocateCnNssi; -import org.onap.so.beans.nsmf.CnSliceProfile; -import org.onap.so.beans.nsmf.DeAllocateNssi; -import org.onap.so.beans.nsmf.EsrInfo; -import org.onap.so.beans.nsmf.JobStatusRequest; -import org.onap.so.beans.nsmf.NsiInfo; -import org.onap.so.beans.nsmf.NssiActDeActRequest; -import org.onap.so.beans.nsmf.NssiAllocateRequest; -import org.onap.so.beans.nsmf.NssiDeAllocateRequest; -import org.onap.so.beans.nsmf.NssiResponse; -import org.onap.so.beans.nsmf.PerfReq; -import org.onap.so.beans.nsmf.PerfReqEmbb; -import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository; -import org.skyscreamer.jsonassert.JSONAssert; -import org.springframework.http.ResponseEntity; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -public class NssmfAdapterRestTest { - - private final static String ALLOCATE = "{\n" + " \"esrInfo\" : {\n" + " \"vendor\" : \"huawei\",\n" - + " \"networkType\" : \"cn\"\n" + " },\n" + " \"allocateCnNssi\" : {\n" - + " \"nssiId\" : \"NSST-C-001-HDBNJ-NSSMF-01-A-ZX\",\n" + " \"nssiName\" : \"eMBB-001\",\n" - + " \"sliceProfile\" : {\n" + " \"snssaiList\" : [ \"001-100001\" ],\n" - + " \"maxNumberofPDUSession\" : 10,\n" - + " \"sliceProfileId\" : \"ab9af40f13f721b5f13539d87484098\",\n" - + " \"plmnIdList\" : [ \"460-00\", \"460-01\" ],\n" + " \"perfReq\" : {\n" - + " \"perfReqEmbbList\" : [ {\n" + " \"activityFactor\" : 50\n" + " } ]\n" - + " },\n" + " \"maxNumberofUEs\" : 200,\n" - + " \"coverageAreaTAList\" : [ \"1\", \"2\", \"3\" ],\n" + " \"latency\" : 6,\n" - + " \"resourceSharingLevel\" : \"non-shared\"\n" + " },\n" + " \"scriptName\" : \"CN1\",\n" - + " \"nsiInfo\" : {\n" + " \"nsiName\" : \"eMBB-001\",\n" - + " \"nsiId\" : \"NSI-M-001-HDBNJ-NSMF-01-A-ZX\"\n" + " }\n" + " }\n" + "}"; - - private NssmfManager nssmfMgr; - - @Mock - private ResourceOperationStatusRepository rscOperStatusRepo; - - @Mock - private RestUtil restUtil; - - @Mock - private NssmfAdapterRest nssmfRest; - - @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; - - @Before - public void setUp() { - initMocks(this); - nssmfMgr = new NssmfManager(); - nssmfMgr.setRestUtil(restUtil); - nssmfMgr.setRscOperStatusRepo(rscOperStatusRepo); - } - - private void createCommonMock(int statusCode, NssmfInfo nssmf) throws Exception { - when(this.restUtil.send(any(String.class), any(HttpMethod.class), any(String.class), any(Header.class))) - .thenCallRealMethod(); - when(this.restUtil.createResponse(any(Integer.class), any(String.class))).thenCallRealMethod(); - when(nssmfRest.getNssmfMgr()).thenReturn(nssmfMgr); - // when(nssmfRest.createAllocateNssi(any(NssiAllocateRequest.class))).thenCallRealMethod(); - // when(nssmfRest.deAllocateNssi(any(NssiDeAllocateRequest.class), any(String.class))).thenCallRealMethod(); - // when(nssmfRest.activateNssi(any(NssiActDeActRequest.class), any(String.class))).thenCallRealMethod(); - // when(nssmfRest.deactivateNssi(any(NssiActDeActRequest.class), any(String.class))).thenCallRealMethod(); - // - // when(nssmfRest.queryJobStatus(any(JobStatusRequest.class), any(String.class))).thenCallRealMethod(); - when(restUtil.sendRequest(any(String.class), any(HttpMethod.class), any(String.class), any(EsrInfo.class))) - .thenCallRealMethod(); - when(restUtil.getHttpsClient()).thenReturn(httpClient); - - when(statusLine.getStatusCode()).thenReturn(200); - 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); - - Answer answer = new Answer() { - - public HttpResponse answer(InvocationOnMock invocation) throws Throwable { - 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 testNssiAllocate() 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"); - // 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); - // // assertEquals(prettyPrint(createAllocateNssi()), ALLOCATE); - // ResponseEntity res = nssmfRest.createAllocateNssi(createAllocateNssi()); - // assertNotNull(res); - // assertNotNull(res.getBody()); - // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class); - // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); - // assertEquals(allRes.getNssiId(), "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"); - // } - // - // @Test - // public void testNssiDeAllocate() 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)); - // - // createCommonMock(200, nssmf); - // ResponseEntity res = nssmfRest.deAllocateNssi(deAllocateNssi(), "ab9af40f13f721b5f13539d87484098"); - // assertNotNull(res); - // assertNotNull(res.getBody()); - // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class); - // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); - // } - // - // @Test - // public void testNssiActivate() 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)); - // - // createCommonMock(200, nssmf); - // ResponseEntity res = nssmfRest.activateNssi(activateNssi(), "001-100001"); - // assertNotNull(res); - // assertNotNull(res.getBody()); - // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class); - // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); - // } - // - // @Test - // public void testNssiDeActivate() 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)); - // - // createCommonMock(200, nssmf); - // ResponseEntity res = nssmfRest.deactivateNssi(deActivateNssi(), "001-100001"); - // assertNotNull(res); - // assertNotNull(res.getBody()); - // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class); - // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); - // } - // - @Test - public void testAllocateJsonSerDeSer() throws Exception { - JSONAssert.assertEquals(marshal(allocateNssi()), ALLOCATE, false); - NssiAllocateRequest all = unMarshal(ALLOCATE, NssiAllocateRequest.class); - assertNotNull(all); - assertNotNull(all.getAllocateCnNssi()); - assertNotNull(all.getAllocateCnNssi().getSliceProfile()); - assertEquals(all.getAllocateCnNssi().getSliceProfile().getResourceSharingLevel(), NON_SHARED); - assertNotNull(all.getAllocateCnNssi().getSliceProfile().getPerfReq()); - assertNotNull(all.getAllocateCnNssi().getSliceProfile().getPerfReq().getPerfReqEmbbList()); - PerfReqEmbb embb = - all.getAllocateCnNssi().getSliceProfile().getPerfReq().getPerfReqEmbbList().iterator().next(); - assertNotNull(embb); - assertEquals(embb.getActivityFactor(), 50); - } - - public NssiAllocateRequest allocateNssi() throws Exception { - CnSliceProfile sP = new CnSliceProfile(); - List sns = new LinkedList<>(); - sns.add("001-100001"); - List plmn = new LinkedList<>(); - plmn.add("460-00"); - plmn.add("460-01"); - PerfReqEmbb embb = new PerfReqEmbb(); - embb.setActivityFactor(50); - List embbList = new LinkedList<>(); - embbList.add(embb); - PerfReq perfReq = new PerfReq(); - perfReq.setPerfReqEmbbList(embbList); - List 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.setMaxNumberOfPDUSession(10); - 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); - EsrInfo esrInfo = new EsrInfo(); - esrInfo.setVendor("huawei"); - esrInfo.setNetworkType(CORE); - NssiAllocateRequest allocate = new NssiAllocateRequest(); - allocate.setAllocateCnNssi(cnNssi); - allocate.setEsrInfo(esrInfo); - return allocate; - } - - // - // public NssiDeAllocateRequest deAllocateNssi() throws Exception { - // DeAllocateNssi deAllocateNssi = new DeAllocateNssi(); - // deAllocateNssi.setTerminateNssiOption(0); - // List 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); - // EsrInfo esrInfo = new EsrInfo(); - // esrInfo.setVendor("huawei"); - // esrInfo.setNetworkType(CORE); - // NssiDeAllocateRequest deAllocate = new NssiDeAllocateRequest(); - // deAllocate.setDeAllocateNssi(deAllocateNssi); - // deAllocate.setEsrInfo(esrInfo); - // return deAllocate; - // } - // - // public NssiActDeActRequest activateNssi() throws Exception { - // EsrInfo esrInfo = new EsrInfo(); - // esrInfo.setVendor("huawei"); - // esrInfo.setNetworkType(CORE); - // ActDeActNssi act = new ActDeActNssi(); - // act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX"); - // act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"); - // NssiActDeActRequest actReq = new NssiActDeActRequest(); - // actReq.setActDeActNssi(act); - // actReq.setEsrInfo(esrInfo); - // return actReq; - // } - // - // public NssiActDeActRequest deActivateNssi() throws Exception { - // EsrInfo esrInfo = new EsrInfo(); - // esrInfo.setVendor("huawei"); - // esrInfo.setNetworkType(CORE); - // ActDeActNssi deAct = new ActDeActNssi(); - // deAct.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX"); - // deAct.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"); - // NssiActDeActRequest deActReq = new NssiActDeActRequest(); - // deActReq.setActDeActNssi(deAct); - // deActReq.setEsrInfo(esrInfo); - // return deActReq; - // } - // - public String queryJobStatusNssi() throws Exception { - EsrInfo esrInfo = new EsrInfo(); - esrInfo.setVendor("huawei"); - esrInfo.setNetworkType(CORE); - - JobStatusRequest jobStatus = new JobStatusRequest(); - jobStatus.setEsrInfo(esrInfo); - jobStatus.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX"); - jobStatus.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"); - return marshal(jobStatus); - } -} diff --git a/src/test/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterControllerTest.java b/src/test/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterControllerTest.java new file mode 100644 index 0000000..20f4c95 --- /dev/null +++ b/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/src/test/java/org/onap/so/adapters/nssmf/entity/RestResponseTest.java b/src/test/java/org/onap/so/adapters/nssmf/entity/RestResponseTest.java new file mode 100644 index 0000000..ab2c212 --- /dev/null +++ b/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 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/src/test/java/org/onap/so/adapters/nssmf/exceptions/ApplicationExceptionTest.java b/src/test/java/org/onap/so/adapters/nssmf/exceptions/ApplicationExceptionTest.java new file mode 100644 index 0000000..e4b1cc9 --- /dev/null +++ b/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/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java b/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java index d7b3b03..b64f581 100644 --- a/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java +++ b/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java @@ -27,22 +27,29 @@ 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.beans.nsmf.oof.SubnetCapability; 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; @@ -56,7 +63,7 @@ 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.CORE; +import static org.onap.so.beans.nsmf.NetworkType.*; import static org.onap.so.beans.nsmf.ResourceSharingLevel.NON_SHARED; @RunWith(SpringRunner.class) @@ -90,6 +97,9 @@ public class NssmfManagerServiceImplTest { private InputStream tokenStream; + @Mock + private NssmfAdapterConfig adapterConfig; + @Mock private ResourceOperationStatusRepository repository; @@ -103,6 +113,10 @@ public class NssmfManagerServiceImplTest { 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); @@ -116,6 +130,7 @@ public class NssmfManagerServiceImplTest { 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); @@ -128,6 +143,8 @@ public class NssmfManagerServiceImplTest { when(commonResponse.getStatusLine()).thenReturn(statusLine); when(commonEntity.getContent()).thenReturn(postStream); + when(adapterConfig.getInfraAuth()).thenReturn("SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA=="); + Answer answer = invocation -> { Object[] arguments = invocation.getArguments(); if (arguments != null && arguments.length == 1 && arguments[0] != null) { @@ -147,8 +164,23 @@ public class NssmfManagerServiceImplTest { } @Test - public void allocateNssi() throws Exception { + 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"); @@ -168,24 +200,37 @@ public class NssmfManagerServiceImplTest { 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; + } - - NssmfAdapterNBIRequest nbiRequest = createAllocateNssi(); 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); - assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); - assertEquals(allRes.getNssiId(), "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"); + 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 createAllocateNssi() { + private NssmfAdapterNBIRequest createCnAllocateNssi() { CnSliceProfile sP = new CnSliceProfile(); List sns = new LinkedList<>(); sns.add("001-100001"); @@ -220,13 +265,113 @@ public class NssmfManagerServiceImplTest { cnNssi.setSliceProfile(sP); cnNssi.setNsiInfo(nsiInfo); - NssmfAdapterNBIRequest nbiRequest = createNbiRequest(); + NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE); nbiRequest.setAllocateCnNssi(cnNssi); return nbiRequest; } + private NssmfAdapterNBIRequest createAnAllocateNssi() { + + AnSliceProfile sP = new AnSliceProfile(); + List sns = new LinkedList<>(); + sns.add("001-100001"); + List plmn = new LinkedList<>(); + plmn.add("460-00"); + plmn.add("460-01"); + PerfReqEmbb embb = new PerfReqEmbb(); + embb.setActivityFactor(50); + List embbList = new LinkedList<>(); + embbList.add(embb); + PerfReq perfReq = new PerfReq(); + perfReq.setPerfReqEmbbList(embbList); + List 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 sns = new LinkedList<>(); + sns.add("01-1EB5BA40"); + List plmn = new LinkedList<>(); + plmn.add("460-00"); + PerfReqEmbb embb = new PerfReqEmbb(); + embb.setActivityFactor(50); + List 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 networks = new LinkedList<>(); + TransportSliceNetwork network = new TransportSliceNetwork(); + List 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 deAllocateNssi() throws Exception { + 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 snssai = new LinkedList<>(); @@ -236,7 +381,7 @@ public class NssmfManagerServiceImplTest { deAllocateNssi.setScriptName("CN1"); deAllocateNssi.setSnssaiList(snssai); - NssmfAdapterNBIRequest nbiRequest = createNbiRequest(); + NssmfAdapterNBIRequest nbiRequest = createNbiRequest(domainType); nbiRequest.setDeAllocateNssi(deAllocateNssi); NssmfInfo nssmf = new NssmfInfo(); @@ -260,13 +405,30 @@ public class NssmfManagerServiceImplTest { assertNotNull(res); assertNotNull(res.getBody()); NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class); - assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); - assertNotNull(res); - assertNotNull(res.getBody()); + if (!domainType.equals(ACCESS)) { + assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); + } + } + + @Test + public void activateAnNssi() throws Exception { + activateNssi(ACCESS); } + @Test - public void activateNssi() throws Exception { + 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"); @@ -287,7 +449,7 @@ public class NssmfManagerServiceImplTest { act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX"); act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"); - NssmfAdapterNBIRequest nbiRequest = createNbiRequest(); + NssmfAdapterNBIRequest nbiRequest = createNbiRequest(domainType); nbiRequest.setActDeActNssi(act); createCommonMock(200, nssmf); @@ -295,7 +457,9 @@ public class NssmfManagerServiceImplTest { assertNotNull(res); assertNotNull(res.getBody()); NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class); - assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); + if (!domainType.equals(ACCESS)) { + assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067"); + } } @Test @@ -320,7 +484,7 @@ public class NssmfManagerServiceImplTest { act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX"); act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"); - NssmfAdapterNBIRequest nbiRequest = createNbiRequest(); + NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE); nbiRequest.setActDeActNssi(act); createCommonMock(200, nssmf); @@ -332,7 +496,33 @@ public class NssmfManagerServiceImplTest { } @Test - public void queryJobStatus() throws Exception { + 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"); @@ -342,9 +532,9 @@ public class NssmfManagerServiceImplTest { JobStatusResponse jobStatusResponse = new JobStatusResponse(); ResponseDescriptor descriptor = new ResponseDescriptor(); descriptor.setResponseId("7512eb3feb5249eca5ddd742fedddd39"); - descriptor.setProgress(20); + descriptor.setProgress(100); descriptor.setStatusDescription("Initiating VNF Instance"); - descriptor.setStatus("processing"); + descriptor.setStatus("FINISHED"); jobStatusResponse.setResponseDescriptor(descriptor); TokenResponse token = new TokenResponse(); @@ -358,8 +548,9 @@ public class NssmfManagerServiceImplTest { 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(); + NssmfAdapterNBIRequest nbiRequest = createNbiRequest(domainType); nbiRequest.setResponseId("7512eb3feb5249eca5ddd742fedddd39"); List optional = new ArrayList<>(); optional.add(operationStatus); @@ -372,18 +563,18 @@ public class NssmfManagerServiceImplTest { assertNotNull(res); assertNotNull(res.getBody()); JobStatusResponse allRes = unMarshal(res.getBody().toString(), JobStatusResponse.class); - assertEquals(allRes.getResponseDescriptor().getProgress(), 20); - assertEquals(allRes.getResponseDescriptor().getStatus(), "processing"); - assertEquals(allRes.getResponseDescriptor().getResponseId(), "7512eb3feb5249eca5ddd742fedddd39"); - - System.out.println(res); + 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(); + NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE); ResponseEntity res = nssiManagerService.queryNSSISelectionCapability(nbiRequest); assertNotNull(res); assertNotNull(res.getBody()); @@ -411,11 +602,23 @@ public class NssmfManagerServiceImplTest { System.out.println(res); } - private NssmfAdapterNBIRequest createNbiRequest() { + private NssmfAdapterNBIRequest createNbiRequest(NetworkType networkType) { NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest(); EsrInfo esrInfo = new EsrInfo(); - esrInfo.setVendor("huawei"); - esrInfo.setNetworkType(CORE); + 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"); @@ -429,13 +632,13 @@ public class NssmfManagerServiceImplTest { @Test public void querySubnetCapability() { - NssmfAdapterNBIRequest nbiRequest = createNbiRequest(); + NssmfAdapterNBIRequest nbiRequest = createNbiRequest(CORE); QuerySubnetCapability subnetCapabilityQuery = new QuerySubnetCapability(); - List subnetTypes = Arrays.asList("TN-FH", "TN-MH", "TN-BH"); + List subnetTypes = Arrays.asList("CN"); subnetCapabilityQuery.setSubnetTypes(subnetTypes); nbiRequest.setSubnetCapabilityQuery(subnetCapabilityQuery); - ResponseEntity res = nssiManagerService.queryNSSISelectionCapability(nbiRequest); + ResponseEntity res = nssiManagerService.querySubnetCapability(nbiRequest); assertNotNull(res); assertNotNull(res.getBody()); } diff --git a/src/test/java/org/onap/so/adapters/nssmf/util/RestUtilTest.java b/src/test/java/org/onap/so/adapters/nssmf/util/RestUtilTest.java new file mode 100644 index 0000000..ddc9371 --- /dev/null +++ b/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; + } + +} -- cgit 1.2.3-korg