From: Henrik Andersson Date: Wed, 11 Mar 2020 12:05:01 +0000 (+0000) Subject: Merge "REST error codes" X-Git-Tag: 2.0.0~129 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=889b38fd05bc9143647827742e3a8e0f10783bc8;hp=6a8a0d5350a77b6d1e4a8f95c0fe8fbfeef77339;p=nonrtric.git Merge "REST error codes" --- diff --git a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/DashboardUserManagerTest.java b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/DashboardUserManagerTest.java new file mode 100644 index 00000000..466e5791 --- /dev/null +++ b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/DashboardUserManagerTest.java @@ -0,0 +1,83 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2019 AT&T Intellectual Property + * %% + * 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.oransc.ric.portal.dashboard; + +import java.lang.invoke.MethodHandles; +import java.util.HashSet; +import java.util.Set; + +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.onap.portalsdk.core.onboarding.exception.PortalAPIException; +import org.onap.portalsdk.core.restful.domain.EcompRole; +import org.onap.portalsdk.core.restful.domain.EcompUser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.test.context.ActiveProfiles; + +@ActiveProfiles("test") +public class DashboardUserManagerTest { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static EcompUser createEcompUser(String loginId) { + EcompUser user = new EcompUser(); + user.setActive(true); + user.setLoginId(loginId); + user.setFirstName("First"); + user.setLastName("Last"); + EcompRole role = new EcompRole(); + role.setId(1L); + role.setName(DashboardConstants.ROLE_NAME_ADMIN); + Set roles = new HashSet<>(); + roles.add(role); + user.setRoles(roles); + return user; + } + + @Test + public void testUserMgr() throws Exception { + final String loginId = "demo"; + DashboardUserManager dum = new DashboardUserManager(true); + EcompUser user = createEcompUser(loginId); + dum.createUser(user); + logger.info("Created user {}", user); + try { + dum.createUser(user); + throw new Exception("Unexpected success"); + } catch (PortalAPIException ex) { + logger.info("caught expected exception: {}", ex.toString()); + } + Assert.assertFalse(dum.getUsers().isEmpty()); + EcompUser fetched = dum.getUser(loginId); + Assert.assertEquals(fetched, user); + fetched.setLastName("Lastier"); + dum.updateUser(loginId, fetched); + EcompUser missing = dum.getUser("foo"); + Assert.assertNull(missing); + EcompUser unk = createEcompUser("unknown"); + try { + dum.updateUser("unk", unk); + } catch (PortalAPIException ex) { + logger.info("caught expected exception: {}", ex.toString()); + } + } + +} diff --git a/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/portalapi/PortalAuthManagerTest.java b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/portalapi/PortalAuthManagerTest.java new file mode 100644 index 00000000..050fbf03 --- /dev/null +++ b/dashboard/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/portalapi/PortalAuthManagerTest.java @@ -0,0 +1,92 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2019 AT&T Intellectual Property + * %% + * 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.oransc.ric.portal.dashboard.portalapi; + +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.lang.reflect.InvocationTargetException; + +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; + +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.onap.portalsdk.core.onboarding.util.PortalApiConstants; +import org.oransc.ric.portal.dashboard.DashboardUserManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +@ActiveProfiles("test") +public class PortalAuthManagerTest { + + @Value("${portalapi.decryptor}") + private String decryptor; + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Test + public void testPortalStuff() throws ClassNotFoundException, InstantiationException, IllegalAccessException, + InvocationTargetException, NoSuchMethodException, IOException, ServletException { + + PortalAuthManager m = new PortalAuthManager("app", "user", "secret", decryptor, "cookie"); + Assert.assertNotNull(m.getAppCredentials()); + String s = null; + + MockHttpServletRequest request = new MockHttpServletRequest(); + s = m.validateEcompSso(request); + logger.debug("validateEcompSso answers {}", s); + Assert.assertNull(s); + + Cookie cookie = new Cookie(PortalApiConstants.EP_SERVICE, "bogus"); + request.setCookies(cookie); + s = m.validateEcompSso(request); + logger.debug("validateEcompSso answers {}", s); + Assert.assertNull(s); + + DashboardUserManager dum = new DashboardUserManager(true); + PortalAuthenticationFilter filter = new PortalAuthenticationFilter(false, m, dum); + filter.init(null); + filter.destroy(); + MockHttpServletResponse response = new MockHttpServletResponse(); + try { + filter.doFilter(request, response, null); + } catch (NullPointerException ex) { + logger.debug("chain is null"); + } + + filter = new PortalAuthenticationFilter(true, m, dum); + try { + filter.doFilter(request, response, null); + } catch (NullPointerException ex) { + logger.debug("chain is null"); + } + } + +} diff --git a/near-rt-ric-simulator/ric-plt/a1/main.py b/near-rt-ric-simulator/ric-plt/a1/main.py index 48b7f2ea..a715f59f 100644 --- a/near-rt-ric-simulator/ric-plt/a1/main.py +++ b/near-rt-ric-simulator/ric-plt/a1/main.py @@ -88,6 +88,18 @@ def set_status_with_reason(policyId, enforceStatus, enforceReason): policy_status[policyId] = ps return("Status updated for policy: " + policyId, 200) +#Metrics function + +@app.route('/counter/', methods=['GET']) +def getCounter(countername): + if (countername == "num_instances"): + return str(len(policy_instances)),200 + elif (countername == "num_types"): + return str(len(policy_types)),200 + else: + return "Counter name: "+countername+" not found.",404 + + port_number = 8085 if len(sys.argv) >= 2: if isinstance(sys.argv[1], int): diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java index 4a61479a..636a69f6 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java @@ -71,14 +71,14 @@ public class A1ClientFactory { return Mono.just(createOscA1Client(ric)); } else if (version == A1ProtocolType.SDNC_OSC) { return Mono.just(createSdncOscA1Client(ric)); - } else { // A1ProtocolType.SDNR_ONAP - return Mono.just(createSdnrOnapA1Client(ric)); + } else { // A1ProtocolType.SDNC_ONAP + return Mono.just(createSdncOnapA1Client(ric)); } } private Mono getProtocolVersion(Ric ric) { if (ric.getProtocolVersion() == A1ProtocolType.UNKNOWN) { - return fetchVersion(createSdnrOnapA1Client(ric)) // + return fetchVersion(createSdncOnapA1Client(ric)) // .onErrorResume(notUsed -> fetchVersion(createSdncOscA1Client(ric))) // .onErrorResume(notUsed -> fetchVersion(createOscA1Client(ric))) // .onErrorResume(notUsed -> fetchVersion(createStdA1ClientImpl(ric))) // @@ -103,7 +103,7 @@ public class A1ClientFactory { appConfig.getA1ControllerUsername(), appConfig.getA1ControllerPassword()); } - protected A1Client createSdnrOnapA1Client(Ric ric) { + protected A1Client createSdncOnapA1Client(Ric ric) { return new SdncOnapA1Client(ric.getConfig(), appConfig.getA1ControllerBaseUrl(), appConfig.getA1ControllerUsername(), appConfig.getA1ControllerPassword()); } diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java index b9d7f352..0568c360 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java @@ -45,7 +45,7 @@ public class SdncOnapA1Client implements A1Client { public SdncOnapA1Client(RicConfig ricConfig, String baseUrl, String username, String password) { this(ricConfig, username, password, new AsyncRestClient(baseUrl + "/restconf/operations")); if (logger.isDebugEnabled()) { - logger.debug("SdnrOnapA1Client for ric: {}, a1ControllerBaseUrl: {}", ricConfig.name(), baseUrl); + logger.debug("SdncOnapA1Client for ric: {}, a1ControllerBaseUrl: {}", ricConfig.name(), baseUrl); } } diff --git a/policy-agent/src/test/java/org/oransc/policyagent/clients/A1ClientFactoryTest.java b/policy-agent/src/test/java/org/oransc/policyagent/clients/A1ClientFactoryTest.java index 23cb6710..6122c191 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/clients/A1ClientFactoryTest.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/clients/A1ClientFactoryTest.java @@ -66,7 +66,7 @@ public class A1ClientFactoryTest { A1Client sdncOscA1ClientMock; @Mock - A1Client sdnrOnapA1ClientMock; + A1Client sdncOnapA1ClientMock; private ImmutableRicConfig ricConfig = ImmutableRicConfig.builder().name(RIC_NAME).baseUrl("baseUrl").managedElementIds(new Vector<>()).build(); @@ -81,7 +81,7 @@ public class A1ClientFactoryTest { @Test public void createStd_ok() { - whenGetProtocolVersionSdnrOnapA1ClientThrowException(); + whenGetProtocolVersionSdncOnapA1ClientThrowException(); whenGetProtocolVersionSdncOscA1ClientThrowException(); whenGetProtocolVersionOscA1ClientThrowException(); whenGetProtocolVersionStdA1ClientReturnCorrectProtocol(); @@ -96,7 +96,7 @@ public class A1ClientFactoryTest { @Test public void createOsc_ok() { - whenGetProtocolVersionSdnrOnapA1ClientThrowException(); + whenGetProtocolVersionSdncOnapA1ClientThrowException(); whenGetProtocolVersionSdncOscA1ClientThrowException(); whenGetProtocolVersionOscA1ClientReturnCorrectProtocol(); @@ -110,7 +110,7 @@ public class A1ClientFactoryTest { @Test public void createSdncOsc_ok() { - whenGetProtocolVersionSdnrOnapA1ClientThrowException(); + whenGetProtocolVersionSdncOnapA1ClientThrowException(); whenGetProtocolVersionSdncOscA1ClientReturnCorrectProtocol(); StepVerifier.create(factoryUnderTest.createA1Client(ric)) // @@ -122,12 +122,12 @@ public class A1ClientFactoryTest { } @Test - public void createSdnrOnap_ok() { - whenGetProtocolVersionSdnrOnapA1ClientReturnCorrectProtocol(); + public void createSdncOnap_ok() { + whenGetProtocolVersionSdncOnapA1ClientReturnCorrectProtocol(); StepVerifier.create(factoryUnderTest.createA1Client(ric)) // .expectSubscription() // - .expectNext(sdnrOnapA1ClientMock) // + .expectNext(sdncOnapA1ClientMock) // .verifyComplete(); assertEquals(A1ProtocolType.SDNC_ONAP, ric.getProtocolVersion(), "Not correct protocol"); @@ -135,7 +135,7 @@ public class A1ClientFactoryTest { @Test public void createWithNoProtocol_error() { - whenGetProtocolVersionSdnrOnapA1ClientThrowException(); + whenGetProtocolVersionSdncOnapA1ClientThrowException(); whenGetProtocolVersionSdncOscA1ClientThrowException(); whenGetProtocolVersionOscA1ClientThrowException(); whenGetProtocolVersionStdA1ClientThrowException(); @@ -167,20 +167,20 @@ public class A1ClientFactoryTest { assertEquals(A1ProtocolType.STD_V1, ric.getProtocolVersion(), "Not correct protocol"); - verifyNoMoreInteractions(sdnrOnapA1ClientMock); + verifyNoMoreInteractions(sdncOnapA1ClientMock); verifyNoMoreInteractions(sdncOscA1ClientMock); verifyNoMoreInteractions(oscA1ClientMock); verifyNoMoreInteractions(stdA1ClientMock); } - private void whenGetProtocolVersionSdnrOnapA1ClientThrowException() { - doReturn(sdnrOnapA1ClientMock).when(factoryUnderTest).createSdnrOnapA1Client(ric); - when(sdnrOnapA1ClientMock.getProtocolVersion()).thenReturn(Mono.error(new Exception(EXCEPTION_MESSAGE))); + private void whenGetProtocolVersionSdncOnapA1ClientThrowException() { + doReturn(sdncOnapA1ClientMock).when(factoryUnderTest).createSdncOnapA1Client(ric); + when(sdncOnapA1ClientMock.getProtocolVersion()).thenReturn(Mono.error(new Exception(EXCEPTION_MESSAGE))); } - private void whenGetProtocolVersionSdnrOnapA1ClientReturnCorrectProtocol() { - doReturn(sdnrOnapA1ClientMock).when(factoryUnderTest).createSdnrOnapA1Client(any(Ric.class)); - when(sdnrOnapA1ClientMock.getProtocolVersion()).thenReturn(Mono.just(A1ProtocolType.SDNC_ONAP)); + private void whenGetProtocolVersionSdncOnapA1ClientReturnCorrectProtocol() { + doReturn(sdncOnapA1ClientMock).when(factoryUnderTest).createSdncOnapA1Client(any(Ric.class)); + when(sdncOnapA1ClientMock.getProtocolVersion()).thenReturn(Mono.just(A1ProtocolType.SDNC_ONAP)); } private void whenGetProtocolVersionSdncOscA1ClientThrowException() {