aboutsummaryrefslogtreecommitdiffstats
path: root/a1-policy-management/src/test/java/org
diff options
context:
space:
mode:
authorraviteja.karumuri <raviteja.karumuri@est.tech>2024-04-30 22:15:58 +0100
committerraviteja.karumuri <raviteja.karumuri@est.tech>2024-06-20 11:38:55 +0100
commit10948b6d86645c7e30d86f787fcf17a0eefd22be (patch)
treed418eb79283071624e203121eac8dbd1f6de92fb /a1-policy-management/src/test/java/org
parenta5eea6c8b67ede9db9b741935398e246c6095671 (diff)
Implementing other V3 Controllers
Issue-ID: CCSDK-4008 Change-Id: I00408d0189f26142f50c8ee3ae90fc98647e7a0d Signed-off-by: Raviteja Karumuri <raviteja.karumuri@est.tech>
Diffstat (limited to 'a1-policy-management/src/test/java/org')
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerTestV3.java128
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerTestV3.java (renamed from a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerTest.java)45
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerTestV3.java123
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ServiceControllerTestV3.java141
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelper.java14
5 files changed, 439 insertions, 12 deletions
diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerTestV3.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerTestV3.java
new file mode 100644
index 00000000..c634ecc5
--- /dev/null
+++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerTestV3.java
@@ -0,0 +1,128 @@
+/*-
+ * ========================LICENSE_START=================================
+ * Copyright (C) 2020-2023 Nordix Foundation. 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.controllers.v3;
+
+import org.junit.jupiter.api.*;
+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.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.TestConfiguration;
+import org.springframework.boot.test.web.server.LocalServerPort;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.TestPropertySource;
+import reactor.core.publisher.Mono;
+
+import java.io.File;
+import java.lang.reflect.Field;
+import java.time.Duration;
+import java.util.Objects;
+
+import static org.awaitility.Awaitility.await;
+import static org.hamcrest.CoreMatchers.equalTo;
+
+@TestMethodOrder(MethodOrderer.MethodName.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@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" //
+})
+class ConfigurationControllerTestV3 {
+ @Autowired
+ ApplicationContext context;
+
+ @Autowired
+ ApplicationConfig applicationConfig;
+
+ @Autowired
+ private Rics rics;
+
+ @Autowired
+ private TestHelper testHelper;
+
+ @TempDir
+ public static File temporaryFolder;
+ private static File configFile;
+
+ @LocalServerPort
+ private int port;
+
+ @BeforeEach
+ void init() {
+ testHelper.port = port;
+ }
+ @BeforeAll
+ static void setup() throws Exception {
+ Field f1 = RefreshConfigTask.class.getDeclaredField("configRefreshInterval");
+ f1.setAccessible(true);
+ f1.set(null, Duration.ofSeconds(1));
+ }
+
+ public static class MockApplicationConfig extends ApplicationConfig {
+ @Override
+ public String getLocalConfigurationFilePath() {
+ configFile = new File(temporaryFolder, "config.json");
+ return configFile.getAbsolutePath();
+ }
+ }
+
+ /**
+ * Overrides the BeanFactory.
+ */
+ @TestConfiguration
+ static class TestBeanFactory {
+ @Bean
+ public ApplicationConfig getApplicationConfig() {
+ return new MockApplicationConfig();
+ }
+
+ @Bean
+ public ServletWebServerFactory servletContainer() {
+ return new TomcatServletWebServerFactory();
+ }
+ }
+
+ @Test
+ void testPutConfiguration() throws Exception {
+ Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3().putForEntity("/configuration",
+ testHelper.configAsString());
+ testHelper.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"));
+ }
+
+ @Test
+ public void testHealthCheck() {
+ Mono<ResponseEntity<String>> responseHealthCheckMono = testHelper.restClientV3().getForEntity("/status");
+ testHelper.testSuccessResponse(responseHealthCheckMono, HttpStatus.OK, responseBody -> responseBody.contains("status"));
+ }
+}
diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerTestV3.java
index d92097bd..a8c5fbae 100644
--- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerTest.java
+++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/PolicyControllerTestV3.java
@@ -27,14 +27,13 @@ import org.onap.ccsdk.oran.a1policymanagementservice.config.TestConfig;
import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig;
import org.onap.ccsdk.oran.a1policymanagementservice.controllers.OpenPolicyAgentSimulatorController;
import org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2.RappSimulatorController;
-import org.onap.ccsdk.oran.a1policymanagementservice.models.v3.PolicyObjectInformation;
import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policies;
import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyTypes;
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.v3.TestHelper;
import org.onap.ccsdk.oran.a1policymanagementservice.utils.MockA1ClientFactory;
+import org.onap.ccsdk.oran.a1policymanagementservice.utils.v3.TestHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,7 +65,7 @@ import static org.mockito.Mockito.when;
"app.filepath=", //
"app.s3.bucket=" // If this is set, S3 will be used to store data.
})
-public class PolicyControllerTest {
+public class PolicyControllerTestV3 {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@Autowired
@@ -143,7 +142,7 @@ public class PolicyControllerTest {
String policyTypeName = "type1_1.2.3";
String url = "/policies";
testHelper.addPolicyType(policyTypeName, nonRtRicId);
- String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName);
+ String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, "");
Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody);
testHelper.testSuccessResponse(responseMono, HttpStatus.CREATED, responseBody ->
responseBody.contains("{\"scope\":{\"ueId\":\"ue5100\",\"qosId\":\"qos5100\"},\"qosObjectives\":{\"priorityLevel\":5100.0}}"));
@@ -151,13 +150,39 @@ public class PolicyControllerTest {
}
@Test
+ @DisplayName("test Create Policy with PolicyID sending")
+ void testPostPolicyWithPolicyID() throws Exception {
+ 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 + "/a1policymanagement/v1/policies/1"));
+ }
+
+ @Test
+ @DisplayName("test Create Policy with exisitng policy id")
+ void testPostPolicyWithExistingPolicyID() throws Exception {
+ String nonRtRicId = "ric.1";
+ 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);
+ }
+
+ @Test
@DisplayName("test delete Policy")
void testDeletePolicy() throws Exception {
String nonRtRicId = "ric.1";
String policyTypeName = "type1_1.2.3";
String url = "/policies";
testHelper.addPolicyType(policyTypeName, nonRtRicId);
- String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName);
+ String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, "");
Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody);
String []locationHeader = Objects.requireNonNull(Objects.requireNonNull(responseMono.block()).getHeaders()
.get("location")).get(0).split("/");
@@ -174,7 +199,7 @@ public class PolicyControllerTest {
String url = "/policies";
testHelper.addPolicyType(policyTypeName, nonRtRicId);
when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.FALSE);
- String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName);
+ String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, "");
Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody);
testHelper.testErrorCode(responseMono, HttpStatus.BAD_REQUEST, " Schema validation failed");
}
@@ -186,7 +211,7 @@ public class PolicyControllerTest {
String url = "/policies";
testHelper.addPolicyType(policyTypeName, " ");
when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.TRUE);
- String policyBody = testHelper.postPolicyBody("noRic", policyTypeName);
+ 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");
}
@@ -199,7 +224,7 @@ public class PolicyControllerTest {
String url = "/policies";
testHelper.addPolicyType(policyTypeName, nonRtRicId);
when(helper.jsonSchemaValidation(any())).thenReturn(Boolean.TRUE);
- String policyBody = testHelper.postPolicyBody(nonRtRicId, "noPolicyType");
+ 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");
}
@@ -209,7 +234,7 @@ public class PolicyControllerTest {
String policyTypeName = "type1_1.2.3";
String nonRtRicId = "ricOne";
testHelper.addPolicyType(policyTypeName, nonRtRicId);
- Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().getForEntity("/policyTypes" + "?nearRtRicId=\"noRic\"");
+ Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().getForEntity("/policytypes" + "?nearRtRicId=\"noRic\"");
testHelper.testErrorCode(responseMono, HttpStatus.NOT_FOUND, "Near-RT RIC not Found using ID:");
}
@@ -220,7 +245,7 @@ public class PolicyControllerTest {
String policyTypeName = "type1_1.2.3";
String url = "/policies";
testHelper.addPolicyType(policyTypeName, nonRtRicId);
- String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName);
+ String policyBody = testHelper.postPolicyBody(nonRtRicId, policyTypeName, "");
Mono<ResponseEntity<String>> responseMono = testHelper.restClientV3().postForEntity(url, policyBody);
String []locationHeader = Objects.requireNonNull(Objects.requireNonNull(responseMono.block()).getHeaders()
.get("location")).get(0).split("/");
diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerTestV3.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerTestV3.java
new file mode 100644
index 00000000..576ae7f6
--- /dev/null
+++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerTestV3.java
@@ -0,0 +1,123 @@
+/*-
+ * ========================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.controllers.v3;
+
+import org.junit.jupiter.api.*;
+import org.onap.ccsdk.oran.a1policymanagementservice.clients.SecurityContext;
+import org.onap.ccsdk.oran.a1policymanagementservice.config.TestConfig;
+import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig;
+import org.onap.ccsdk.oran.a1policymanagementservice.controllers.OpenPolicyAgentSimulatorController;
+import org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2.RappSimulatorController;
+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.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.web.server.LocalServerPort;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestPropertySource;
+import reactor.core.publisher.Mono;
+
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+
+@TestMethodOrder(MethodOrderer.MethodName.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ContextConfiguration(classes = TestConfig.class)
+@TestPropertySource(properties = { //
+ "server.ssl.key-store=./config/keystore.jks", //
+ "app.webclient.trust-store=./config/truststore.jks", //
+ "app.webclient.trust-store-used=true", //
+ "app.vardata-directory=/tmp/pmstestv3", //a
+ "app.filepath=", //
+ "app.s3.bucket=" // If this is set, S3 will be used to store data.
+})
+public class RicRepositoryControllerTestV3 {
+
+ private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ @Autowired
+ private TestHelper testHelper;
+
+ @Autowired
+ private ApplicationConfig applicationConfig;
+
+ @Autowired
+ private MockA1ClientFactory a1ClientFactory;
+
+ @Autowired
+ private RappSimulatorController rAppSimulator;
+
+ @Autowired
+ private SecurityContext securityContext;
+
+ @Autowired
+ private OpenPolicyAgentSimulatorController openPolicyAgentSimulatorController;
+
+ @Autowired
+ private PolicyTypes policyTypes;
+
+ @Autowired
+ private Rics rics;
+
+ @LocalServerPort
+ private int port;
+
+ @BeforeEach
+ void init() {
+ testHelper.port = port;
+ this.applicationConfig.setAuthProviderUrl(testHelper.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL);
+ }
+
+ @AfterEach
+ void reset() {
+ rics.clear();
+ a1ClientFactory.reset();
+ this.rAppSimulator.getTestResults().clear();
+ this.a1ClientFactory.setPolicyTypes(policyTypes); // Default same types in RIC and in this app
+ this.securityContext.setAuthTokenFilePath(null);
+ this.openPolicyAgentSimulatorController.getTestResults().reset();
+ }
+
+ @Test
+ public 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
+ .contains("{\"ricId\":\"ricAdded\",\"managedElementIds\":[],\"state\":\"AVAILABLE\",\"policyTypeIds\":[\"1\"]}"));
+ }
+
+ @Test
+ public 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
+ .contains("{\"rics\":[{\"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/ServiceControllerTestV3.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ServiceControllerTestV3.java
new file mode 100644
index 00000000..9eeaa3af
--- /dev/null
+++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ServiceControllerTestV3.java
@@ -0,0 +1,141 @@
+/*-
+ * ========================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.controllers.v3;
+
+import com.google.gson.Gson;
+import org.junit.jupiter.api.*;
+import org.onap.ccsdk.oran.a1policymanagementservice.clients.SecurityContext;
+import org.onap.ccsdk.oran.a1policymanagementservice.config.TestConfig;
+import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig;
+import org.onap.ccsdk.oran.a1policymanagementservice.controllers.OpenPolicyAgentSimulatorController;
+import org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2.RappSimulatorController;
+import org.onap.ccsdk.oran.a1policymanagementservice.models.v3.ServiceRegistrationInfo;
+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.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.web.server.LocalServerPort;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestPropertySource;
+import reactor.core.publisher.Mono;
+
+import java.lang.invoke.MethodHandles;
+import java.time.Duration;
+
+@TestMethodOrder(MethodOrderer.MethodName.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ContextConfiguration(classes = TestConfig.class)
+@TestPropertySource(properties = { //
+ "server.ssl.key-store=./config/keystore.jks", //
+ "app.webclient.trust-store=./config/truststore.jks", //
+ "app.webclient.trust-store-used=true", //
+ "app.vardata-directory=/tmp/pmstestv3", //a
+ "app.filepath=", //
+ "app.s3.bucket=" // If this is set, S3 will be used to store data.
+})
+public class ServiceControllerTestV3 {
+
+ private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ @Autowired
+ private TestHelper testHelper;
+
+ @Autowired
+ private ApplicationConfig applicationConfig;
+
+ @Autowired
+ private Services services;
+
+ @Autowired
+ private MockA1ClientFactory a1ClientFactory;
+
+ @Autowired
+ private RappSimulatorController rAppSimulator;
+
+ @Autowired
+ private SecurityContext securityContext;
+
+ @Autowired
+ private OpenPolicyAgentSimulatorController openPolicyAgentSimulatorController;
+
+ @Autowired
+ private PolicyTypes policyTypes;
+
+ @Autowired
+ private Gson gson;
+
+ @LocalServerPort
+ private int port;
+
+ @BeforeEach
+ void init() {
+ testHelper.port = port;
+ this.applicationConfig.setAuthProviderUrl(testHelper.baseUrl() + OpenPolicyAgentSimulatorController.ACCESS_CONTROL_URL);
+ }
+
+ @AfterEach
+ void reset() {
+ services.clear();
+ a1ClientFactory.reset();
+ this.rAppSimulator.getTestResults().clear();
+ this.a1ClientFactory.setPolicyTypes(policyTypes); // Default same types in RIC and in this app
+ this.securityContext.setAuthTokenFilePath(null);
+ this.openPolicyAgentSimulatorController.getTestResults().reset();
+ }
+
+ @Test
+ public void testPutService() {
+ ServiceRegistrationInfo serviceRegistrationInfo = new ServiceRegistrationInfo("serviceId");
+ serviceRegistrationInfo.callbackUrl("http://callback.com/").keepAliveIntervalSeconds(10L);
+ Mono<ResponseEntity<String>> responseEntityMono = testHelper.restClientV3()
+ .putForEntity("/services", gson.toJson(serviceRegistrationInfo));
+ testHelper.testSuccessResponse(responseEntityMono, HttpStatus.CREATED, responseBody -> services.size() == 1);
+ }
+
+ @Test
+ public 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
+ .contains("http://callback.com/"));
+ }
+
+ @Test
+ public 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);
+ }
+
+ @Test
+ public 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);
+ }
+}
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/TestHelper.java
index bfec3f6b..5463b0a1 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/TestHelper.java
@@ -25,6 +25,7 @@ import com.google.common.io.CharStreams;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
+import org.apache.commons.io.FileUtils;
import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClient;
import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClientFactory;
import org.onap.ccsdk.oran.a1policymanagementservice.clients.SecurityContext;
@@ -45,6 +46,7 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -161,13 +163,15 @@ public class TestHelper {
return type;
}
- public String postPolicyBody(String nearRtRicId, String policyTypeName) {
+ public String postPolicyBody(String nearRtRicId, String policyTypeName, String policyId) {
PolicyObjectInformation policyObjectInfo = new PolicyObjectInformation(nearRtRicId, dummyPolicyObject(), policyTypeName);
+ if (policyId != null && !policyId.isEmpty() && !policyId.isBlank())
+ policyObjectInfo.setPolicyId(policyId);
return gson.toJson(policyObjectInfo);
}
public PolicyObjectInformation policyObjectInfo(String nearRtRicId, String policyTypeName) {
- return gson.fromJson(postPolicyBody(nearRtRicId, policyTypeName), PolicyObjectInformation.class);
+ return gson.fromJson(postPolicyBody(nearRtRicId, policyTypeName, ""), PolicyObjectInformation.class);
}
public JsonObject dummyPolicyObject() {
@@ -251,4 +255,10 @@ public class TestHelper {
})
.verify();
}
+
+ public String configAsString() throws Exception {
+ File configFile =
+ new File(Objects.requireNonNull(getClass().getClassLoader().getResource("test_application_configuration.json")).getFile());
+ return FileUtils.readFileToString(configFile, "UTF-8");
+ }
}