diff options
Diffstat (limited to 'src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java')
-rw-r--r-- | src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java | 209 |
1 files changed, 129 insertions, 80 deletions
diff --git a/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java b/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java index 2095169..46c4eb5 100644 --- a/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java +++ b/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java @@ -29,10 +29,13 @@ import static org.mockito.Mockito.when; import com.github.jknack.handlebars.internal.Files; import com.github.tomakehurst.wiremock.junit.WireMockRule; import java.io.File; +import java.io.IOException; import java.util.Collections; +import java.util.UUID; +import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.MultivaluedHashMap; +import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.junit.After; @@ -40,6 +43,9 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.onap.aai.restclient.client.RestClient; +import org.onap.pomba.contextbuilder.sdnc.Application; +import org.onap.pomba.contextbuilder.sdnc.model.ServiceEntity; import org.onap.pomba.contextbuilder.sdnc.service.rs.RestService; import org.onap.pomba.contextbuilder.sdnc.util.RestUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -50,30 +56,37 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; -import org.onap.aai.restclient.client.RestClient; -import org.onap.pomba.contextbuilder.sdnc.Application; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.UUID; -import org.onap.pomba.contextbuilder.sdnc.model.ServiceEntity; @RunWith(SpringJUnit4ClassRunner.class) @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) @WebAppConfiguration @SpringBootTest (classes = Application.class) -@TestPropertySource(properties = {"sdnc.host=localhost", "sdnc.port=30202", - "aai.httpProtocol=http", "aai.serviceName=localhost", "aai.servicePort=9808"}) +@TestPropertySource(properties = {"sdnc.serviceName=localhost", + "sdnc.servicePort=30202", + "aai.httpProtocol=http", + "aai.serviceName=localhost", + "aai.servicePort=9808"}) + public class SdncContextBuilderTest { - private String serviceInstanceId = "7d518257-49bd-40ac-8d17-017a726ec12a"; //match to the test data in junit/queryNodeData-1.json private String testRestHeaders = "testRestHeaders"; - private String customerId = "DemoCust_651800ed-2a3c-45f5-b920-85c1ed155fc2"; // match to queryNodeData-1.json and customerData-1.json - @Autowired + private String servicePath = "/service-subscriptions/service-subscription/vFW/service-instances/service-instance/"; + private String genericVnfPath = "/aai/v11/network/generic-vnfs/generic-vnf/"; + private String genericResourcePath = "/restconf/config/GENERIC-RESOURCE-API:services/service/"; + private String vnfPath = "/restconf/config/VNF-API:vnfs/vnf-list/"; + private String serviceInstanceIdVfw = "7d518257-49bd-40ac-8d17-017a726ec12a"; // customerData.json + private String serviceInstanceIdVcpe = "68352304-7bba-4609-8551-0d0b819376c3"; // queryNodeDataVcpe.json + private String customerIdVfw = "DemoCust_651800ed-2a3c-45f5-b920-85c1ed155fc2"; // customerData.json + private String customerIdVcpe = "SDN-ETHERNET-INTERNET"; + private String genericVnfId = "d94daff6-7d5b-4d2e-bc99-c9af0754b59d"; + private String moduleId = "2c3f8902-f278-4ee3-93cf-9d2364cbafca"; + + HttpServletRequest httpServletRequest = mock(HttpServletRequest.class); + + @Autowired RestService service; @Autowired private String sdncCtxBuilderBasicAuthorization; - //AAI related @Autowired private String aaiBasicAuthorization; @@ -108,7 +121,7 @@ public class SdncContextBuilderTest { null, testRestHeaders, sdncCtxBuilderBasicAuthorization); when(mockHttpHeaders.getRequestHeaders()).thenReturn(multivaluedMapImpl); - Response response = service.getContext(mockHttpHeaders, serviceInstanceId); + Response response = service.getContext(httpServletRequest, mockHttpHeaders, serviceInstanceIdVfw); assertTrue(response.getEntity().toString().contains("Missing header parameter: " + RestUtil.FROM_APP_ID)); // Test with no Authorization @@ -116,15 +129,15 @@ public class SdncContextBuilderTest { "test2", testRestHeaders, null); when(mockHttpHeaders.getRequestHeaders()).thenReturn(multivaluedMapImpl1); - response = service.getContext(mockHttpHeaders, serviceInstanceId); + response = service.getContext(httpServletRequest, mockHttpHeaders, serviceInstanceIdVfw); assertTrue(response.getEntity().toString().contains("Missing header parameter: " + RestUtil.AUTHORIZATION)); // Test with garbage Authorization final MultivaluedMap<String, String> multivaluedMapImpl2 = buildHeaders( - "test2", testRestHeaders, "garbage"); + "test3", testRestHeaders, "garbage"); when(mockHttpHeaders.getRequestHeaders()).thenReturn(multivaluedMapImpl2); - response = service.getContext(mockHttpHeaders, serviceInstanceId); + response = service.getContext(httpServletRequest, mockHttpHeaders, serviceInstanceIdVfw); assertTrue(response.getEntity().toString().contains("Failed Basic " + RestUtil.AUTHORIZATION)); } @@ -135,114 +148,150 @@ public class SdncContextBuilderTest { "testRestParameterServiceInstanceId", "test1", sdncCtxBuilderBasicAuthorization); when(mockHttpHeaders.getRequestHeaders()).thenReturn(multivaluedMapImpl); - Response response = service.getContext(mockHttpHeaders, null); - assertTrue(response.getEntity().toString().contains("Invalid request URL, missing parameter: serviceInstanceId")); + Response response = service.getContext(httpServletRequest, mockHttpHeaders, null); + assertTrue(response + .getEntity() + .toString() + .contains("Invalid request URL, missing parameter: serviceInstanceId")); } - /*@Test + @Test public void testVerifySdncContextBuilder() throws Exception { - String urlStr = "/restconf/config/GENERIC-RESOURCE-API:services/service/" + serviceInstanceId; - File file = new File(ClassLoader.getSystemResource("sdncResponse.json").getFile()); - String sdResonse = Files.read(file); - this.sdncRule.stubFor(get(urlStr).willReturn(okJson(sdResonse))); HttpHeaders mockHttpHeaders = mock( HttpHeaders.class); final MultivaluedMap<String, String> multivaluedMapImpl = buildHeaders( "testVerifyServiceDecomposition", "test1", sdncCtxBuilderBasicAuthorization); - when(mockHttpHeaders.getRequestHeaders()).thenReturn(multivaluedMapImpl); - String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; - addResponse(queryNodeUrl, "junit/queryNodeData-1.json", aaiEnricherRule); - String customerUrl = aaiPathToCustomerQuery + customerId; - addResponse(customerUrl, "junit/customerData-1.json", aaiEnricherRule); + // First try a vFW service instance + + String queryNodeVfwUrl = aaiPathToSearchNodeQuery + serviceInstanceIdVfw; + addResponse(queryNodeVfwUrl, "junit/queryNodeDataVfw.json", aaiEnricherRule); + + String customerVfwUrl = aaiPathToCustomerQuery + customerIdVfw; + addResponse(customerVfwUrl, "junit/customerData.json", aaiEnricherRule); + + String serviceInstanceUrl = aaiPathToCustomerQuery + + customerIdVfw + + servicePath + + serviceInstanceIdVfw; + addResponse(serviceInstanceUrl, "junit/serviceInstance.json", aaiEnricherRule); + + String vnfApiUrl = vnfPath + moduleId; + addResponse(vnfApiUrl, "junit/vnfApiResponse.json", sdncRule); + + String genericVnfUrl = genericVnfPath + genericVnfId; + addResponse(genericVnfUrl, "junit/genericVnf.json", aaiEnricherRule); + Response response = this.service.getContext(httpServletRequest, mockHttpHeaders, serviceInstanceIdVfw); + assertEquals(Status.OK.getStatusCode(), response.getStatus()); + + // Now try a vCPE service instance + + String queryNodeUrlVcpe = aaiPathToSearchNodeQuery + serviceInstanceIdVcpe; + addResponse(queryNodeUrlVcpe, "junit/queryNodeDataVcpe.json", aaiEnricherRule); - Response response = this.service.getContext(mockHttpHeaders, serviceInstanceId); + String customerVcpeUrl = aaiPathToCustomerQuery + customerIdVcpe; + addResponse(customerVcpeUrl, "junit/customerData.json", aaiEnricherRule); + + + String urlStr = genericResourcePath + serviceInstanceIdVcpe; + addResponse(urlStr, "junit/sdncGenericResponse.json", sdncRule); + + response = this.service.getContext(httpServletRequest, mockHttpHeaders, serviceInstanceIdVcpe); assertEquals(Status.OK.getStatusCode(), response.getStatus()); // Try again with no transcactionId final MultivaluedMap<String, String> multivaluedMapImpl1 = buildHeaders( "testVerifyServiceDecomposition", null, sdncCtxBuilderBasicAuthorization); - when(mockHttpHeaders.getRequestHeaders()).thenReturn(multivaluedMapImpl1); - response = this.service.getContext(mockHttpHeaders, serviceInstanceId); + response = this.service.getContext(httpServletRequest, mockHttpHeaders, serviceInstanceIdVcpe); assertEquals(Status.OK.getStatusCode(), response.getStatus()); - }*/ - - private static MultivaluedMap<String, String> buildHeaders( - String partnerName, String transactionId, String authorization) { - - MultivaluedMap<String, String> headers = new MultivaluedHashMap<>(); - headers.put(RestUtil.FROM_APP_ID, Collections.singletonList(partnerName)); - headers.put(RestUtil.TRANSACTION_ID, Collections.singletonList(transactionId)); - if (null != authorization) { - headers.put(RestUtil.AUTHORIZATION, Collections.singletonList(authorization)); - } - return headers; } + //AAI related @Test - public void testObtainResouceLinkBasedOnServiceInstanceFromAAI() throws Exception { + public void testObtainResouceLinkBasedOnServiceInstanceFromAai() throws Exception { String transactionId = UUID.randomUUID().toString(); - String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; - addResponse(queryNodeUrl, "junit/queryNodeData-1.json", aaiEnricherRule); - String customerUrl = aaiPathToCustomerQuery + customerId; - addResponse(customerUrl, "junit/customerData-1.json", aaiEnricherRule); - - ServiceEntity serviceEntity = RestUtil.getServiceEntity(aaiClient,aaiBaseUrl,aaiBasicAuthorization, aaiPathToSearchNodeQuery, aaiPathToCustomerQuery, serviceInstanceId, transactionId); - - assertEquals(serviceInstanceId, serviceEntity.getServiceInstanceId()); - assertEquals("vFW", serviceEntity.getServiceType()); // serviceType is hard-coded in queryNodeData-1.json - assertEquals(customerId, serviceEntity.getCustomerId()); // customerId is hard-coded in queryNodeData-1.json - assertEquals("DemoCust_651800ed-2a3c-45f5-b920-85c1ed155fc2", serviceEntity.getCustomerName()); // customerName is hard-coded in queryNodeData-1.json - assertEquals("CUST", serviceEntity.getCustomerType()); //customerType is hard-coded in customerData-1.json + String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceIdVfw; + addResponse(queryNodeUrl, "junit/queryNodeDataVfw.json", aaiEnricherRule); + String customerUrl = aaiPathToCustomerQuery + customerIdVfw; + addResponse(customerUrl, "junit/customerData.json", aaiEnricherRule); + + ServiceEntity serviceEntity = RestUtil.getServiceEntity(aaiClient, + aaiBaseUrl, + aaiBasicAuthorization, + aaiPathToSearchNodeQuery, + aaiPathToCustomerQuery, + serviceInstanceIdVfw, + transactionId); + + assertEquals(serviceInstanceIdVfw, serviceEntity.getServiceInstanceId()); + assertEquals("vFW", serviceEntity.getServiceType()); // customerData.json + assertEquals(customerIdVfw, serviceEntity.getCustomerId()); // queryNodeData-1.json + assertEquals("DemoCust_651800ed-2a3c-45f5-b920-85c1ed155fc2", + serviceEntity.getCustomerName()); // customerData.json + assertEquals("CUST", serviceEntity.getCustomerType()); // customerData.json } @Test - public void testObtainResouceLinkBasedOnServiceInstanceFromAAI_nullResourceLink() throws Exception { + public void testObtainResouceLinkBasedOnServiceInstanceFromAaiNullResourceLink() throws Exception { String transactionId = UUID.randomUUID().toString(); - String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; - addResponse(queryNodeUrl, "junit/queryNodeData-nullResourceLink.json", aaiEnricherRule); + String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceIdVfw; + addResponse(queryNodeUrl, "junit/queryNodeDataNullResourceLink.json", aaiEnricherRule); try { - RestUtil.getServiceEntity(aaiClient,aaiBaseUrl,aaiBasicAuthorization, aaiPathToSearchNodeQuery, aaiPathToCustomerQuery, serviceInstanceId, transactionId); + RestUtil.getServiceEntity(aaiClient, + aaiBaseUrl, + aaiBasicAuthorization, + aaiPathToSearchNodeQuery, + aaiPathToCustomerQuery, + serviceInstanceIdVfw, + transactionId); } catch (Exception e) { assertTrue(e.getMessage().contains("JSONObject[\"resource-link\"] not found")); } } @Test - public void testObtainResouceLinkBasedOnServiceInstanceFromAAI_nullCustomerType() throws Exception { + public void testObtainResouceLinkBasedOnServiceInstanceFromAaiNullCustomerType() throws Exception { String transactionId = UUID.randomUUID().toString(); - String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; - addResponse(queryNodeUrl, "junit/queryNodeData-1.json", aaiEnricherRule); - String customerUrl = aaiPathToCustomerQuery + customerId; - addResponse(customerUrl, "junit/customerData-CustomerIdNotFound.json", aaiEnricherRule); + String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceIdVfw; + addResponse(queryNodeUrl, "junit/queryNodeDataVfw.json", aaiEnricherRule); + String customerUrl = aaiPathToCustomerQuery + customerIdVfw; + addResponse(customerUrl, "junit/customerDataCustomerIdNotFound.json", aaiEnricherRule); try { - RestUtil.getServiceEntity(aaiClient,aaiBaseUrl,aaiBasicAuthorization, aaiPathToSearchNodeQuery, aaiPathToCustomerQuery, serviceInstanceId, transactionId); + RestUtil.getServiceEntity(aaiClient, + aaiBaseUrl, + aaiBasicAuthorization, + aaiPathToSearchNodeQuery, + aaiPathToCustomerQuery, + serviceInstanceIdVfw, + transactionId); } catch (Exception e) { assertTrue(e.getMessage().contains("Customer ID cannot be found from AAI")); } } - private void addResponse(String path, String classpathResource, WireMockRule thisMock) throws IOException { - String payload = readFully(ClassLoader.getSystemResourceAsStream(classpathResource)); - thisMock.stubFor(get(path).willReturn(okJson(payload))); + private void addResponse(String url, String responseFile, WireMockRule thisMock) throws IOException { + File file = new File(ClassLoader.getSystemResource(responseFile).getFile()); + String payload = Files.read(file); + thisMock.stubFor(get(url).willReturn(okJson(payload))); } - private String readFully(InputStream in) throws IOException { - char[] cbuf = new char[1024]; - StringBuilder content = new StringBuilder(); - try (InputStreamReader reader = new InputStreamReader(in, "UTF-8")) { - int count; - while ((count = reader.read(cbuf)) >= 0) { - content.append(cbuf, 0, count); - } + private static MultivaluedMap<String, String> buildHeaders( + String partnerName, String transactionId, String authorization) { + + MultivaluedMap<String, String> headers = new MultivaluedHashMap<>(); + headers.put(RestUtil.FROM_APP_ID, Collections.singletonList(partnerName)); + headers.put(RestUtil.TRANSACTION_ID, Collections.singletonList(transactionId)); + if (null != authorization) { + headers.put(RestUtil.AUTHORIZATION, Collections.singletonList(authorization)); } - return content.toString(); + return headers; } + } |