add getNewestModelVersionByInvariant to controller and service 28/94728/2
authorEylon Malin <eylon.malin@intl.att.com>
Sun, 1 Sep 2019 13:24:41 +0000 (16:24 +0300)
committerEylon Malin <eylon.malin@intl.att.com>
Sun, 1 Sep 2019 13:59:37 +0000 (16:59 +0300)
Also add testGetActiveNetworkList UT
Issue-ID: VID-378
Signed-off-by: Eylon Malin <eylon.malin@intl.att.com>
Change-Id: I97c2ae029272aba915d5f9699bccff0eb9d49329
Signed-off-by: Eylon Malin <eylon.malin@intl.att.com>
vid-app-common/src/main/java/org/onap/vid/controller/AaiController2.java
vid-app-common/src/main/java/org/onap/vid/services/AaiService.java
vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java
vid-app-common/src/test/java/org/onap/vid/controller/AaiController2Test.java [new file with mode: 0644]
vid-app-common/src/test/java/org/onap/vid/services/AaiServiceImplTest.java

index d7d2f85..e0d211c 100644 (file)
@@ -24,6 +24,7 @@ import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.onap.vid.aai.AaiClientInterface;
 import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
+import org.onap.vid.aai.model.ModelVer;
 import org.onap.vid.aai.model.Permissions;
 import org.onap.vid.model.aaiTree.Network;
 import org.onap.vid.model.aaiTree.RelatedVnf;
@@ -116,4 +117,10 @@ public class AaiController2 extends VidRestrictedBaseController {
             .filter(network -> StringUtils.equalsIgnoreCase(network.getOrchStatus(), "active"))
             .collect(Collectors.toList());
     }
+
+    @RequestMapping(value = "/aai_get_newest_model_version_by_invariant/{invariantId}",
+        method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
+    public ModelVer getNewestModelVersionByInvariant(@PathVariable("invariantId") String invariantId) {
+        return aaiService.getNewestModelVersionByInvariantId(invariantId);
+    }
 }
index 31fbe65..bc26b5e 100644 (file)
@@ -32,6 +32,7 @@ import org.onap.vid.aai.model.AaiGetInstanceGroupsByCloudRegion;
 import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList;
 import org.onap.vid.aai.model.AaiGetPnfs.Pnf;
 import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
+import org.onap.vid.aai.model.ModelVer;
 import org.onap.vid.aai.model.PortDetailsTranslator;
 import org.onap.vid.asdc.beans.Service;
 import org.onap.vid.model.SubscriberList;
@@ -99,4 +100,6 @@ public interface AaiService {
     List<VpnBinding> getVpnListByVpnType(String vpnType);
 
     List<Network> getL3NetworksByCloudRegion(String cloudRegionId, String tenantId, String networkRole);
+
+    ModelVer getNewestModelVersionByInvariantId(String modelInvariantId);
 }
index b50dcc3..b6404fa 100644 (file)
@@ -702,4 +702,9 @@ public class AaiServiceImpl implements AaiService {
         return "{\"start\":\"/cloud-infrastructure/cloud-regions/cloud-region/" + cloudOwner + "/" + cloudRegionId + "\"," +
                 "\"query\":\"query/l3-networks-by-cloud-region?tenantId=" + tenantId + networkRolePart + "\"}";
     }
+
+    @Override
+    public ModelVer getNewestModelVersionByInvariantId(String modelInvariantId){
+        return aaiClient.getLatestVersionByInvariantId(modelInvariantId);
+    }
 }
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/AaiController2Test.java b/vid-app-common/src/test/java/org/onap/vid/controller/AaiController2Test.java
new file mode 100644 (file)
index 0000000..3a66a8e
--- /dev/null
@@ -0,0 +1,108 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. 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.vid.controller;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.vid.aai.AaiClientInterface;
+import org.onap.vid.aai.model.ModelVer;
+import org.onap.vid.model.aaiTree.Network;
+import org.onap.vid.roles.RoleProvider;
+import org.onap.vid.services.AaiService;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+public class AaiController2Test {
+
+    @InjectMocks
+    private AaiController2 aaiController;
+
+    @Mock
+    private AaiService aaiService;
+
+    @Mock
+    private RoleProvider roleProvider;
+
+    @Mock
+    private AaiClientInterface aaiClientInterface;
+
+    @BeforeClass
+    public void initMocks() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void testGetActiveNetworkList(){
+
+        Network expected1 = mockNetwork("name6", true, "Active");
+        Network expected2 = mockNetwork("name6", true, "Active");
+
+        List<Network> rawNetworks = new ArrayList<>();
+        rawNetworks.add(mockNetwork("", true, "Active"));
+        rawNetworks.add(mockNetwork(null, true, "Active"));
+        rawNetworks.add(mockNetwork("name", false, "Active"));
+        rawNetworks.add(mockNetwork("name2", true, "Created"));
+        rawNetworks.add(mockNetwork("name3", true, null));
+        rawNetworks.add(mockNetwork("name4", true, ""));
+        rawNetworks.add(expected1);
+        rawNetworks.add(expected2);
+
+        when(aaiService.getL3NetworksByCloudRegion(any(), any(), any())).thenReturn(rawNetworks);
+        List<Network> networks = aaiController.getActiveNetworkList("just", "fake", "params");
+        Assert.assertEquals(2, networks.size());
+        assertThat(networks, containsInAnyOrder(expected1, expected2));
+    }
+
+    private Network mockNetwork(String name, boolean isBoundToVpn, String orchStatus) {
+        Network network = mock(Network.class);
+        when(network.getInstanceName()).thenReturn(name);
+        when(network.isBoundToVpn()).thenReturn(isBoundToVpn);
+        when(network.getOrchStatus()).thenReturn(orchStatus);
+        return network;
+    }
+
+    @Test
+    public void testGetNewestModelVersionByInvariant() {
+
+        String modelInvariantId = "model-invariant-v2.0";
+        String modelVersion ="2.0";
+        ModelVer expectedModelVer = new ModelVer();
+        expectedModelVer.setModelVersion(modelVersion);
+
+        when(aaiService.getNewestModelVersionByInvariantId(modelInvariantId)).thenReturn(expectedModelVer);
+
+        ModelVer actualModelVer = aaiController.getNewestModelVersionByInvariant(modelInvariantId);
+
+        assertEquals (actualModelVer.getModelVersion(),modelVersion);
+
+    }
+}
index 20409d3..2eae186 100644 (file)
@@ -791,4 +791,12 @@ public class AaiServiceImplTest {
         subscriber.subscriberType = "type-1";
         return subscriber;
     }
+
+    @Test
+    public void whenGetNewestModelVersionByInvariantId_thenReturnSameValueAsAaiClient() {
+        String modelInvariantId = "123";
+        ModelVer modelVer = mock(ModelVer.class);
+        when(aaiClient.getLatestVersionByInvariantId(eq(modelInvariantId))).thenReturn(modelVer);
+        assertThat(aaiService.getNewestModelVersionByInvariantId(modelInvariantId)).isEqualTo(modelVer);
+    }
 }