From 015691cae16b4c6913cf7caf727011280308ac8b Mon Sep 17 00:00:00 2001 From: "ning.xi" Date: Tue, 30 Jul 2019 00:31:18 +0000 Subject: integration test for execution property rest API Issue-ID: POLICY-1936 Change-Id: Ifc720cd320f5eced2f3c039b2ce6442387de240b Signed-off-by: ning.xi --- .../restclient/TestExecutionPropertyRest.java | 233 +++++++++++++++++++++ .../adapt/restclient/TestRestClientEndpoint.java | 92 +++++++- 2 files changed, 318 insertions(+), 7 deletions(-) create mode 100644 testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestExecutionPropertyRest.java (limited to 'testsuites/integration/integration-uservice-test/src/test/java') diff --git a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestExecutionPropertyRest.java b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestExecutionPropertyRest.java new file mode 100644 index 000000000..0ba41db81 --- /dev/null +++ b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestExecutionPropertyRest.java @@ -0,0 +1,233 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 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.apex.testsuites.integration.uservice.adapt.restclient; + +import static org.junit.Assert.assertTrue; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.net.URI; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.core.Response; +import org.glassfish.grizzly.http.server.HttpServer; +import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; +import org.glassfish.jersey.server.ResourceConfig; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain; +import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities; +import org.onap.policy.apex.service.engine.main.ApexMain; +import org.onap.policy.common.utils.network.NetworkUtil; +import org.slf4j.ext.XLogger; +import org.slf4j.ext.XLoggerFactory; + +/** + * This class runs integration tests for execution property in restClient. + */ +public class TestExecutionPropertyRest { + + private static final XLogger LOGGER = XLoggerFactory.getXLogger(TestExecutionPropertyRest.class); + + private static final String BASE_URI = "http://localhost:32801/TestExecutionRest"; + private static HttpServer server; + + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); + + private final PrintStream stdout = System.out; + private final PrintStream stderr = System.err; + + /** + * Compile the policy. + */ + @BeforeClass + public static void compilePolicy() { + // @formatter:off + final String[] cliArgs = { + "-c", + "src/test/resources/policies/executionproperties/policy/ExecutionPropertiesRestTestPolicyModel.apex", + "-l", + "target/ExecutionPropertiesRestTestPolicyModel.log", + "-o", + "target/ExecutionPropertiesRestTestPolicyModel.json" + }; + // @formatter:on + + new ApexCommandLineEditorMain(cliArgs); + } + + /** + * Sets the up. + * + * @throws Exception the exception + */ + @BeforeClass + public static void setUp() throws Exception { + final ResourceConfig rc = new ResourceConfig(TestRestClientEndpoint.class); + server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc); + + if (NetworkUtil.isTcpPortOpen(BASE_URI, 32801, 1, 1L)) { + throw new IllegalStateException("port " + 32801 + " is still in use"); + } + + } + + /** + * Tear down. + * + * @throws Exception the exception + */ + @AfterClass + public static void tearDown() throws Exception { + server.shutdown(); + } + + /** + * Clear relative file root environment variable. + */ + @Before + public void clearRelativeFileRoot() { + System.clearProperty("APEX_RELATIVE_FILE_ROOT"); + } + + /** + * Test Bad Url tag in Parameter . + */ + @Test + public void testBadUrl() throws Exception { + System.setOut(new PrintStream(outContent)); + System.setErr(new PrintStream(errContent)); + + final String[] args = {"src/test/resources/testdata/executionproperties/RESTEventBadUrl.json"}; + final ApexMain apexMain = new ApexMain(args); + + ThreadUtilities.sleep(500); + + apexMain.shutdown(); + + final String outString = outContent.toString(); + + System.setOut(stdout); + System.setErr(stderr); + + LOGGER.info("testReplaceUrlTag-OUTSTRING=\n" + outString + "\nEnd-TagUrl"); + assertTrue(outString.contains("no proper URL has been set for event sending on REST client")); + } + + /** + * Test Not find value for tags in Url . + */ + @Test + public void testNoValueSetForTagUrl() throws Exception { + System.setOut(new PrintStream(outContent)); + System.setErr(new PrintStream(errContent)); + + final String[] args = {"src/test/resources/testdata/executionproperties/RESTEventNoValueSetForTag.json"}; + final ApexMain apexMain = new ApexMain(args); + + ThreadUtilities.sleep(1000); + + apexMain.shutdown(); + + final String outString = outContent.toString(); + + System.setOut(stdout); + System.setErr(stderr); + + LOGGER.info("testReplaceUrlTag-OUTSTRING=\n" + outString + "\nEnd-TagUrl"); + assertTrue(outString.contains("key\"Number\"specified on url \"http://localhost:32801/TestExecutionRest/apex" + + "/event/{tagId}/{Number}\"not found in execution properties passed by the current policy")); + } + + /** + * Test Bad Http code Filter. + */ + @Test + public void testBadCodeFilter() throws Exception { + System.setOut(new PrintStream(outContent)); + System.setErr(new PrintStream(errContent)); + + final String[] args = {"src/test/resources/testdata/executionproperties/RESTEventBadHttpCodeFilter.json"}; + final ApexMain apexMain = new ApexMain(args); + + ThreadUtilities.sleep(500); + + apexMain.shutdown(); + + final String outString = outContent.toString(); + + System.setOut(stdout); + System.setErr(stderr); + + LOGGER.info("testReplaceUrlTag-OUTSTRING=\n" + outString + "\nEnd-TagUrl"); + assertTrue(outString.contains("failed with status code 500 and message \"{\"testToRun\": FetchHttpCode}")); + } + + /** + * Test Http code filter set and tag Url are transformed correctly. + */ + @Test + public void testReplaceUrlTag() throws Exception { + final Client client = ClientBuilder.newClient(); + + final String[] args = {"src/test/resources/testdata/executionproperties/RESTHttpCodeFilterSetToTagUrlOK.json"}; + final ApexMain apexMain = new ApexMain(args); + ThreadUtilities.sleep(1000); + apexMain.shutdown(); + + final String outString = outContent.toString(); + System.setOut(stdout); + System.setErr(stderr); + + Response response = null; + response = client.target("http://localhost:32801/TestExecutionRest/apex/event/GetProperUrl") + .request("application/json").get(); + + LOGGER.info("testReplaceUrlTag-OUTSTRING=\n" + outString + "\nEnd-TagUrl"); + final String responseEntity = response.readEntity(String.class); + assertTrue(responseEntity.contains("\"PostProperUrl\": 1")); + } + + /** + * Test Http code filter set and multi-tag Url are transformed correctly. + */ + @Test + public void testReplaceUrlMultiTag() throws Exception { + final Client client = ClientBuilder.newClient(); + final String[] args = + {"src/test/resources/testdata/executionproperties/RESTHttpCodeFilterSetToMultiTagUrlOK.json"}; + final ApexMain apexMain = new ApexMain(args); + ThreadUtilities.sleep(1500); + apexMain.shutdown(); + + System.setOut(stdout); + System.setErr(stderr); + Response response = null; + response = client.target("http://localhost:32801/TestExecutionRest/apex/event/GetProperUrl") + .request("application/json").get(); + final String responseEntity = response.readEntity(String.class); + LOGGER.info("testReplaceUrlMultiTag-OUTSTRING=\n" + responseEntity + "\nEnd-MultiTagUrl"); + assertTrue(responseEntity.contains("\"PostProperUrl\": 3")); + } + +} diff --git a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestRestClientEndpoint.java b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestRestClientEndpoint.java index 906b20bf2..f19410fb5 100644 --- a/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestRestClientEndpoint.java +++ b/testsuites/integration/integration-uservice-test/src/test/java/org/onap/policy/apex/testsuites/integration/uservice/adapt/restclient/TestRestClientEndpoint.java @@ -1,19 +1,20 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * Copyright (C) 2019 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========================================================= */ @@ -22,28 +23,26 @@ package org.onap.policy.apex.testsuites.integration.uservice.adapt.restclient; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; - import com.google.gson.Gson; - import java.util.Map; import java.util.Random; - import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.core.Response; + /** * The Class TestRestClientEndpoint. */ @Path("/apex") public class TestRestClientEndpoint { - private static int postMessagesReceived = 0; private static int putMessagesReceived = 0; private static int statMessagesReceived = 0; private static int getMessagesReceived = 0; + private static int tagUrlToProperUrl = 0; /** * Service get stats. @@ -160,4 +159,83 @@ public class TestRestClientEndpoint { return Response.status(200).entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build(); } + + /** + * Service put request codeFilter Set. + * + * @return the response + */ + @Path("/event/CodeFilterSet") + @PUT + public Response serviceCodeFilterSet() { + putMessagesReceived++; + tagUrlToProperUrl = 1; + return Response.status(200) + .entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": " + + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "PostProperUrl" + + tagUrlToProperUrl + "}") + .build(); + } + + /** + * Service put request codeFilter Default 200. + * + * @return the response + */ + @Path("/event/CodeFilterDefault") + @PUT + public Response serviceCodeFilterDefault() { + putMessagesReceived++; + tagUrlToProperUrl = 2; + return Response.status(200) + .entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": " + + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "PostProperUrl" + + tagUrlToProperUrl + "}") + .build(); + } + + /** + * Service put request codeFilter Set. + * + * @return the response + */ + @Path("/event/CodeFilterSet/3") + @PUT + public Response serviceCodeFilterSetForMultiTag() { + putMessagesReceived++; + tagUrlToProperUrl = 3; + return Response.status(200) + .entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": " + + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "PostProperUrl" + + tagUrlToProperUrl + "}") + .build(); + } + + /** + * Service get tagged Url request access status. + * + * @return the response + */ + @Path("/event/GetProperUrl") + @GET + public Response serviceGetProperUrl() { + statMessagesReceived++; + if (tagUrlToProperUrl == 1) { + return Response.status(200).entity("{\"PostProperUrl\": " + tagUrlToProperUrl + "}").build(); + } else { + return Response.status(500).entity("{\"PostProperUrl\": " + tagUrlToProperUrl + "}").build(); + } + } + + /** + * Service fetch Http Code event. + * + * @return the response + */ + @Path("/event/FetchHttpCode") + @GET + public Response serviceFetchHttpCode() { + statMessagesReceived++; + return Response.status(500).entity("{\"testToRun\": " + "FetchHttpCode" + "}").build(); + } } -- cgit 1.2.3-korg