diff options
10 files changed, 422 insertions, 494 deletions
diff --git a/deliveries/pom.xml b/deliveries/pom.xml index 1b89e1e5c..13db1c7ca 100755 --- a/deliveries/pom.xml +++ b/deliveries/pom.xml @@ -1,104 +1,110 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onap.vid</groupId>
- <artifactId>vid-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
- </parent>
-
- <packaging>pom</packaging>
- <artifactId>vid-deliveries</artifactId>
-
- <name>VID Deliveries</name>
- <description>ONAP VID Deliveries</description>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <docker.push.registry>${docker_registry}</docker.push.registry>
- <docker.verbose>true</docker.verbose>
- </properties>
-
- <profiles>
-
- <profile>
- <id>docker-proxy</id>
- <!-- activate profile if environment variable `http_proxy` is set -->
- <activation>
- <property>
- <name>env.http_proxy</name>
- </property>
- </activation>
- <properties>
- <docker.buildArg.http_proxy>${env.http_proxy}</docker.buildArg.http_proxy>
- </properties>
- </profile>
-
- </profiles>
-
- <build>
- <finalName>${project.artifactId}-${project.version}</finalName>
- <plugins>
- <plugin>
- <groupId>io.fabric8</groupId>
- <artifactId>docker-maven-plugin</artifactId>
- <version>0.28.0</version>
-
- <configuration>
- <verbose>true</verbose>
- <apiVersion>1.23</apiVersion>
- <images>
- <image>
- <name>onap/vid:${project.version}</name>
- <build>
- <cleanup>remove</cleanup>
- <dockerFileDir>docker-files</dockerFileDir>
- <assembly>
- <basedir>/</basedir>
- <user>vidadmin:vidadmin:vidadmin</user>
- <descriptor>assembly/assembly-for-plugin.xml</descriptor>
- </assembly>
- <tags>
- <tag>4.0-STAGING-latest</tag>
- <tag>latest</tag>
- </tags>
-
- </build>
- </image>
- </images>
- </configuration>
-
- <executions>
- <execution>
- <id>generate-image</id>
- <phase>package</phase>
- <goals>
- <goal>build</goal>
- </goals>
- </execution>
-
- <execution>
- <id>push-image</id>
- <phase>deploy</phase>
- <goals>
- <goal>build</goal>
- <goal>push</goal>
- </goals>
- </execution>
- </executions>
-
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <version>2.8</version>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.onap.vid</groupId> + <artifactId>vid-parent</artifactId> + <version>4.0.0-SNAPSHOT</version> + </parent> + + <packaging>pom</packaging> + <artifactId>vid-deliveries</artifactId> + + <name>VID Deliveries</name> + <description>ONAP VID Deliveries</description> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <docker.push.registry>${docker_registry}</docker.push.registry> + <docker.verbose>true</docker.verbose> + <docker.tag>${project.version}-${maven.build.timestamp}</docker.tag> + <docker.latest.tag>${project.version}-latest</docker.latest.tag> + + <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> + </properties> + + <profiles> + + <profile> + <id>docker-proxy</id> + <!-- activate profile if environment variable `http_proxy` is set --> + <activation> + <property> + <name>env.http_proxy</name> + </property> + </activation> + <properties> + <docker.buildArg.http_proxy>${env.http_proxy}</docker.buildArg.http_proxy> + </properties> + </profile> + + </profiles> + + <build> + <finalName>${project.artifactId}-${project.version}</finalName> + <plugins> + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>0.28.0</version> + + <configuration> + <verbose>true</verbose> + <apiVersion>1.23</apiVersion> + <images> + <image> + <name>onap/vid:${project.version}</name> + <build> + <cleanup>remove</cleanup> + <dockerFileDir>docker-files</dockerFileDir> + <assembly> + <basedir>/</basedir> + <user>vidadmin:vidadmin:vidadmin</user> + <descriptor>assembly/assembly-for-plugin.xml</descriptor> + </assembly> + <tags> + <tag>4.0-STAGING-latest</tag> + <tag>latest</tag> + <tag>${docker.tag}</tag> + <tag>${docker.latest.tag}</tag> + </tags> + + </build> + </image> + </images> + </configuration> + + <executions> + <execution> + <id>generate-image</id> + <phase>package</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + + <execution> + <id>push-image</id> + <phase>deploy</phase> + <goals> + <goal>build</goal> + <goal>push</goal> + </goals> + </execution> + </executions> + + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8</version> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> + +</project> diff --git a/epsdk-app-onap/pom.xml b/epsdk-app-onap/pom.xml index f2441b357..bf09f32dc 100755 --- a/epsdk-app-onap/pom.xml +++ b/epsdk-app-onap/pom.xml @@ -18,6 +18,7 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <epsdk.version>2.4.0</epsdk.version> + <jackson.version>2.9.7</jackson.version> <springframework.version>4.2.9.RELEASE</springframework.version> <hibernate.version>4.3.11.Final</hibernate.version> <!-- Skip assembling the zip; assemble via mvn -Dskipassembly=false .. --> @@ -205,9 +206,9 @@ </dependencies> </plugin> <plugin> - <groupId>org.sonarsource.scanner.maven</groupId> - <artifactId>sonar-maven-plugin</artifactId> - <version>3.3.0.603</version> + <groupId>org.sonarsource.scanner.maven</groupId> + <artifactId>sonar-maven-plugin</artifactId> + <version>3.3.0.603</version> </plugin> <plugin> <groupId>org.jacoco</groupId> @@ -265,24 +266,12 @@ <artifactId>epsdk-app-common</artifactId> <version>${epsdk.version}</version> <type>jar</type> - <exclusions> - <exclusion> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>org.onap.vid</groupId> <artifactId>vid-app-common</artifactId> <version>${project.version}</version> <type>war</type> - <exclusions> - <exclusion> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>org.onap.vid</groupId> @@ -296,12 +285,6 @@ <groupId>org.onap.portal.sdk</groupId> <artifactId>epsdk-core</artifactId> <version>${epsdk.version}</version> - <exclusions> - <exclusion> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>org.onap.portal.sdk</groupId> @@ -309,10 +292,6 @@ <version>${epsdk.version}</version> <exclusions> <exclusion> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - </exclusion> - <exclusion> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> </exclusion> @@ -322,12 +301,6 @@ <groupId>org.onap.portal.sdk</groupId> <artifactId>epsdk-workflow</artifactId> <version>${epsdk.version}</version> - <exclusions> - <exclusion> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>com.att.eelf</groupId> @@ -338,23 +311,34 @@ <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> - <version>2.6.3</version> + <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> - <version>2.8.6</version> + <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> - <version>2.6.7.1</version> - <exclusions> - <exclusion> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - </exclusion> - </exclusions> + <version>${jackson.version}</version> + </dependency> + <!-- jackson-dataformat-* are to override elasticsearch-2.2.0 deps hell --> + <!-- (elasticsearch is an epsdk-app-common-2.4.0 dep) --> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-smile</artifactId> + <version>${jackson.version}</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-yaml</artifactId> + <version>${jackson.version}</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-cbor</artifactId> + <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.mchange</groupId> diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/PombaClientImpl.java b/vid-app-common/src/main/java/org/onap/vid/aai/PombaClientImpl.java index 000628d8a..15fda829c 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/PombaClientImpl.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/PombaClientImpl.java @@ -1,13 +1,13 @@ + package org.onap.vid.aai; import com.fasterxml.jackson.databind.ObjectMapper; +import javax.servlet.ServletContext; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; -import org.onap.portalsdk.core.util.SystemProperties; import org.onap.vid.model.PombaInstance.PombaRequest; +import org.onap.vid.utils.SystemPropertiesWrapper; import org.springframework.beans.factory.annotation.Autowired; -import javax.servlet.ServletContext; - public class PombaClientImpl implements PombaClientInterface { protected String fromAppId = "VidAaiController"; @@ -19,13 +19,14 @@ public class PombaClientImpl implements PombaClientInterface { @Autowired PombaRestInterface pombaRestInterface; + @Autowired + SystemPropertiesWrapper systemPropertiesWrapper; @Override public void verify(PombaRequest request) { String methodName = "doAaiPost"; logger.debug(EELFLoggerDelegate.debugLogger, methodName + " start"); - String uri = SystemProperties.getProperty("pomba.server.url"); - + String uri = systemPropertiesWrapper.getProperty("pomba.server.url"); try { pombaRestInterface.RestPost(fromAppId, uri, new ObjectMapper().writeValueAsString(request)); diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java b/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java index 68d5b71d0..8fe7c1fa1 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java +++ b/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java @@ -70,8 +70,9 @@ public class WebConfig { } @Bean - public AaiService getAaiService() { - return new AaiServiceImpl(); + public AaiService getAaiService(AaiClientInterface aaiClient, AaiOverTLSClientInterface aaiOverTLSClient, + AaiResponseTranslator aaiResponseTranslator, AAITreeNodeBuilder aaiTreeNode, AAIServiceTree aaiServiceTree) { + return new AaiServiceImpl(aaiClient, aaiOverTLSClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree); } @Bean diff --git a/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java index fe4a66185..63da27828 100644 --- a/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java +++ b/vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java @@ -63,23 +63,29 @@ public class AaiServiceImpl implements AaiService { private static final String CLOUD_REGION_NODE_TYPE = "cloud-region"; private int indexOfSubscriberName = 6; - @Autowired private AaiClientInterface aaiClient; - - @Autowired private AaiOverTLSClientInterface aaiOverTLSClient; - - @Autowired private AaiResponseTranslator aaiResponseTranslator; - - @Autowired private AAITreeNodeBuilder aaiTreeNode; - - @Autowired private AAIServiceTree aaiServiceTree; private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(AaiServiceImpl.class); + @Autowired + public AaiServiceImpl( + AaiClientInterface aaiClient, + AaiOverTLSClientInterface aaiOverTLSClient, + AaiResponseTranslator aaiResponseTranslator, + AAITreeNodeBuilder aaiTreeNode, + AAIServiceTree aaiServiceTree) + { + this.aaiClient = aaiClient; + this.aaiOverTLSClient = aaiOverTLSClient; + this.aaiResponseTranslator = aaiResponseTranslator; + this.aaiTreeNode = aaiTreeNode; + this.aaiServiceTree = aaiServiceTree; + } + private List<Service> convertModelToService(Model model) { List<Service> services = new ArrayList<>(); String category = ""; @@ -332,13 +338,11 @@ public class AaiServiceImpl implements AaiService { AaiResponse<GetTenantsResponse[]> aaiGetTenantsResponse = aaiClient.getTenants(globalCustomerId, serviceType); GetTenantsResponse[] tenants = aaiGetTenantsResponse.getT(); if (tenants != null) { - for (int i = 0; i < tenants.length; i++) { - tenants[i].isPermitted = roleValidator.isTenantPermitted(globalCustomerId, serviceType, tenants[i].tenantName); + for (GetTenantsResponse tenant : tenants) { + tenant.isPermitted = roleValidator.isTenantPermitted(globalCustomerId, serviceType, tenant.tenantName); } } return aaiGetTenantsResponse; - - } @Override diff --git a/vid-app-common/src/main/webapp/WEB-INF/conf/features.properties b/vid-app-common/src/main/webapp/WEB-INF/conf/features.properties index 87b2d6014..36f607f62 100644 --- a/vid-app-common/src/main/webapp/WEB-INF/conf/features.properties +++ b/vid-app-common/src/main/webapp/WEB-INF/conf/features.properties @@ -12,34 +12,36 @@ FLAG_PNP_INSTANTIATION = true -FLAG_ASYNC_INSTANTIATION = true -FLAG_ASYNC_JOBS = true CREATE_INSTANCE_TEST = false -EMPTY_DRAWING_BOARD_TEST = false FLAG_ADD_MSO_TESTAPI_FIELD = true FLAG_UNASSIGN_SERVICE = true -FLAG_COLLECTION_RESOURCE_SUPPORT = true -FLAG_NETWORK_TO_ASYNC_INSTANTIATION = false FLAG_SERVICE_MODEL_CACHE = true FLAG_SHOW_ASSIGNMENTS = true FLAG_SHOW_VERIFY_SERVICE = false -FLAG_DUPLICATE_VNF = true -FLAG_DEFAULT_VNF = true -FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD = true FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS = true -FLAG_A_LA_CARTE_AUDIT_INFO=true -FLAG_5G_IN_NEW_INSTANTIATION_UI = true FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS = true -FLAG_ASYNC_ALACARTE_VNF = true -FLAG_ASYNC_ALACARTE_VFMODULE= true -FLAG_SHIFT_VFMODULE_PARAMS_TO_VNF = true -FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI=false FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST=true FLAG_1810_CR_LET_SELECTING_COLLECTOR_TYPE_UNCONDITIONALLY=true FLAG_1810_CR_SOFT_DELETE_ALACARTE_VF_MODULE = true FLAG_1810_AAI_LOCAL_CACHE = true -FLAG_1902_NEW_VIEW_EDIT=false FLAG_EXP_USE_DEFAULT_HOST_NAME_VERIFIER = false -FLAG_SUPPLEMENTARY_FILE = true -FLAG_1902_VNF_GROUPING = true +# Modern UI (Drawing-Board; View/Edit) +# - - - - - - - - - - - - - - - - - - +FLAG_COLLECTION_RESOURCE_SUPPORT = false +FLAG_ASYNC_INSTANTIATION = false +FLAG_ASYNC_JOBS = false +EMPTY_DRAWING_BOARD_TEST = false +FLAG_NETWORK_TO_ASYNC_INSTANTIATION = false +FLAG_DUPLICATE_VNF = false +FLAG_DEFAULT_VNF = false +FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD = false +FLAG_SHIFT_VFMODULE_PARAMS_TO_VNF = false +FLAG_A_LA_CARTE_AUDIT_INFO = false +FLAG_5G_IN_NEW_INSTANTIATION_UI = false +FLAG_ASYNC_ALACARTE_VNF = false +FLAG_ASYNC_ALACARTE_VFMODULE = false +FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI = false +FLAG_SUPPLEMENTARY_FILE = false +FLAG_1902_NEW_VIEW_EDIT=false +FLAG_1902_VNF_GROUPING = false diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/PombaClientImplTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/PombaClientImplTest.java new file mode 100644 index 000000000..b1c4139b7 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/aai/PombaClientImplTest.java @@ -0,0 +1,93 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright 2019 Nokia + * ================================================================================ + * 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.vid.aai; + +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.Lists; +import java.io.IOException; +import java.net.URL; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.onap.vid.model.PombaInstance.PombaRequest; +import org.onap.vid.model.PombaInstance.ServiceInstance; +import org.onap.vid.utils.SystemPropertiesWrapper; + +@RunWith(MockitoJUnitRunner.class) +public class PombaClientImplTest { + + @Mock + private SystemPropertiesWrapper systemPropertiesWrapper; + @Mock + private PombaRestInterface pombaRestInterface; + @InjectMocks + private PombaClientImpl pombaClient; + + @Test + public void should_doHttpPost_withGivenPombaRequest() throws IOException { + //Given + String expectedUrl = "http://localhost/dummyUrl"; + given(systemPropertiesWrapper.getProperty("pomba.server.url")).willReturn(expectedUrl); + String expectedPayload = readExpectedPombaJsonRequest(); + PombaRequest pombaRequest = createPombaRequest(); + + //When + pombaClient.verify(pombaRequest); + + //Then + then(pombaRestInterface).should().RestPost("VidAaiController", expectedUrl, expectedPayload); + } + + private String readExpectedPombaJsonRequest() throws IOException { + URL url = PombaClientImplTest.class.getClassLoader().getResource("pomba_request.json"); + PombaRequest expectedPombaRequest = new ObjectMapper().readValue(url, PombaRequest.class); + return new ObjectMapper().writeValueAsString(expectedPombaRequest); + } + + private PombaRequest createPombaRequest() { + ServiceInstance serviceInstance1 = createServiceInstance("serviceType1", "serviceInstanceId1", "customerId1", + "modelVersion1", "modelInvariantId1"); + ServiceInstance serviceInstance2 = createServiceInstance("serviceType2", "serviceInstanceId2", "customerId2", + "modelVersion2", "modelInvariantId2"); + + PombaRequest pombaRequest = new PombaRequest(); + pombaRequest.serviceInstanceList = Lists.newArrayList(serviceInstance1, serviceInstance2); + return pombaRequest; + } + + private ServiceInstance createServiceInstance(String serviceType, String serviceInstanceId, String customerId, + String modelVersionId, String modelInvariantId) { + ServiceInstance serviceInstance = new ServiceInstance(); + serviceInstance.serviceType = serviceType; + serviceInstance.serviceInstanceId = serviceInstanceId; + serviceInstance.customerId = customerId; + serviceInstance.modelInvariantId = modelInvariantId; + serviceInstance.modelVersionId = modelVersionId; + return serviceInstance; + } + +}
\ No newline at end of file diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/LocalWebConfig.java b/vid-app-common/src/test/java/org/onap/vid/controller/LocalWebConfig.java index e0ab34cd1..c66b74d1f 100644 --- a/vid-app-common/src/test/java/org/onap/vid/controller/LocalWebConfig.java +++ b/vid-app-common/src/test/java/org/onap/vid/controller/LocalWebConfig.java @@ -24,12 +24,15 @@ package org.onap.vid.controller; import com.fasterxml.jackson.databind.ObjectMapper; import org.onap.vid.aai.AaiClient; import org.onap.vid.aai.AaiClientInterface; +import org.onap.vid.aai.AaiOverTLSClientInterface; import org.onap.vid.aai.AaiResponseTranslator; import org.onap.vid.aai.model.PortDetailsTranslator; import org.onap.vid.aai.util.*; import org.onap.vid.asdc.AsdcClient; import org.onap.vid.asdc.parser.ToscaParserImpl2; import org.onap.vid.asdc.parser.VidNotionsBuilder; +import org.onap.vid.services.AAIServiceTree; +import org.onap.vid.services.AAITreeNodeBuilder; import org.onap.vid.services.AaiService; import org.onap.vid.services.AaiServiceImpl; import org.onap.vid.services.VidService; @@ -62,8 +65,9 @@ public class LocalWebConfig { } @Bean - public AaiService getAaiService() { - return new AaiServiceImpl(); + public AaiService getAaiService(AaiClientInterface aaiClient, AaiOverTLSClientInterface aaiOverTLSClient, + AaiResponseTranslator aaiResponseTranslator, AAITreeNodeBuilder aaiTreeNode, AAIServiceTree aaiServiceTree) { + return new AaiServiceImpl(aaiClient, aaiOverTLSClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree); } @Bean diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java index efa12f2c0..04f47d47e 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java @@ -21,353 +21,168 @@ package org.onap.vid.services; -import com.google.common.collect.ImmutableList; -import io.joshworks.restclient.http.HttpResponse; -import org.junit.Assert; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import javax.ws.rs.core.Response; import org.junit.Test; +import org.onap.vid.aai.AaiClientInterface; +import org.onap.vid.aai.AaiGetVnfResponse; +import org.onap.vid.aai.AaiOverTLSClientInterface; import org.onap.vid.aai.AaiResponse; -import org.onap.vid.aai.SubscriberFilteredResults; -import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList; -import org.onap.vid.aai.model.AaiGetPnfs.Pnf; +import org.onap.vid.aai.AaiResponseTranslator; import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse; -import org.onap.vid.model.SubscriberList; +import org.onap.vid.aai.model.VnfResult; import org.onap.vid.roles.RoleValidator; -import java.util.List; - public class AaiServiceImplTest { - private AaiServiceImpl createTestSubject() { - return new AaiServiceImpl(); - } + private AaiClientInterface aaiClient = mock(AaiClientInterface.class); + private AaiOverTLSClientInterface aaiSslClient = mock(AaiOverTLSClientInterface.class); + private AaiResponseTranslator aaiResponseTranslator = mock(AaiResponseTranslator.class); + private AAITreeNodeBuilder aaiTreeNode = mock(AAITreeNodeBuilder.class); + private AAIServiceTree aaiServiceTree = mock(AAIServiceTree.class); - @Test - public void testGetFullSubscriberList() throws Exception { - AaiServiceImpl testSubject; - RoleValidator roleValidator = null; - SubscriberFilteredResults result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getFullSubscriberList(roleValidator); - } catch ( - - Exception e) { - } - } + private AaiServiceImpl aaiService = new AaiServiceImpl( + aaiClient, aaiSslClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree + ); @Test - public void testGetOperationalEnvironments() throws Exception { - AaiServiceImpl testSubject; - String operationalEnvironmentType = ""; - String operationalEnvironmentStatus = ""; - AaiResponse<OperationalEnvironmentList> result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getOperationalEnvironments(operationalEnvironmentType, operationalEnvironmentStatus); - } catch ( - - Exception e) { - } - } + public void shouldRetrievePnf() { + // given + String globalCustomerId = "global_customer"; + String serviceType = "service_type"; + String modelVersionId = "model_version"; + String modelInvariantId = "model_invariant_id"; + String cloudRegion = "cloud_region"; + String equipVendor = "equip_vendor"; + String equipModel = "equip_model"; - @Test - public void testGetFullSubscriberList_1() throws Exception { - AaiServiceImpl testSubject; - HttpResponse<SubscriberList> result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getFullSubscriberList(); - } catch ( - - Exception e) { - } - } + AaiResponse response = mock(AaiResponse.class); + when(aaiClient.getPNFData( + globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel + )).thenReturn(response); - @Test - public void testGetSubscriberData() throws Exception { - AaiServiceImpl testSubject; - String subscriberId = ""; - RoleValidator roleValidator = null; - AaiResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getSubscriberData(subscriberId, roleValidator); - } catch ( - - Exception e) { - } - } + // when + AaiResponse actual = aaiService.getPNFData( + globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegion, equipVendor, equipModel + ); - @Test - public void testGetServiceInstanceSearchResults() throws Exception { - AaiServiceImpl testSubject; - String subscriberId = ""; - String instanceIdentifier = ""; - RoleValidator roleValidator = null; - List<String> owningEntities = null; - List<String> projects = null; - AaiResponse result; - - // test 1 - testSubject = createTestSubject(); - subscriberId = null; - instanceIdentifier = null; - result = testSubject.getServiceInstanceSearchResults(subscriberId, instanceIdentifier, roleValidator, - owningEntities, projects); - Assert.assertNotEquals(null, result); - - /*/ test 2 - testSubject = createTestSubject(); - subscriberId = ""; - instanceIdentifier = null; - result = testSubject.getServiceInstanceSearchResults(subscriberId, instanceIdentifier, roleValidator, - owningEntities, projects); - Assert.assertNotEquals(null, result); - - // test 3 - testSubject = createTestSubject(); - instanceIdentifier = null; - subscriberId = null; - result = testSubject.getServiceInstanceSearchResults(subscriberId, instanceIdentifier, roleValidator, - owningEntities, projects); - Assert.assertEquals(null, result); - - // test 4 - testSubject = createTestSubject(); - instanceIdentifier = ""; - subscriberId = null; - result = testSubject.getServiceInstanceSearchResults(subscriberId, instanceIdentifier, roleValidator, - owningEntities, projects); - Assert.assertEquals(null, result); - - // test 5 - testSubject = createTestSubject(); - owningEntities = null; - result = testSubject.getServiceInstanceSearchResults(subscriberId, instanceIdentifier, roleValidator, - owningEntities, projects); - Assert.assertEquals(null, result); - - // test 6 - testSubject = createTestSubject(); - projects = null; - result = testSubject.getServiceInstanceSearchResults(subscriberId, instanceIdentifier, roleValidator, - owningEntities, projects); - Assert.assertEquals(null, result);*/ + // then + assertThat(response).isEqualTo(actual); } @Test - public void testGetVersionByInvariantId() throws Exception { - AaiServiceImpl testSubject; - List<String> modelInvariantId = ImmutableList.of("some invariant id"); - - // default test - try { - testSubject = createTestSubject(); - testSubject.getVersionByInvariantId(modelInvariantId); - } catch ( - - Exception e) { - } - } + @SuppressWarnings("unchecked") + public void shouldRetrieveSpecificPnf() { + // given + String pnfId = "some_pnf_id"; - @Test - public void testGetSpecificPnf() throws Exception { - AaiServiceImpl testSubject; - String pnfId = ""; - AaiResponse<Pnf> result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getSpecificPnf(pnfId); - } catch ( - - Exception e) { - } - } + AaiResponse response = mock(AaiResponse.class); + when(aaiClient.getSpecificPnf(pnfId)).thenReturn(response); - @Test - public void testGetPNFData() throws Exception { - AaiServiceImpl testSubject; - String globalCustomerId = ""; - String serviceType = ""; - String modelVersionId = ""; - String modelInvariantId = ""; - String cloudRegion = ""; - String equipVendor = ""; - String equipModel = ""; - AaiResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getPNFData(globalCustomerId, serviceType, modelVersionId, modelInvariantId, - cloudRegion, equipVendor, equipModel); - } catch ( - - Exception e) { - } - } + // when + AaiResponse actual = aaiService.getSpecificPnf(pnfId); - @Test - public void testGetServices() throws Exception { - AaiServiceImpl testSubject; - RoleValidator roleValidator = null; - AaiResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getServices(roleValidator); - } catch ( - - Exception e) { - } + // then + assertThat(response).isEqualTo(actual); } @Test - public void testGetTenants() throws Exception { - AaiServiceImpl testSubject; - String globalCustomerId = ""; - String serviceType = ""; - RoleValidator roleValidator = null; - AaiResponse<GetTenantsResponse[]> result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getTenants(globalCustomerId, serviceType, roleValidator); - } catch ( - - Exception e) { - } - } + public void shouldRetrieveTenantsByInvariantId() { + // given + List<String> modelInvariantId = new ArrayList<>(); - @Test - public void testGetVNFData() throws Exception { - AaiServiceImpl testSubject; - String globalSubscriberId = ""; - String serviceType = ""; - String serviceInstanceId = ""; - AaiResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getVNFData(globalSubscriberId, serviceType, serviceInstanceId); - } catch ( - - Exception e) { - } - } + Response response = mock(Response.class); + when(aaiClient.getVersionByInvariantId(modelInvariantId)).thenReturn(response); - @Test - public void testGetVNFData_1() throws Exception { - AaiServiceImpl testSubject; - String globalSubscriberId = ""; - String serviceType = ""; - - // default test - try { - testSubject = createTestSubject(); - testSubject.getVNFData(globalSubscriberId, serviceType); - } catch ( - - Exception e) { - } - } + // when + Response actual = aaiService.getVersionByInvariantId(modelInvariantId); - @Test - public void testGetAaiZones() throws Exception { - AaiServiceImpl testSubject; - AaiResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getAaiZones(); - } catch ( - - Exception e) { - } + // then + assertThat(response).isEqualTo(actual); } @Test - public void testGetAicZoneForPnf() throws Exception { - AaiServiceImpl testSubject; - String globalCustomerId = ""; - String serviceType = ""; - String serviceId = ""; - AaiResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getAicZoneForPnf(globalCustomerId, serviceType, serviceId); - } catch ( - - Exception e) { - } - } + @SuppressWarnings("unchecked") + public void shouldRetrieveTenants() { + // given + String globalCustomerId = "global_customer"; + String serviceType = "service_type"; - @Test - public void testGetNodeTemplateInstances() throws Exception { - AaiServiceImpl testSubject; - String globalCustomerId = ""; - String serviceType = ""; - String modelVersionId = ""; - String modelInvariantId = ""; - String cloudRegion = ""; - AaiResponse result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getNodeTemplateInstances(globalCustomerId, serviceType, modelVersionId, - modelInvariantId, cloudRegion); - } catch ( - - Exception e) { - } + GetTenantsResponse permittedTenant = new GetTenantsResponse( + "cloud_region", "cloud_owner", "permitted_tenant", "tenant_id", false + ); + GetTenantsResponse unpermittedTenant = new GetTenantsResponse( + "cloud_region", "cloud_owner", "unpermitted_tenant", "tenant_id", false + ); + + AaiResponse<GetTenantsResponse[]> response = mock(AaiResponse.class); + when(response.getT()).thenReturn(new GetTenantsResponse[]{ permittedTenant, unpermittedTenant }); + when(aaiClient.getTenants(globalCustomerId, serviceType)).thenReturn(response); + + RoleValidator roleValidator = mock(RoleValidator.class); + when(roleValidator.isTenantPermitted(globalCustomerId, serviceType, "permitted_tenant")).thenReturn(true); + when(roleValidator.isTenantPermitted(globalCustomerId, serviceType, "unpermitted_tenant")).thenReturn(false); + + // when + AaiResponse actual = aaiService.getTenants(globalCustomerId, serviceType, roleValidator); + + // then + assertThat(response).isEqualTo(actual); + assertThat(permittedTenant.isPermitted).isTrue(); + assertThat(unpermittedTenant.isPermitted).isFalse(); } @Test - public void testGetServicesByDistributionStatus() throws Exception { - AaiServiceImpl testSubject; + public void shouldRetrieveVNFs() { + // given + String globalSubscriber = "global_subscriber"; + String serviceType = "service_type"; + String serviceInstanceId = "service_instance"; + + AaiResponse response = mock(AaiResponse.class); + when(aaiClient.getVNFData(globalSubscriber, serviceType, serviceInstanceId)).thenReturn(response); - // default test - try { - testSubject = createTestSubject(); - testSubject.getServicesByDistributionStatus(); - } catch ( + // when + AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType, serviceInstanceId); - Exception e) { - } + // then + assertThat(response).isEqualTo(actual); } @Test - public void testGetServiceInstanceAssociatedPnfs() throws Exception { - AaiServiceImpl testSubject; - String globalCustomerId = ""; - String serviceType = ""; - String serviceInstanceId = ""; - List<String> result; - - // default test - try { - testSubject = createTestSubject(); - result = testSubject.getServiceInstanceAssociatedPnfs(globalCustomerId, serviceType, serviceInstanceId); - } catch ( - - Exception e) { - } + @SuppressWarnings("unchecked") + public void shouldRetrieveAndFilterVNFsBySubscriberAndServiceType() { + // given + String globalSubscriber = "global_subscriber"; + String serviceType = "service_type"; + + VnfResult genericVnf = new VnfResult(); + genericVnf.nodeType = "generic-vnf"; + + VnfResult serviceInstance = new VnfResult(); + serviceInstance.nodeType = "service-instance"; + + VnfResult someVnf = new VnfResult(); + someVnf.nodeType = "some-vnf"; + + AaiResponse<AaiGetVnfResponse> response = mock(AaiResponse.class); + AaiGetVnfResponse vnfs = new AaiGetVnfResponse(); + vnfs.results = Arrays.asList(genericVnf, serviceInstance, someVnf); + when(response.getT()).thenReturn(vnfs); + + when(aaiClient.getVNFData(globalSubscriber, serviceType)).thenReturn(response); + + // when + AaiResponse actual = aaiService.getVNFData(globalSubscriber, serviceType); + + // then + assertThat(response).isEqualTo(actual); + assertThat(response.getT().results).containsOnly(genericVnf, serviceInstance); } }
\ No newline at end of file diff --git a/vid-app-common/src/test/resources/pomba_request.json b/vid-app-common/src/test/resources/pomba_request.json new file mode 100644 index 000000000..3d873bff8 --- /dev/null +++ b/vid-app-common/src/test/resources/pomba_request.json @@ -0,0 +1,18 @@ +{ + "serviceInstanceList": [ + { + "serviceInstanceId": "serviceInstanceId1", + "modelVersionId": "modelVersion1", + "modelInvariantId": "modelInvariantId1", + "customerId": "customerId1", + "serviceType": "serviceType1" + }, + { + "serviceInstanceId": "serviceInstanceId2", + "modelVersionId": "modelVersion2", + "modelInvariantId": "modelInvariantId2", + "customerId": "customerId2", + "serviceType": "serviceType2" + } + ] +}
\ No newline at end of file |