From acdd6b6d915736ac8575769ea63bfc745e184b2b Mon Sep 17 00:00:00 2001 From: lapentafd Date: Mon, 30 Jan 2023 17:36:59 +0000 Subject: Contract Tests policy-api Adding Contract tests, verifying the stubbed implementation. Issue-ID: POLICY-4533 Change-Id: I729d0c2316b185967e0d7c292eb3c8c3da23ac23 Signed-off-by: lapentafd --- .../onap/policy/api/contract/ApiContractTest.java | 143 +++++++++++++++++++++ .../main/rest/stub/ApisRestControllerStubTest.java | 92 ------------- 2 files changed, 143 insertions(+), 92 deletions(-) create mode 100644 main/src/test/java/org/onap/policy/api/contract/ApiContractTest.java delete mode 100644 main/src/test/java/org/onap/policy/api/main/rest/stub/ApisRestControllerStubTest.java (limited to 'main/src') diff --git a/main/src/test/java/org/onap/policy/api/contract/ApiContractTest.java b/main/src/test/java/org/onap/policy/api/contract/ApiContractTest.java new file mode 100644 index 00000000..296c011b --- /dev/null +++ b/main/src/test/java/org/onap/policy/api/contract/ApiContractTest.java @@ -0,0 +1,143 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.api.contract; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import javax.ws.rs.core.Response; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.policy.api.main.PolicyApiApplication; +import org.onap.policy.api.main.rest.utils.CommonTestRestController; +import org.onap.policy.common.utils.security.SelfSignedKeyStore; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = PolicyApiApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ActiveProfiles({ "test", "stub" }) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) +public class ApiContractTest extends CommonTestRestController { + protected static final String APP_JSON = "application/json"; + protected static final String APP_YAML = "application/yaml"; + private static final String TOSCA_NODE_TEMPLATE_RESOURCE = + "nodetemplates/nodetemplates.metadatasets.input.tosca.json"; + + @LocalServerPort + private int apiPort; + + private static SelfSignedKeyStore keystore; + + + @BeforeClass + public static void setupParameters() throws IOException, InterruptedException { + keystore = new SelfSignedKeyStore(); + } + + @DynamicPropertySource + static void registerPgProperties(DynamicPropertyRegistry registry) { + registry.add("server.ssl.enabled", () -> "true"); + registry.add("server.ssl.key-store", () -> keystore.getKeystoreName()); + registry.add("server.ssl.key-store-password", () -> SelfSignedKeyStore.KEYSTORE_PASSWORD); + registry.add("server.ssl.key-store-type", () -> "PKCS12"); + registry.add("server.ssl.key-alias", () -> "policy@policy.onap.org"); + registry.add("server.ssl.key-password", () -> SelfSignedKeyStore.PRIVATE_KEY_PASSWORD); + } + + @Test + public void testStubPolicyDesign() throws Exception { + checkStubJsonGet("policies"); + checkStubJsonGet("policies/policyname/versions/1.0.2"); + checkStubJsonGet("policytypes"); + checkStubJsonGet("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16"); + checkStubJsonGet("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/latest"); + checkStubJsonGet("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.0.0/"); + checkStubJsonGet("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.0.0/policies"); + checkStubJsonGet("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.0.0/policies/" + + "9c65fa1f-2833-4076-a64d-5b62e35cd09b"); + checkStubJsonGet("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.0.0/policies/" + + "9c65fa1f-2833-4076-a64d-5b62e35cd09b/versions/latest"); + checkStubJsonGet("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.0.0/policies/" + + "9c65fa1f-2833-4076-a64d-5b62e35cd09b/versions/1.2.3"); + checkStubJsonGet("statistics"); + checkStubJsonGet("healthcheck"); + + checkStubJsonPost("policies"); + checkStubJsonPost("policytypes"); + checkStubJsonPost("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.2.3/policies"); + + checkStubJsonDelete("policies/policyname/versions/1.0.2"); + checkStubJsonDelete("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.0.0"); + checkStubJsonDelete("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/1.0.0/policies/" + + "9c65fa1f-2833-4076-a64d-5b62e35cd09b/versions/1.2.3"); + } + + @Test + public void testStubNodeTemplateDesign() throws Exception { + checkStubJsonGet("nodetemplates"); + checkStubJsonGet("nodetemplates/k8stemplate/versions/1.0.0"); + + checkStubJsonPost("nodetemplates"); + + checkStubJsonPut("nodetemplates"); + + checkStubJsonDelete("nodetemplates/k8stemplate/versions/1.0.0"); + } + + @Test + public void testErrors() throws Exception { + var responseYaml = super.readResource("policies", APP_YAML, apiPort); + assertEquals(Response.Status.NOT_IMPLEMENTED.getStatusCode(), responseYaml.getStatus()); + + var responseListYaml = super.readResource("nodetemplates", APP_YAML, apiPort); + assertEquals(Response.Status.NOT_IMPLEMENTED.getStatusCode(), responseListYaml.getStatus()); + + } + + private void checkStubJsonGet(String url) throws Exception { + var response = super.readResource(url, APP_JSON, apiPort); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + } + + private void checkStubJsonPost(String url) throws Exception { + var response = super.createResource(url, TOSCA_NODE_TEMPLATE_RESOURCE, apiPort); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + } + + private void checkStubJsonPut(String url) throws Exception { + var response = super.updateResource(url, TOSCA_NODE_TEMPLATE_RESOURCE, APP_JSON, apiPort); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + } + + private void checkStubJsonDelete(String url) throws Exception { + var response = super.deleteResource(url, APP_JSON, apiPort); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + } + +} diff --git a/main/src/test/java/org/onap/policy/api/main/rest/stub/ApisRestControllerStubTest.java b/main/src/test/java/org/onap/policy/api/main/rest/stub/ApisRestControllerStubTest.java deleted file mode 100644 index b93aeed5..00000000 --- a/main/src/test/java/org/onap/policy/api/main/rest/stub/ApisRestControllerStubTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2023 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.api.main.rest.stub; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.IOException; -import javax.ws.rs.core.Response; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.onap.policy.api.main.PolicyApiApplication; -import org.onap.policy.api.main.rest.utils.CommonTestRestController; -import org.onap.policy.common.utils.security.SelfSignedKeyStore; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.server.LocalServerPort; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = PolicyApiApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@ActiveProfiles({ "test", "stub" }) -@DirtiesContext(classMode = ClassMode.AFTER_CLASS) -public class ApisRestControllerStubTest extends CommonTestRestController { - protected static final String APP_JSON = "application/json"; - protected static final String APP_YAML = "application/yaml"; - - @LocalServerPort - private int apiPort; - - private static SelfSignedKeyStore keystore; - - - @BeforeClass - public static void setupParameters() throws IOException, InterruptedException { - keystore = new SelfSignedKeyStore(); - } - - @DynamicPropertySource - static void registerPgProperties(DynamicPropertyRegistry registry) { - registry.add("server.ssl.enabled", () -> "true"); - registry.add("server.ssl.key-store", () -> keystore.getKeystoreName()); - registry.add("server.ssl.key-store-password", () -> SelfSignedKeyStore.KEYSTORE_PASSWORD); - registry.add("server.ssl.key-store-type", () -> "PKCS12"); - registry.add("server.ssl.key-alias", () -> "policy@policy.onap.org"); - registry.add("server.ssl.key-password", () -> SelfSignedKeyStore.PRIVATE_KEY_PASSWORD); - } - - @Test - public void testStubbedGet() throws Exception { - checkStubJson("policies"); - checkStubJson("policies/policyname/versions/1.0.2"); - checkStubJson("nodetemplates"); - checkStubJson("nodetemplates/k8stemplate/versions/1.0.0"); - checkStubJson("policytypes"); - checkStubJson("policytypes/380d5cb1-e43d-45b7-b10b-ebd15dfabd16/versions/latest"); - checkStubJson("statistics"); - checkStubJson("healthcheck"); - } - - private void checkStubJson(String url) throws Exception { - var response = super.readResource(url, APP_JSON, apiPort); - assertNotNull(response); - assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); - var responseYaml = super.readResource(url, APP_YAML, apiPort); - assertEquals(Response.Status.NOT_IMPLEMENTED.getStatusCode(), responseYaml.getStatus()); - } - -} -- cgit 1.2.3-korg