diff options
16 files changed, 430 insertions, 137 deletions
@@ -7,7 +7,7 @@ More information on the CCSDK A1 Policy Management Service can be found in the ' More information on the CCSDK A1-Adapter controller extension can be found in the 'a1-adapter' subdirectory. See also additional information at: - - https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP + - https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP - https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/index.html ## Prerequisits diff --git a/a1-policy-management/README.md b/a1-policy-management/README.md index 3b784a4f..746eb650 100644 --- a/a1-policy-management/README.md +++ b/a1-policy-management/README.md @@ -50,7 +50,7 @@ The backend server publishes live API documentation at the URL `http://your-host-name-here:8081/swagger-ui.html` More information about the ONAP CCSDK A1 Policy Management Service can be found at: - - https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP + - https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP - https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/index.html diff --git a/a1-policy-management/config/application.yaml b/a1-policy-management/config/application.yaml index 205c21a1..e1f3b5c9 100644 --- a/a1-policy-management/config/application.yaml +++ b/a1-policy-management/config/application.yaml @@ -61,6 +61,8 @@ app: lifecycle: timeout-per-shutdown-phase: "20s" logging: + # Reactive logging filter + reactive-entry-exit-filter-enabled: true # Configuration of logging file: name: /var/log/policy-agent/application.log diff --git a/a1-policy-management/pom.xml b/a1-policy-management/pom.xml index 3b018965..a10aecd6 100644 --- a/a1-policy-management/pom.xml +++ b/a1-policy-management/pom.xml @@ -488,7 +488,7 @@ <appDescription>The O-RAN Non-RT RIC Policy Management Service provides a REST API for managing O-RAN A1 Policies.</appDescription> <appName>ONAP CCSDK A1 Policy Management Service</appName> - <infoUrl>https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP</infoUrl> + <infoUrl>https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP</infoUrl> <licenseInfo>Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License, and Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved.</licenseInfo> <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl> @@ -511,7 +511,7 @@ <appDescription>The O-RAN Non-RT RIC Policy Management Service provides a REST API for managing O-RAN A1 Policies.</appDescription> <appName>ONAP CCSDK A1 Policy Management Service</appName> - <infoUrl>https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP</infoUrl> + <infoUrl>https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP</infoUrl> <licenseInfo>Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved.</licenseInfo> <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl> </configOptions> @@ -534,7 +534,7 @@ <appDescription>The O-RAN Non-RT RIC Policy Management Service provides a REST API for managing O-RAN A1 Policies.</appDescription> <appName>ONAP CCSDK A1 Policy Management Service</appName> - <infoUrl>https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP</infoUrl> + <infoUrl>https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP</infoUrl> <licenseInfo>Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved.</licenseInfo> <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl> </configOptions> diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ReactiveEntryExitFilterConfig.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ReactiveEntryExitFilterConfig.java new file mode 100644 index 00000000..5c82b3fb --- /dev/null +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ReactiveEntryExitFilterConfig.java @@ -0,0 +1,17 @@ +package org.onap.ccsdk.oran.a1policymanagementservice.configuration; + +import org.onap.ccsdk.oran.a1policymanagementservice.util.v3.ReactiveEntryExitFilter; +import org.onap.ccsdk.oran.a1policymanagementservice.util.v3.ReactiveEntryExitFilterCondition; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.server.WebFilter; + +@Configuration +public class ReactiveEntryExitFilterConfig { + @Bean + @Conditional(ReactiveEntryExitFilterCondition.class) + public WebFilter reactiveEntryExitFilter() { + return new ReactiveEntryExitFilter(); + } +} diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java new file mode 100644 index 00000000..01830ff4 --- /dev/null +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilter.java @@ -0,0 +1,89 @@ +/*- + * ========================LICENSE_START================================= + * ONAP : ccsdk oran + * ====================================================================== + * Copyright (C) 2024 OpenInfra Foundation Europe. 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.ccsdk.oran.a1policymanagementservice.util.v3; + +import org.reactivestreams.Publisher; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpRequestDecorator; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.http.server.reactive.ServerHttpResponseDecorator; +import org.springframework.util.MultiValueMap; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebFilter; +import org.springframework.web.server.WebFilterChain; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.nio.channels.Channels; +import java.nio.charset.StandardCharsets; + +public class ReactiveEntryExitFilter implements WebFilter { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + @Override + public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) { + ServerHttpRequest httpRequest = exchange.getRequest(); + ServerHttpResponse httpResponse = exchange.getResponse(); + MultiValueMap<String, String> queryParams = httpRequest.getQueryParams(); + logger.info("Request received with path: {}, and the Request Id: {}, with HTTP Method: {}", httpRequest.getPath(), + exchange.getRequest().getId(), exchange.getRequest().getMethod()); + if (!queryParams.isEmpty()) + logger.trace("For the request Id: {}, the Query parameters are: {}", exchange.getRequest().getId(), queryParams); + + ServerHttpRequestDecorator loggingServerHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) { + String requestBody; + @Override + public Flux<DataBuffer> getBody() { + return super.getBody().doOnNext(dataBuffer -> { + requestBody = dataBuffer.toString(StandardCharsets.UTF_8); // Read the bytes from the DataBuffer + if (!(requestBody.isEmpty() && requestBody.isBlank())) + logger.trace("For the request ID: {} the received request body: {}", exchange.getRequest().getId(), requestBody); + }); + } + }; + ServerHttpResponseDecorator loggingServerHttpResponseDecorator = new ServerHttpResponseDecorator(exchange.getResponse()) { + String responseBody; + @Override + public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) { + Flux<DataBuffer> buffer = Flux.from(body); + return super.writeWith(buffer.doOnNext(dataBuffer -> { +// try { + dataBuffer.toString(StandardCharsets.UTF_8); + logger.info("For the request ID: {} the Status code of the response: {}", exchange.getRequest().getId(), httpResponse.getStatusCode()); + logger.trace("For the request ID: {} the response is: {} ", exchange.getRequest().getId(), responseBody); +// } catch (Exception e) { +// logger.info("For the request ID: {} we got an Error during processing: {}", exchange.getRequest().getId(), e.getMessage()); +// logger.trace("For the request ID: {} the response body :: {}", exchange.getRequest().getId(), responseBody); +// } + })); + } + }; + return chain.filter(exchange.mutate().request(loggingServerHttpRequestDecorator).response(loggingServerHttpResponseDecorator).build()); + } + + +}
\ No newline at end of file diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilterCondition.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilterCondition.java new file mode 100644 index 00000000..70094c9d --- /dev/null +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/util/v3/ReactiveEntryExitFilterCondition.java @@ -0,0 +1,21 @@ +package org.onap.ccsdk.oran.a1policymanagementservice.util.v3; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Condition; +import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.type.AnnotatedTypeMetadata; + +import java.lang.invoke.MethodHandles; + +public class ReactiveEntryExitFilterCondition implements Condition { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Override + public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { + String reactiveFilterEnabled = context.getEnvironment().getProperty("logging.reactive-entry-exit-filter-enabled", "false"); + logger.info("Reactive Entry Exit filter is enabled: {}", reactiveFilterEnabled); + return Boolean.parseBoolean(reactiveFilterEnabled); + } +} diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java index 1f0ea5d0..d9fa63a9 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java @@ -23,7 +23,7 @@ import org.junit.jupiter.api.io.TempDir; import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig; import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics; import org.onap.ccsdk.oran.a1policymanagementservice.tasks.RefreshConfigTask; -import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelper; +import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelperTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; @@ -63,7 +63,7 @@ class ConfigurationControllerV3Test { private Rics rics; @Autowired - private TestHelper testHelper; + private TestHelperTest testHelperTest; @TempDir public static File temporaryFolder; @@ -74,7 +74,7 @@ class ConfigurationControllerV3Test { @BeforeEach void init() { - testHelper.port = port; + testHelperTest.port = port; } @BeforeAll static void setup() throws Exception { @@ -109,19 +109,19 @@ class ConfigurationControllerV3Test { @Test void testPutConfiguration() throws Exception { - Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3().putForEntity("/configuration", - testHelper.configAsString()); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, Objects::isNull); + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().putForEntity("/configuration", + testHelperTest.configAsString()); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, Objects::isNull); //put Valid Configuration With New Ric should Update Repository. So, will wait until the ric size is 2 await().until(rics::size, equalTo(2)); //test Get Configuration - Mono<ResponseEntity<String>> responseGetConfigMono = testHelper.restClientV3().getForEntity("/configuration"); - testHelper.testSuccessResponse(responseGetConfigMono, HttpStatus.OK, responseBody -> responseBody.contains("config")); + Mono<ResponseEntity<String>> responseGetConfigMono = testHelperTest.restClientV3().getForEntity("/configuration"); + testHelperTest.testSuccessResponse(responseGetConfigMono, HttpStatus.OK, responseBody -> responseBody.contains("config")); } @Test void testHealthCheck() { - Mono<ResponseEntity<String>> responseHealthCheckMono = testHelper.restClientV3().getForEntity("/status"); - testHelper.testSuccessResponse(responseHealthCheckMono, HttpStatus.OK, responseBody -> responseBody.contains("status")); + Mono<ResponseEntity<String>> responseHealthCheckMono = testHelperTest.restClientV3().getForEntity("/status"); + testHelperTest.testSuccessResponse(responseHealthCheckMono, HttpStatus.OK, responseBody -> responseBody.contains("status")); } } diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerV3Test.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerV3Test.java index 14604542..6c597856 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerV3Test.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerV3Test.java @@ -33,7 +33,7 @@ import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics; import org.onap.ccsdk.oran.a1policymanagementservice.repository.Services; import org.onap.ccsdk.oran.a1policymanagementservice.util.v3.Helper; import org.onap.ccsdk.oran.a1policymanagementservice.utils.MockA1ClientFactory; -import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelper; +import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelperTest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -72,7 +72,7 @@ class PolicyControllerV3Test { private ApplicationConfig applicationConfig; @Autowired - private TestHelper testHelper; + private TestHelperTest testHelperTest; @Autowired private Rics rics; @@ -109,8 +109,8 @@ class PolicyControllerV3Test { @BeforeEach void init() { - testHelper.port = port; - this.applicationConfig.setAuthProviderUrl(testHelper.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); + testHelperTest.port = port; + this.applicationConfig.setAuthProviderUrl(testHelperTest.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); } @AfterEach @@ -141,12 +141,12 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, ""); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); - testHelper.testSuccessResponse(responseMono, HttpStatus.CREATED, responseBody -> + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testSuccessResponse(responseMono, HttpStatus.CREATED, responseBody -> responseBody.contains("{\"scope\":{\"ueId\":\"ue5100\",\"qosId\":\"qos5100\"},\"qosObjectives\":{\"priorityLevel\":5100.0}}")); - testHelper.testSuccessHeader(responseMono, "location", headerValue -> headerValue.contains("https://localhost:" + port + "/a1-policy-management/v1/policies/")); + testHelperTest.testSuccessHeader(responseMono, "location", headerValue -> headerValue.contains("https://localhost:" + port + "/a1-policy-management/v1/policies/")); } @Test @@ -155,10 +155,10 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, "1"); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); - testHelper.testSuccessHeader(responseMono, "location", headerValue -> headerValue.contains("https://localhost:" + port + "/a1-policy-management/v1/policies/1")); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, "1"); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testSuccessHeader(responseMono, "location", headerValue -> headerValue.contains("https://localhost:" + port + "/a1-policy-management/v1/policies/1")); } @Test @@ -168,11 +168,11 @@ class PolicyControllerV3Test { String policyTypeName = "type1_1.2.3"; String url = "/policies"; String policyId = "policy_5g"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, policyId); - testHelper.restClientV3().postForEntity(url, policyBody).block(); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); - testHelper.testErrorCode(responseMono, HttpStatus.CONFLICT, "Policy already created with ID: " +policyId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, policyId); + testHelperTest.restClientV3().postForEntity(url, policyBody).block(); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testErrorCode(responseMono, HttpStatus.CONFLICT, "Policy already created with ID: " +policyId); } @Test @@ -181,14 +181,14 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, ""); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); String []locationHeader = Objects.requireNonNull(Objects.requireNonNull(responseMono.block()).getHeaders() .get("location")).get(0).split("/"); String policyID = locationHeader[(locationHeader.length) - 1]; - Mono<ResponseEntity<String>> responseMonoDelete = testHelper.restClientV3().deleteForEntity(url+"/" +policyID); - testHelper.testSuccessResponse(responseMonoDelete, HttpStatus.NO_CONTENT, responseBody -> true); + Mono<ResponseEntity<String>> responseMonoDelete = testHelperTest.restClientV3().deleteForEntity(url+"/" +policyID); + testHelperTest.testSuccessResponse(responseMonoDelete, HttpStatus.NO_CONTENT, responseBody -> true); } @Test @@ -197,11 +197,11 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.FALSE); - String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, ""); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); - testHelper.testErrorCode(responseMono, HttpStatus.BAD_REQUEST, " Schema validation failed"); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testErrorCode(responseMono, HttpStatus.BAD_REQUEST, " Schema validation failed"); } @Test @@ -209,11 +209,11 @@ class PolicyControllerV3Test { void testCreatePolicyNoRic() throws Exception { String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, " "); + testHelperTest.addPolicyType(policyTypeName, " "); when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.TRUE); - String policyBody = testHelper.postPolicyBody("noRic", policyTypeName, ""); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); - testHelper.testErrorCode(responseMono, HttpStatus.NOT_FOUND, " Could not find ric: noRic"); + String policyBody = testHelperTest.postPolicyBody("noRic", policyTypeName, ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testErrorCode(responseMono, HttpStatus.NOT_FOUND, " Could not find ric: noRic"); } @Test @@ -222,20 +222,20 @@ class PolicyControllerV3Test { String policyTypeName = "type1_1.2.3"; String nonRtRicId = "ricOne"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.TRUE); - String policyBody = testHelper.postPolicyBody(nonRtRicId, "noPolicyType", ""); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); - testHelper.testErrorCode(responseMono, HttpStatus.NOT_FOUND, "Could not find type: noPolicyType"); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, "noPolicyType", ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testErrorCode(responseMono, HttpStatus.NOT_FOUND, "Could not find type: noPolicyType"); } @Test void testGetPolicyTypesNoRicFound() throws Exception{ String policyTypeName = "type1_1.2.3"; String nonRtRicId = "ricOne"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().getForEntity("/policy-types" + "?nearRtRicId=\"noRic\""); - testHelper.testErrorCode(responseMono, HttpStatus.NOT_FOUND, "Near-RT RIC not Found using ID:"); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().getForEntity("/policy-types" + "?nearRtRicId=\"noRic\""); + testHelperTest.testErrorCode(responseMono, HttpStatus.NOT_FOUND, "Near-RT RIC not Found using ID:"); } @Test @@ -244,14 +244,14 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, ""); - Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); String []locationHeader = Objects.requireNonNull(Objects.requireNonNull(responseMono.block()).getHeaders() .get("location")).get(0).split("/"); String policyID = locationHeader[(locationHeader.length) - 1]; - Mono<ResponseEntity<String>> responseMonoGet = testHelper.restClientV3().getForEntity(url+"/" +policyID); - testHelper.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> + Mono<ResponseEntity<String>> responseMonoGet = testHelperTest.restClientV3().getForEntity(url+"/" +policyID); + testHelperTest.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> responseBody.contains("{\"scope\":{\"ueId\":\"ue5100\",\"qosId\":\"qos5100\"},\"qosObjectives\":{\"priorityLevel\":5100.0}}")); } @@ -262,14 +262,14 @@ class PolicyControllerV3Test { String nonRtRicIdTwo = "ric.22"; String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicIdOne); - String policyBodyOne = testHelper.postPolicyBody(nonRtRicIdOne, policyTypeName, "policyOne"); - testHelper.addPolicyType(policyTypeName, nonRtRicIdTwo); - String policyBodyTwo = testHelper.postPolicyBody(nonRtRicIdTwo, policyTypeName, "policyTwo"); - testHelper.restClientV3().postForEntity(url, policyBodyOne).block(); - testHelper.restClientV3().postForEntity(url, policyBodyTwo).block(); - Mono<ResponseEntity<String>> responseMonoGet = testHelper.restClientV3().getForEntity(url); - testHelper.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> + testHelperTest.addPolicyType(policyTypeName, nonRtRicIdOne); + String policyBodyOne = testHelperTest.postPolicyBody(nonRtRicIdOne, policyTypeName, "policyOne"); + testHelperTest.addPolicyType(policyTypeName, nonRtRicIdTwo); + String policyBodyTwo = testHelperTest.postPolicyBody(nonRtRicIdTwo, policyTypeName, "policyTwo"); + testHelperTest.restClientV3().postForEntity(url, policyBodyOne).block(); + testHelperTest.restClientV3().postForEntity(url, policyBodyTwo).block(); + Mono<ResponseEntity<String>> responseMonoGet = testHelperTest.restClientV3().getForEntity(url); + testHelperTest.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> responseBody.contains("[{\"policyId\":\"policyTwo\",\"nearRtRicId\":\"ric.22\"},{\"policyId\":\"policyOne\",\"nearRtRicId\":\"ric.11\"}]")); } @@ -279,9 +279,9 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policy-types"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - Mono<ResponseEntity<String>> responseMonoGet = testHelper.restClientV3().getForEntity(url+"/" +policyTypeName); - testHelper.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> !(responseBody.isEmpty())); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + Mono<ResponseEntity<String>> responseMonoGet = testHelperTest.restClientV3().getForEntity(url+"/" +policyTypeName); + testHelperTest.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> !(responseBody.isEmpty())); } @Test @@ -290,9 +290,9 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policy-types"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - Mono<ResponseEntity<String>> responseMonoGet = testHelper.restClientV3().getForEntity(url); - testHelper.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> responseBody.contains( + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + Mono<ResponseEntity<String>> responseMonoGet = testHelperTest.restClientV3().getForEntity(url); + testHelperTest.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> responseBody.contains( "{\"policyTypeId\":\"type1_1.2.3\",\"nearRtRicId\":\"ric.1\"}]" )); } @@ -303,14 +303,14 @@ class PolicyControllerV3Test { String nonRtRicId = "ric.1"; String policyTypeName = "type1_1.2.3"; String url = "/policies"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - String policyBodyForPost = testHelper.postPolicyBody(nonRtRicId, policyTypeName, "policyOne"); - testHelper.restClientV3().postForEntity(url, policyBodyForPost).block(); - String policyBodyForPut = testHelper.putPolicyBody(nonRtRicId, policyTypeName, "policyOne", "ue5200", + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBodyForPost = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, "policyOne"); + testHelperTest.restClientV3().postForEntity(url, policyBodyForPost).block(); + String policyBodyForPut = testHelperTest.putPolicyBody(nonRtRicId, policyTypeName, "policyOne", "ue5200", "qos5200", "5200.0"); - testHelper.restClientV3().putForEntity(url+"/policyOne", policyBodyForPut).block(); - Mono<ResponseEntity<String>> responseMonoGet = testHelper.restClientV3().getForEntity(url+"/policyOne"); - testHelper.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> + testHelperTest.restClientV3().putForEntity(url+"/policyOne", policyBodyForPut).block(); + Mono<ResponseEntity<String>> responseMonoGet = testHelperTest.restClientV3().getForEntity(url+"/policyOne"); + testHelperTest.testSuccessResponse(responseMonoGet, HttpStatus.OK, responseBody -> responseBody.contains("{\"scope\":{\"ueId\":\"ue5200\",\"qosId\":\"qos5200\"},\"qosObjectives\":{\"priorityLevel\":5200.0}")); } }
\ No newline at end of file diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3Test.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3Test.java index 63b61665..455ea0cf 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3Test.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3Test.java @@ -29,7 +29,7 @@ import org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2.RappSimulato import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyTypes; import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics; import org.onap.ccsdk.oran.a1policymanagementservice.utils.MockA1ClientFactory; -import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelper; +import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelperTest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -59,7 +59,7 @@ class RicRepositoryControllerV3Test { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @Autowired - private TestHelper testHelper; + private TestHelperTest testHelperTest; @Autowired private ApplicationConfig applicationConfig; @@ -87,9 +87,9 @@ class RicRepositoryControllerV3Test { @BeforeEach void init() { - testHelper.port = port; + testHelperTest.port = port; rics.clear(); - this.applicationConfig.setAuthProviderUrl(testHelper.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); + this.applicationConfig.setAuthProviderUrl(testHelperTest.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); } @AfterEach @@ -104,18 +104,18 @@ class RicRepositoryControllerV3Test { @Test void testGetRic() throws IOException { - testHelper.addPolicyType("1", "ricAdded"); - Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3().getForEntity("/rics/ric?ricId=ricAdded"); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody + testHelperTest.addPolicyType("1", "ricAdded"); + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().getForEntity("/rics/ric?ricId=ricAdded"); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody .contains("{\"ricId\":\"ricAdded\",\"managedElementIds\":[],\"state\":\"AVAILABLE\",\"policyTypeIds\":[\"1\"]}")); } @Test void testGetRics() throws IOException { - testHelper.addPolicyType("1", "ricAddedOne"); - testHelper.addPolicyType("2", "ricAddedTwo"); - Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3().getForEntity("/rics"); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody + testHelperTest.addPolicyType("1", "ricAddedOne"); + testHelperTest.addPolicyType("2", "ricAddedTwo"); + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().getForEntity("/rics"); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody .contains("{\"ricId\":\"ricAddedTwo\",\"managedElementIds\":[],\"state\":\"AVAILABLE\"," + "\"policyTypeIds\":[\"2\"]},{\"ricId\":\"ricAddedOne\",\"managedElementIds\":[]," + "\"state\":\"AVAILABLE\",\"policyTypeIds\":[\"1\"]")); diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ServiceControllerV3Test.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ServiceControllerV3Test.java index 426cf6ed..671a34e5 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ServiceControllerV3Test.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ServiceControllerV3Test.java @@ -32,7 +32,7 @@ import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyTypes; import org.onap.ccsdk.oran.a1policymanagementservice.repository.Service; import org.onap.ccsdk.oran.a1policymanagementservice.repository.Services; import org.onap.ccsdk.oran.a1policymanagementservice.utils.MockA1ClientFactory; -import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelper; +import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelperTest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -63,7 +63,7 @@ class ServiceControllerV3Test { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @Autowired - private TestHelper testHelper; + private TestHelperTest testHelperTest; @Autowired private ApplicationConfig applicationConfig; @@ -94,8 +94,8 @@ class ServiceControllerV3Test { @BeforeEach void init() { - testHelper.port = port; - this.applicationConfig.setAuthProviderUrl(testHelper.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); + testHelperTest.port = port; + this.applicationConfig.setAuthProviderUrl(testHelperTest.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); } @AfterEach @@ -112,30 +112,30 @@ class ServiceControllerV3Test { void testPutService() { ServiceRegistrationInfo serviceRegistrationInfo = new ServiceRegistrationInfo("serviceId"); serviceRegistrationInfo.callbackUrl("http://callback.com/").keepAliveIntervalSeconds(10L); - Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3() + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3() .putForEntity("/services", gson.toJson(serviceRegistrationInfo)); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.CREATED, responseBody -> services.size() == 1); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.CREATED, responseBody -> services.size() == 1); } @Test void testGetService() { services.put(new Service("newServiceId", Duration.ofSeconds(10L), "http://callback.com/")); - Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3().getForEntity("/services"); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBoy -> responseBoy + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().getForEntity("/services"); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBoy -> responseBoy .contains("http://callback.com/")); } @Test void testDeleteService() { services.put(new Service("newServiceId", Duration.ofSeconds(10L), "http://callback.com/")); - Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3().deleteForEntity("/services/newServiceId"); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.NO_CONTENT, responseBody -> services.size() == 0); + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().deleteForEntity("/services/newServiceId"); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.NO_CONTENT, responseBody -> services.size() == 0); } @Test void testKeepAliveService() { services.put(new Service("newServiceId", Duration.ofSeconds(10L), "http://callback.com/")); - Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3().putForEntity("/services/newServiceId/keepalive", ""); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> services.size() == 1); + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().putForEntity("/services/newServiceId/keepalive", ""); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> services.size() == 1); } } diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/service/v3/PolicyServiceTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/service/v3/PolicyServiceTest.java index 2e483338..95c77a08 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/service/v3/PolicyServiceTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/service/v3/PolicyServiceTest.java @@ -38,7 +38,7 @@ import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyType; import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics; import org.onap.ccsdk.oran.a1policymanagementservice.util.v3.Helper; import org.onap.ccsdk.oran.a1policymanagementservice.utils.MockA1ClientFactory; -import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelper; +import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelperTest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -86,7 +86,7 @@ class PolicyServiceTest { private PolicyService policyService; @Autowired - private TestHelper testHelper; + private TestHelperTest testHelperTest; @MockBean private Helper helper; @@ -120,15 +120,15 @@ class PolicyServiceTest { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); ServerWebExchange serverWebExchange = Mockito.mock(DefaultServerWebExchange.class); - Policy policy = testHelper.buidTestPolicy(testHelper.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); + Policy policy = testHelperTest.buidTestPolicy(testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.TRUE); when(helper.buildPolicy(any(),any(), any(), any())).thenReturn(policy); when(helper.isPolicyAlreadyCreated(any(), any())).thenReturn(Mono.error(new ServiceException ("Same policy content already created with policy ID: 122344-5674", HttpStatus.BAD_REQUEST))); - Mono<ResponseEntity<PolicyObjectInformation>> responseMono = policyService.createPolicyService(testHelper.policyObjectInfo(nonRtRicId, policyTypeName), serverWebExchange); - testHelper.verifyMockError(responseMono, "Same policy content already created with policy ID: 122344-5674"); + Mono<ResponseEntity<PolicyObjectInformation>> responseMono = policyService.createPolicyService(testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName), serverWebExchange); + testHelperTest.verifyMockError(responseMono, "Same policy content already created with policy ID: 122344-5674"); } @Test @@ -136,13 +136,13 @@ class PolicyServiceTest { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); ServerWebExchange serverWebExchange = Mockito.mock(DefaultServerWebExchange.class); when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.TRUE); when(helper.isPolicyAlreadyCreated(any(), any())).thenReturn(Mono.just(Policy.builder().build())); when(authorizationService.authCheck(any(), any(), any())).thenReturn(Mono.error(new ServiceException("Not authorized", HttpStatus.UNAUTHORIZED))); - Mono<ResponseEntity<PolicyObjectInformation>> responseMono = policyService.createPolicyService(testHelper.policyObjectInfo(nonRtRicId, policyTypeName), serverWebExchange); - testHelper.verifyMockError(responseMono, "Not authorized"); + Mono<ResponseEntity<PolicyObjectInformation>> responseMono = policyService.createPolicyService(testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName), serverWebExchange); + testHelperTest.verifyMockError(responseMono, "Not authorized"); } @Test @@ -150,8 +150,8 @@ class PolicyServiceTest { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - Policy policy = testHelper.buidTestPolicy(testHelper.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + Policy policy = testHelperTest.buidTestPolicy(testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); policies.put(policy); ServerWebExchange serverWebExchange = Mockito.mock(DefaultServerWebExchange.class); when(helper.checkRicStateIdle(any())).thenReturn(Mono.just(policy.getRic())); @@ -159,7 +159,7 @@ class PolicyServiceTest { when(authorizationService.authCheck(any(), any(), any())).thenReturn(Mono.just(policy)); Mono<ResponseEntity<Void>> responseMonoDelete = policyService.deletePolicyService(policy.getId(), serverWebExchange); assert(policies.size() == 1); - testHelper.testSuccessResponse(responseMonoDelete, HttpStatus.NO_CONTENT, responseBody -> policies.size() == 0); + testHelperTest.testSuccessResponse(responseMonoDelete, HttpStatus.NO_CONTENT, responseBody -> policies.size() == 0); } @Test @@ -174,11 +174,11 @@ class PolicyServiceTest { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - Policy policy = testHelper.buidTestPolicy(testHelper.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + Policy policy = testHelperTest.buidTestPolicy(testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); policies.put(policy); ServerWebExchange serverWebExchange = Mockito.mock(DefaultServerWebExchange.class); - PolicyObjectInformation updatedPolicyObjectInfo = testHelper.policyObjectInfo(nonRtRicId, policyTypeName); + PolicyObjectInformation updatedPolicyObjectInfo = testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName); updatedPolicyObjectInfo.setPolicyObject(gson.fromJson(JsonParser.parseString("{\n" + " \"scope\": {\n" + " \"ueId\": \"ue6100\",\n" + @@ -188,13 +188,13 @@ class PolicyServiceTest { " \"priorityLevel\": 6100.0\n" + " }\n" + " }").getAsJsonObject().toString(), Map.class)); - Policy updatedPolicy = testHelper.buidTestPolicy(updatedPolicyObjectInfo, "122344-5674"); + Policy updatedPolicy = testHelperTest.buidTestPolicy(updatedPolicyObjectInfo, "122344-5674"); when(helper.buildPolicy(any(),any(), any(), any())).thenReturn(updatedPolicy); when(helper.checkRicStateIdle(any())).thenReturn(Mono.just(updatedPolicy.getRic())); when(helper.checkSupportedType(any(), any())).thenReturn(Mono.just(updatedPolicy.getRic())); when(authorizationService.authCheck(any(), any(), any())).thenReturn(Mono.just(updatedPolicy)); Mono<ResponseEntity<Object>> responseMono = policyService.putPolicyService(policy.getId(), updatedPolicyObjectInfo.getPolicyObject(), serverWebExchange); - testHelper.testSuccessResponse(responseMono, HttpStatus.OK, responseBody -> { + testHelperTest.testSuccessResponse(responseMono, HttpStatus.OK, responseBody -> { if (responseBody instanceof String returnPolicy) return returnPolicy.contains(updatedPolicy.getJson()); return false; @@ -212,18 +212,18 @@ class PolicyServiceTest { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); when(helper.toPolicyTypeInfoCollection(any(), any())).thenCallRealMethod(); Mono<ResponseEntity<Flux<PolicyTypeInformation>>> responseEntityMono = policyService.getPolicyTypesService(nearRtRicID, typeName, compatibleWithVersion); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().count() == 1); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().count() == 1); } @Test void testGetPolicyTypesEmpty() throws Exception { when(helper.toPolicyTypeInfoCollection(any(), any())).thenCallRealMethod(); Mono<ResponseEntity<Flux<PolicyTypeInformation>>> responseEntityMono = policyService.getPolicyTypesService(null, null, null); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().findAny().isEmpty()); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().findAny().isEmpty()); } @Test @@ -235,28 +235,28 @@ class PolicyServiceTest { void testGetPolicyTypesNoMatchedTypeName() throws Exception { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); when(helper.toPolicyTypeInfoCollection(any(), any())).thenCallRealMethod(); Mono<ResponseEntity<Flux<PolicyTypeInformation>>> responseEntityMono = policyService.getPolicyTypesService("", "noTypeName", null); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().findAny().isEmpty()); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().findAny().isEmpty()); } @Test void testGetPolicyTypesNoMatchedTypeNameWithRic() throws Exception { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); when(helper.toPolicyTypeInfoCollection(any(), any())).thenCallRealMethod(); Mono<ResponseEntity<Flux<PolicyTypeInformation>>> responseEntityMono = policyService.getPolicyTypesService("Ric_347", "noTypeName", null); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().findAny().isEmpty()); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().findAny().isEmpty()); } @Test void testGetPolicyIds() throws Exception { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - Policy policy = testHelper.buidTestPolicy(testHelper.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + Policy policy = testHelperTest.buidTestPolicy(testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); policies.put(policy); when(authorizationService.authCheck(any(), any(), any())).thenReturn(Mono.just(policy)); ServerWebExchange serverWebExchange = Mockito.mock(DefaultServerWebExchange.class); @@ -266,12 +266,12 @@ class PolicyServiceTest { when(helper.toFluxPolicyInformation(any())).thenReturn(Flux.fromIterable(mockPolicyInfoCollection)); Mono<ResponseEntity<Flux<PolicyInformation>>> responseEntityMono = policyService .getPolicyIdsService(null, null, null, null, serverWebExchange); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().count() == 1); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> responseBody.toStream().count() == 1); } @Test void testGetPolicyIdsNoRic() throws Exception { - testHelper.addPolicyType("uri_type_123", "Ric_347"); + testHelperTest.addPolicyType("uri_type_123", "Ric_347"); ServerWebExchange serverWebExchange = Mockito.mock(DefaultServerWebExchange.class); EntityNotFoundException exception = assertThrows(EntityNotFoundException.class, () -> policyService .getPolicyIdsService("uri_type_123", "noRic", "", "", serverWebExchange)); @@ -290,13 +290,13 @@ class PolicyServiceTest { void testGetPolicyService() throws Exception { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - testHelper.addPolicyType(policyTypeName, nonRtRicId); - Policy policy = testHelper.buidTestPolicy(testHelper.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + Policy policy = testHelperTest.buidTestPolicy(testHelperTest.policyObjectInfo(nonRtRicId, policyTypeName), "122344-5674"); policies.put(policy); when(authorizationService.authCheck(any(), any(), any())).thenReturn(Mono.just(policy)); ServerWebExchange serverWebExchange = Mockito.mock(DefaultServerWebExchange.class); Mono<ResponseEntity<Object>> responseEntityMono = policyService.getPolicyService(policy.getId(), serverWebExchange); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> { + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> { if (responseBody instanceof String returnPolicy) return returnPolicy.contains(policy.getJson()); return false; @@ -315,9 +315,9 @@ class PolicyServiceTest { void testGetPolicyTypeService() throws Exception { String policyTypeName = "uri_type_123"; String nonRtRicId = "Ric_347"; - PolicyType addedPolicyType = testHelper.addPolicyType(policyTypeName, nonRtRicId); + PolicyType addedPolicyType = testHelperTest.addPolicyType(policyTypeName, nonRtRicId); Mono<ResponseEntity<Object>> responseEntityMono = policyService.getPolicyTypeDefinitionService(policyTypeName); - testHelper.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> { + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, responseBody -> { if (responseBody instanceof String returnPolicyType) return returnPolicyType.contains(addedPolicyType.getSchema()); return false; diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/ReactiveEntryExitFilterDisableTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/ReactiveEntryExitFilterDisableTest.java new file mode 100644 index 00000000..54b9d295 --- /dev/null +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/ReactiveEntryExitFilterDisableTest.java @@ -0,0 +1,82 @@ +package org.onap.ccsdk.oran.a1policymanagementservice.utils.v3; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig; +import org.onap.ccsdk.oran.a1policymanagementservice.controllers.OpenPolicyAgentSimulatorController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.system.CapturedOutput; +import org.springframework.boot.test.system.OutputCaptureExtension; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.TestPropertySource; +import org.springframework.util.FileSystemUtils; +import reactor.core.publisher.Mono; + +import java.lang.invoke.MethodHandles; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ExtendWith({OutputCaptureExtension.class}) +@TestPropertySource(properties = { + "server.ssl.key-store=./config/keystore.jks", + "app.webclient.trust-store=./config/truststore.jks", + "app.vardata-directory=./target", + "app.config-file-schema-path=/application_configuration_schema.json", + "logging.reactive-entry-exit-filter-enabled=false" +}) +class ReactiveEntryExitFilterDisableTest { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Autowired + private ApplicationConfig applicationConfig; + + @Autowired + private TestHelperTest testHelperTest; + + @LocalServerPort + private int port; + + @BeforeEach + void init() { + testHelperTest.port = port; + this.applicationConfig.setAuthProviderUrl(testHelperTest.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); + } + + @AfterAll + static void clearTestDir() { + try { + FileSystemUtils.deleteRecursively(Path.of("/tmp/pmstestv3")); + } catch (Exception e) { + logger.warn("Could test directory : {}", e.getMessage()); + } + } + + @Test + @DisplayName("test verify entry exit log") + void testPostPolicy(CapturedOutput capturedOutput) throws Exception { + String nonRtRicId = "ric.1"; + String policyTypeName = "type1_1.2.3"; + String url = "/policies"; + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testSuccessResponse(responseMono, HttpStatus.CREATED, responseBody -> + responseBody.contains("{\"scope\":{\"ueId\":\"ue5100\",\"qosId\":\"qos5100\"},\"qosObjectives\":{\"priorityLevel\":5100.0}}")); + testHelperTest.testSuccessHeader(responseMono, "location", headerValue -> headerValue.contains("https://localhost:" + port + "/a1-policy-management/v1/policies/")); + assertFalse(capturedOutput.getOut().contains("Request received with path: /a1-policy-management/v1/policies")); + assertFalse(capturedOutput.getOut().contains("the Status code of the response: 201 CREATED")); + assertFalse(capturedOutput.getOut().contains("the response is:")); + } +} diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/ReactiveEntryExitFilterTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/ReactiveEntryExitFilterTest.java new file mode 100644 index 00000000..9e0f60ea --- /dev/null +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/ReactiveEntryExitFilterTest.java @@ -0,0 +1,82 @@ +package org.onap.ccsdk.oran.a1policymanagementservice.utils.v3; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig; +import org.onap.ccsdk.oran.a1policymanagementservice.controllers.OpenPolicyAgentSimulatorController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.system.CapturedOutput; +import org.springframework.boot.test.system.OutputCaptureExtension; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.TestPropertySource; +import org.springframework.util.FileSystemUtils; +import reactor.core.publisher.Mono; + +import java.lang.invoke.MethodHandles; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ExtendWith({OutputCaptureExtension.class}) +@TestPropertySource(properties = { + "server.ssl.key-store=./config/keystore.jks", + "app.webclient.trust-store=./config/truststore.jks", + "app.vardata-directory=./target", + "app.config-file-schema-path=/application_configuration_schema.json", + "logging.reactive-entry-exit-filter-enabled=true", + "logging.level.org.onap.ccsdk.oran.a1policymanagementservice=TRACE" +}) +class ReactiveEntryExitFilterTest { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Autowired + private ApplicationConfig applicationConfig; + + @Autowired + private TestHelperTest testHelperTest; + + @LocalServerPort + private int port; + + @BeforeEach + void init() { + testHelperTest.port = port; + this.applicationConfig.setAuthProviderUrl(testHelperTest.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL); + } + + @AfterAll + static void clearTestDir() { + try { + FileSystemUtils.deleteRecursively(Path.of("/tmp/pmstestv3")); + } catch (Exception e) { + logger.warn("Could test directory : {}", e.getMessage()); + } + } + + @Test + @DisplayName("test verify entry exit log") + void testPostPolicy(CapturedOutput capturedOutput) throws Exception { + String nonRtRicId = "ric.1"; + String policyTypeName = "type1_1.2.3"; + String url = "/policies"; + testHelperTest.addPolicyType(policyTypeName, nonRtRicId); + String policyBody = testHelperTest.postPolicyBody(nonRtRicId, policyTypeName, ""); + Mono<ResponseEntity<String>> responseMono = testHelperTest.restClientV3().postForEntity(url, policyBody); + testHelperTest.testSuccessResponse(responseMono, HttpStatus.CREATED, responseBody -> + responseBody.contains("{\"scope\":{\"ueId\":\"ue5100\",\"qosId\":\"qos5100\"},\"qosObjectives\":{\"priorityLevel\":5100.0}}")); + testHelperTest.testSuccessHeader(responseMono, "location", headerValue -> headerValue.contains("https://localhost:" + port + "/a1-policy-management/v1/policies/")); + assertTrue(capturedOutput.getOut().contains("Request received with path: /a1-policy-management/v1/policies")); + assertTrue(capturedOutput.getOut().contains("the Status code of the response: 201 CREATED")); + assertTrue(capturedOutput.getOut().contains("the response is:")); + } +} diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelper.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelperTest.java index b0b5858a..78ab385c 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelper.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelperTest.java @@ -61,7 +61,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertTrue; @Component -public class TestHelper { +public class TestHelperTest { @Autowired ApplicationConfig applicationConfig; diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst index ef73af6b..05a8281a 100644 --- a/docs/guide/developer-guide.rst +++ b/docs/guide/developer-guide.rst @@ -64,7 +64,7 @@ There are two configuration files for A1 Policy Management Service, *config/appl The first (*config/application_configuration.json*) contains application-specific configuration needed by the application, such as which near-RT RICs, or controller to use. The second (*config/application.yaml*) contains logging and security configurations. -For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki <https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP>`_ +For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16444961/O-RAN+A1+Policies+in+ONAP>`_ Static configuration - Settings that cannot be changed at runtime (*application.yaml*) -------------------------------------------------------------------------------------- |