diff options
author | danielhanrahan <daniel.hanrahan@est.tech> | 2022-01-28 11:41:38 +0000 |
---|---|---|
committer | danielhanrahan <daniel.hanrahan@est.tech> | 2022-02-23 09:50:14 +0000 |
commit | 4a50604b767176aa323acae366fa762015a7f9f6 (patch) | |
tree | 065f6be626573df3da5df23b3b2d2533cb9ed819 /gui-editors/gui-editor-apex/src/test/java | |
parent | 6e3d850c1b6efda12a70a111c8734972c99e3db5 (diff) |
Apex Editor using Spring Boot
Changed Apex Editor to use Spring Boot (MVC)
Changed all tests to use JUnit 5
Added more tests for policy upload feature
Updated JS files to reflect JSON encoding change
Added Apex Editor README
Changed rest path to /policy/gui/v1/apex/editor
Issue-ID: POLICY-3896
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: I10f1ee3c40244a822a7032b4b24cb02060698fc3
Diffstat (limited to 'gui-editors/gui-editor-apex/src/test/java')
14 files changed, 1040 insertions, 1249 deletions
diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ExceptionsTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/SpringContextTest.java index 9c83fdc..8422f82 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ExceptionsTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/SpringContextTest.java @@ -1,7 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Copyright (C) 2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,25 +18,16 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.gui.editors.apex.rest; +package org.onap.policy.gui.editors.apex; -import static org.junit.Assert.assertNotNull; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; -import java.io.IOException; -import org.junit.Test; - -/** - * Test Apex Editor Exceptions. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ExceptionsTest { +@SpringBootTest(classes = ApexEditor.class) +class SpringContextTest { + @SuppressWarnings("java:S2699") @Test - public void test() { - assertNotNull(new ApexEditorException("Message")); - assertNotNull(new ApexEditorException("Message", "Object of Exception")); - assertNotNull(new ApexEditorException("Message", new IOException())); - assertNotNull(new ApexEditorException("Message", new IOException(), "Object of Exception")); + void contextLoads() { } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParametersTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParametersTest.java deleted file mode 100644 index 88e2707..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorParametersTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. - * Modifications Copyright (C) 2021 Bell Canada. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.Test; - -public class ApexEditorParametersTest { - - @Test - public void validate() { - final var apexEditorParameters = new ApexEditorParameters(); - apexEditorParameters.setTimeToLive(-3); - apexEditorParameters.setRestPort(-3); - apexEditorParameters.setUploadUrl("what://ever"); - final var actual = apexEditorParameters.validate(); - assertThat(actual).contains("upload-url parameter is an invalid") - .contains("upload-userid parameter must be specified") - .contains("port must be between") - .contains("time to live must be greater than -1"); - } -} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java deleted file mode 100644 index 717da11..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/ApexEditorStartupTest.java +++ /dev/null @@ -1,360 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * Modifications Copyright (C) 2021 AT&T Intellectual Property. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.gui.editors.apex.rest; - -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.awaitility.Awaitility.await; -import static org.junit.Assert.assertTrue; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.concurrent.TimeUnit; -import org.junit.Test; -import org.onap.policy.common.parameters.ParameterService; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState; - -/** - * Test Apex Editor Startup. - */ -public class ApexEditorStartupTest { - // CHECKSTYLE:OFF: MagicNumber - - /** - * Test no args. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testNoArgs() throws IOException, InterruptedException { - final String[] args = new String[] {}; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("help=false")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("restPort=18989")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=-1")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("listenAddress=localhost")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("uploadUrl=null")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("uploadUserid=null")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test bad arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg0() throws IOException, InterruptedException { - final String[] args = new String[] { "12321" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameter error, too many command line arguments specified : [12321]"); - } - - /** - * Test bad arg 1. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg1() throws IOException, InterruptedException { - final String[] args = new String[] { "12321 12322 12323" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameter error, too many command line arguments specified : [12321 12322 12323]"); - } - - /** - * Test bad arg 2. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg2() throws IOException, InterruptedException { - final String[] args = new String[] { "-z" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class).hasMessageContaining( - "parameter error, invalid command line arguments specified : Unrecognized option: -z"); - } - - /** - * Test bad arg 3. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg3() throws IOException, InterruptedException { - final String[] args = new String[] { "--hello" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class).hasMessageContaining( - "parameter error, invalid command line arguments specified : Unrecognized option: --hello"); - } - - /** - * Test bad arg 4. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadArg4() throws IOException, InterruptedException { - final String[] args = new String[] { "-l", "+++++" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, listen address is not valid. " - + "Illegal character in hostname at index 7: http://+++++:18989/apexservices/"); - } - - /** - * Test help 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testHelp0() throws IOException, InterruptedException { - final String[] args = new String[] { "--help" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("usage: org.onap.policy.gui.editors.apex.rest.ApexEditorMain [options...]"); - } - - /** - * Test help 1. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testHelp1() throws IOException, InterruptedException { - final String[] args = new String[] { "-h" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("usage: org.onap.policy.gui.editors.apex.rest.ApexEditorMain [options...]"); - } - - /** - * Test port arg. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortArgShJo() throws IOException, InterruptedException { - final String[] args = new String[] { "-p12321" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("localhost:12321")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port arg. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortArgShSe() throws IOException, InterruptedException { - final String[] args = new String[] { "-p", "12321" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("localhost:12321")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port arg. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortArgSpace() throws IOException, InterruptedException { - final String[] args = new String[] { "-p 12321" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameter error, error parsing argument \"port\" :For input string: \" 12321\""); - } - - /** - * Test bad port arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadPortArgs0() throws IOException, InterruptedException { - final String[] args = new String[] { "-p0" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); - } - - /** - * Test bad port arg 1023. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadPortArgs1023() throws IOException, InterruptedException { - final String[] args = new String[] { "-p1023" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); - } - - /** - * Test bad port arg 65536. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testBadPortArgs65536() throws IOException, InterruptedException { - final String[] args = new String[] { "-p65536" }; - - assertThatThrownBy(() -> runEditor(args)).isInstanceOf(ApexEditorParameterException.class) - .hasMessageContaining("parameters invalid, port must be between 1024 and 65535"); - } - - /** - * Test TTL arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testTtlArg0() throws IOException, InterruptedException { - final String[] args = new String[] { "-t10" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test TTL arg 10. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testTtlArg1() throws IOException, InterruptedException { - final String[] args = new String[] { "-t", "10", "-l", "localhost" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port TTL arg 0. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortTtlArg0() throws IOException, InterruptedException { - final String[] args = new String[] { "-t", "10", "-p", "12321" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Test port TTL arg 10. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException if the test is interrupted - */ - @Test - public void testPortTtlArg1() throws IOException, InterruptedException { - final String[] args = new String[] { "--time-to-live", "10", "--port", "12321", "--listen", "127.0.0.1" }; - - final String outString = runEditor(args); - - assertTrue(outString.startsWith("Apex Editor REST endpoint (ApexEditorMain:")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("State=RUNNING) started")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").contains("timeToLive=10")); - assertTrue(outString.replaceAll("[\\r?\\n]+", " ").endsWith(" State=STOPPED) shut down ")); - } - - /** - * Run the editor for tests. - * - * @param args the args - * @return the output string - * @throws InterruptedException if the test is interrupted - */ - private String runEditor(final String[] args) throws InterruptedException { - ParameterService.clear(); - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - - final var editorMain = new ApexEditorMain(args, outStream); - - // This test must be started in a thread because we want to intercept the output - // in cases where the editor is - // started infinitely - final var testThread = new Runnable() { - @Override - public void run() { - editorMain.init(); - } - }; - new Thread(testThread).start(); - await().atMost(15000, TimeUnit.MILLISECONDS).until(() -> !(editorMain.getState().equals(EditorState.READY) - || editorMain.getState().equals(EditorState.INITIALIZING))); - editorMain.shutdown(); - final String outString = outBaStream.toString(); - System.out.println(outString); - return outString; - } -} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java index 3506dab..f97897a 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/RestInterfaceTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -22,111 +22,67 @@ package org.onap.policy.gui.editors.apex.rest; -import static org.awaitility.Awaitility.await; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.concurrent.TimeUnit; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation.Builder; -import javax.ws.rs.client.WebTarget; -import javax.xml.bind.JAXBException; -import org.eclipse.persistence.jpa.jpql.Assert; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.onap.policy.apex.model.basicmodel.concepts.ApexException; import org.onap.policy.apex.model.basicmodel.handling.ApexModelReader; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.policymodel.concepts.AxPolicy; -import org.onap.policy.common.parameters.ParameterService; +import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.resources.ResourceUtils; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain.EditorState; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; /** * The RestInterface Test. */ -public class RestInterfaceTest { - // CHECKSTYLE:OFF: MagicNumber +@SpringBootTest(classes = ApexEditor.class) +@AutoConfigureMockMvc +class RestInterfaceTest { - private static final String TESTMODELFILE = "models/PolicyModel.yaml"; - private static final String TESTPORTNUM = "18989"; - private static final long MAX_WAIT = 15000; // 15 sec - private static final InputStream SYSIN = System.in; - private static final String[] EDITOR_MAIN_ARGS = new String[] { "-p", TESTPORTNUM }; + @Autowired + private MockMvc mvc; - private static ApexEditorMain editorMain; - private static WebTarget target; + private static final String TESTMODELFILE = "models/PolicyModel.yaml"; private static String localModelString = null; /** * Sets up the tests. * - * @throws Exception if an error happens */ - @BeforeClass - public static void setUp() throws Exception { - ParameterService.clear(); - // Start the editor - editorMain = new ApexEditorMain(EDITOR_MAIN_ARGS, System.out); - // prevent a stray stdin value from killing the editor - final var input = new ByteArrayInputStream("".getBytes()); - System.setIn(input); - // Init the editor in a separate thread - final var testThread = new Runnable() { - @Override - public void run() { - editorMain.init(); - } - }; - new Thread(testThread).start(); - // wait until editorMain is in state RUNNING - await().atMost(MAX_WAIT, TimeUnit.MILLISECONDS).until(() -> !(editorMain.getState().equals(EditorState.READY) - || editorMain.getState().equals(EditorState.INITIALIZING))); - - if (editorMain.getState().equals(EditorState.STOPPED)) { - Assert.fail("Rest endpoint (" + editorMain + ") shut down before it could be used"); - } - - // create the client - final Client c = ClientBuilder.newClient(); - // Create the web target - target = c.target(new ApexEditorParameters().getBaseUri()); - + @BeforeAll + static void setUp() { // load a test model locally localModelString = ResourceUtils.getResourceAsString(TESTMODELFILE); - - // initialize a session ID - createNewSession(); } /** - * Clean up streams. - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception + * Test to see that the message create Model with model id -1 . */ - @AfterClass - public static void cleanUpStreams() throws IOException, InterruptedException { - editorMain.shutdown(); - // wait until editorMain is in state STOPPED - await().atMost(MAX_WAIT, TimeUnit.MILLISECONDS).until(() -> editorMain.getState().equals(EditorState.STOPPED)); - System.setIn(SYSIN); + @Test + void createSession() throws Exception { + createNewSession(); } /** - * Test to see that the message create Model with model id -1 . + * Helper method to invoke rest call using mock mvc, and return ApexApiResult. */ - @Test - public void createSession() { - createNewSession(); + private ApexApiResult apexRest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + var response = mvc.perform(requestBuilder).andReturn().getResponse(); + return new StandardCoder().decode(response.getContentAsString(), ApexApiResult.class); } /** @@ -134,8 +90,8 @@ public class RestInterfaceTest { * * @return the session ID */ - private static int createNewSession() { - final ApexApiResult responseMsg = target.path("editor/-1/Session/Create").request().get(ApexApiResult.class); + private int createNewSession() throws Exception { + final ApexApiResult responseMsg = apexRest(get("/policy/gui/v1/apex/editor/-1/Session/Create")); assertEquals(ApexApiResult.Result.SUCCESS, responseMsg.getResult()); assertEquals(1, responseMsg.getMessages().size()); return Integer.parseInt(responseMsg.getMessages().get(0)); @@ -147,28 +103,27 @@ public class RestInterfaceTest { * @param sessionId the session ID * @param modelAsJsonString the model as json string */ - private void uploadPolicy(final int sessionId, final String modelAsJsonString) { - final Builder requestbuilder = target.path("editor/" + sessionId + "/Model/Load").request(); - final ApexApiResult responseMsg = requestbuilder.put(Entity.json(modelAsJsonString), ApexApiResult.class); + private void uploadPolicy(final int sessionId, final String modelAsJsonString) throws Exception { + final ApexApiResult responseMsg = apexRest(put("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Load") + .content(modelAsJsonString).contentType(APPLICATION_JSON)); assertTrue(responseMsg.isOk()); } /** - * Create a new session, Upload a test policy model, then get a policy, parse it, and compare it to the same policy + * Create a new session, Upload a test policy model, then get a policy, parse it, and compare it to the same policy * in the original model. * * @throws ApexException if there is an Apex Error - * @throws JAXBException if there is a JaxB Error **/ @Test - public void testUploadThenGet() throws ApexException, JAXBException { + void testUploadThenGet() throws Exception { final int sessionId = createNewSession(); uploadPolicy(sessionId, localModelString); - final ApexApiResult responseMsg = target.path("editor/" + sessionId + "/Policy/Get") - .queryParam("name", "policy").queryParam("version", "0.0.1").request().get(ApexApiResult.class); + final ApexApiResult responseMsg = apexRest(get("/policy/gui/v1/apex/editor/" + sessionId + "/Policy/Get") + .queryParam("name", "policy").queryParam("version", "0.0.1")); assertTrue(responseMsg.isOk()); // The string in responseMsg.Messages[0] is a JSON representation of a AxPolicy diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java index 359dbcc..e5f24ff 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/ApexEditorRestResourceTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020-2021 Nordix Foundation. + * Modifications Copyright (C) 2020-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,312 +21,364 @@ package org.onap.policy.gui.editors.apex.rest.handling; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.IOException; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.MediaType; -import org.glassfish.jersey.media.multipart.MultiPartFeature; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.test.JerseyTest; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.Test; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; +import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.resources.TextFileUtils; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; /** * Test Apex Editor Rest Resource. * * @author Liam Fallon (liam.fallon@ericsson.com) */ -public class ApexEditorRestResourceTest extends JerseyTest { - @Override - protected Application configure() { - return new ResourceConfig(ApexEditorRestResource.class).register(MultiPartFeature.class); - } +@SpringBootTest(classes = ApexEditor.class) +@AutoConfigureMockMvc +class ApexEditorRestResourceTest { + + private static final String BASE_URL = "/policy/gui/v1/apex/editor/{sessionId}"; + + @Autowired + private MockMvc mvc; + + @Autowired + private RestSessionHandler sessionHandler; @Test - public void testSessionCreate() { - ApexApiResult result = target("editor/-2/Session/Create").request().get(ApexApiResult.class); + void testSessionCreate() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -2)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + final int corruptSessionId = createCorruptSession(); - target("editor/" + corruptSessionId + "/Model/Analyse").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Analyse", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Analyse").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Analyse", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/Analyse").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Analyse", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Analyse").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Analyse", 12345)); assertEquals(Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Validate", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/-12345/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", 12345)); assertEquals(Result.FAILED, result.getResult()); final String modelString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002699\"," + "\"description\" : \"A description of the model\"" + "}"; - final Entity<String> csEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/-12345/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", 1234545) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Model/Create", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Create").request().post(csEntity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Model/Create", corruptSessionId) + .content(modelString).contentType(APPLICATION_JSON)); - result = target("editor/-12345/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/-12345/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", 1234545) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Update", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Update").request().put(csEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Update", corruptSessionId) + .content(modelString).contentType(APPLICATION_JSON)); - target("editor/" + corruptSessionId + "/Model/GetKey").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/GetKey", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/GetKey").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/GetKey", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/GetKey").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/GetKey", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/GetKey").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/GetKey", 12345)); assertEquals(Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Get").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Get", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Get", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Get", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Get", 12345)); assertEquals(Result.FAILED, result.getResult()); - String resultString = target("editor/" + corruptSessionId + "/Model/Download").request().get(String.class); + String resultString = requestString(get(BASE_URL + "/Model/Download", corruptSessionId)); assertEquals("", resultString); - resultString = target("editor/" + sessionId + "/Model/Download").request().get(String.class); + resultString = requestString(get(BASE_URL + "/Model/Download", sessionId)); assertNotNull(resultString); } @Test - public void testSessionCreateExt() { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testSessionCreateExt() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - target("editor/-1/Session/Create").request().get(ApexApiResult.class); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + apexRequest(get(BASE_URL + "/Session/Create", -1)); + final int corruptSessionId = createCorruptSession(); - String resultString = target("editor/-12345/Model/Download").request().get(String.class); + String resultString = requestString(get(BASE_URL + "/Model/Download", -12345)); assertEquals("", resultString); - resultString = target("editor/12345/Model/Download").request().get(String.class); + resultString = requestString(get(BASE_URL + "/Model/Download", 12345)); assertEquals("", resultString); - target("editor/" + corruptSessionId + "/KeyInformation/Get").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/KeyInformation/Get", corruptSessionId)); - result = target("editor/" + sessionId + "/KeyInformation/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/KeyInformation/Get", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/KeyInformation/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/KeyInformation/Get", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/KeyInformation/Get").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/KeyInformation/Get", 12345)); assertEquals(Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Delete").request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/Model/Delete", corruptSessionId)); - result = target("editor/" + sessionId + "/Model/Delete").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Model/Delete", sessionId)); assertEquals(Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Model/Delete").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Model/Delete", -12345)); assertEquals(Result.FAILED, result.getResult()); - result = target("editor/12345/Model/Delete").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Model/Delete", 12345)); assertEquals(Result.FAILED, result.getResult()); } @Test - public void testContextSchema() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextSchema() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + final int corruptSessionId = createCorruptSession(); - result = target("editor/-12345/Validate/ContextSchema").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Validate/ContextSchema").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/ContextSchema", corruptSessionId)); - result = target("editor/" + sessionId + "/Validate/ContextSchema").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString) + .contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/ContextSchema/Get", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); String csString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"schemaFlavour\" : \"Java\"," + "\"schemaDefinition\" : \"java.lang.String\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> csEntity = Entity.entity(csString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextSchema/Create", -12345) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextSchema/Create", 1234545) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextSchema/Create", sessionId) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Create").request().post(csEntity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/ContextSchema/Create", corruptSessionId) + .content(csString).contentType(APPLICATION_JSON)); csString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"schemaFlavour\" : \"Java\"," + "\"schemaDefinition\" : \"my.perfect.String\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - csEntity = Entity.entity(csString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextSchema/Update", -12345) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextSchema/Update", 1234545) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextSchema/Update", sessionId) + .content(csString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Update").request().put(csEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/ContextSchema/Update", corruptSessionId) + .content(csString).contentType(APPLICATION_JSON)); - result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", "NonExistant") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", "NonExistant") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextSchema/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/ContextSchema/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/ContextSchema").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextSchema", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextSchema/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/ContextSchema/Delete", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); - result = target("editor/-123345/ContextSchema/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextSchema/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextSchema/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testContextSchemaExt() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextSchemaExt() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/ContextSchema/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/ContextSchema/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/ContextSchema/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextSchema/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testContextAlbum() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextAlbum() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + final int corruptSessionId = createCorruptSession(); - result = target("editor/-12345/Validate/ContextAlbum").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Validate/ContextAlbum").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/ContextAlbum", corruptSessionId)); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String caString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," @@ -334,146 +386,173 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"itemSchema\" : {\"name\" : \"StringType\", \"version\" : \"0.0.1\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> caEntity = Entity.entity(caString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextAlbum/Create", -12345) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextAlbum/Create", 1234545) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/ContextAlbum/Create", sessionId) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextAlbum/Create").request().post(caEntity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/ContextAlbum/Create", corruptSessionId) + .content(caString).contentType(APPLICATION_JSON)); caString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"scope\" : \"Global\"," + "\"writeable\" : false," + "\"itemSchema\" : {\"name\" : \"StringType\", \"version\" : \"0.0.1\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - caEntity = Entity.entity(caString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextAlbum/Update", -12345) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextAlbum/Update", 1234545) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/ContextAlbum/Update", sessionId) + .content(caString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextAlbum/Update").request().put(caEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/ContextAlbum/Update", corruptSessionId) + .content(caString).contentType(APPLICATION_JSON)); - target("editor/" + corruptSessionId + "/ContextAlbum/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/ContextAlbum/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/ContextAlbum/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Validate/ContextAlbum").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/ContextAlbum", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/ContextAlbum/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/-123345/ContextAlbum/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/ContextAlbum/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/ContextAlbum/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/ContextAlbum/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testContextAlbumExt() throws IOException { - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + void testContextAlbumExt() throws Exception { + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/ContextAlbum/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/ContextAlbum/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testEvent() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testEvent() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-12345/Validate/Event").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Event").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - target("editor/" + corruptSessionId + "/Validate/Event").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/Event", corruptSessionId)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.yaml"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.yaml"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Event/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hiya\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"parameters\" : {}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing\"," + "\"version\" : \"0.0.2\"," @@ -483,8 +562,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"Par0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi\"," + "\"version\" : \"0.0.2\"," @@ -492,8 +571,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"target\" : \"end\"," + "\"parameters\" : {\"Par0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay\"," + "\"version\" : \"0.0.2\"," @@ -503,176 +582,204 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"Par0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.someone.elses.rainbow\"," + "\"source\" : \"start\"," + "\"target\" : \"finish\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Event/Update", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : null," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.someone.elses.rainbow\"," + "\"source\" : \"start\"," + "\"target\" : \"finish\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"NonExistantEvent\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.someone.elses.rainbow\"," + "\"source\" : \"start\"," + "\"target\" : \"finish\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testEventExt() { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testEventExt() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hiya\"," + "\"version\" : \"0.0.2\"," + "\"namespace\" : \"somewhere.over.the.rainbow\"," + "\"source\" : \"beginning\"," + "\"target\" : \"end\"," + "\"parameters\" : {}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Event/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Event/Create").request().post(entity, ApexApiResult.class); - target("editor/" + sessionId + "/Event/Update").request().put(entity, ApexApiResult.class); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(post(BASE_URL + "/Event/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Event/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(put(BASE_URL + "/Event/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Event/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", 12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/Event/Delete", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/-123345/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Event/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Event/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testTask() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testTask() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-12345/Validate/Task").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Task").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", sessionId)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); try { - target("editor/" + corruptSessionId + "/Validate/Task").request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Validate/Task", corruptSessionId)); } catch (final Exception e) { assertEquals("HTTP 500 Request failed.", e.getMessage()); } - result = target("editor/" + sessionId + "/Validate/Task").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Validate/Task").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Task", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - target("editor/" + corruptSessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Task/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hiya\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing\"," + "\"version\" : \"0.0.2\"," @@ -680,16 +787,16 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"IField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi\"," + "\"version\" : \"0.0.2\"," + "\"inputFields\" : {\"IField0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay\"," + "\"version\" : \"0.0.2\"," @@ -697,8 +804,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"IField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Howdy\"," + "\"version\" : \"0.0.2\"," @@ -706,8 +813,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"NotIField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing2\"," + "\"version\" : \"0.0.2\"," @@ -715,16 +822,16 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"OField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi2\"," + "\"version\" : \"0.0.2\"," + "\"outputFields\" : {\"OField0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay2\"," + "\"version\" : \"0.0.2\"," @@ -732,8 +839,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"localName\" : \"OField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Howdy2\"," + "\"version\" : \"0.0.2\"," @@ -741,45 +848,47 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"localName\" : \"NotOField0\", \"optional\" : false}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testTaskExt() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testTaskExt() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Task/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); + entityString = "{" + "\"name\" : \"HowsItGoing3\"," + "\"version\" : \"0.0.2\"," + "\"taskLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : \"lots of lemons," + " lots of lime\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi3\"," + "\"version\" : \"0.0.2\"," + "\"taskLogic\" : null," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay3\"," + "\"version\" : \"0.0.2\"," @@ -788,16 +897,16 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"taskLogic\" : {\"logicFlavour\" : \"UNDEFINED\", \"logic\" : \"lots of lemons," + " lots of lime\"}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Howdy3\"," + "\"version\" : \"0.0.2\"," + "\"taskLogic\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing4\"," + "\"version\" : \"0.0.2\"," @@ -805,199 +914,224 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"defaultValue\" : \"Parameter Defaultvalue\"}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi4\"," + "\"version\" : \"0.0.2\"," + "\"parameters\" : {\"Par0\" : null}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay4\"," + "\"version\" : \"0.0.2\"," + "\"parameters\" : {\"Par0\" : {\"parameterName\" : \"NotPar0\", \"defaultValue\" : " + "\"Parameter Defaultvalue\"}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Howdy4\"," + "\"version\" : \"0.0.2\"," + "\"parameters\" : {\"Par0\" : {\"parameterName\" : \"MyParameter\", \"defaultValue\" : null}}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HowsItGoing5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : [{\"name\" : \"contextAlbum0\", \"version\" : \"0.0.1\"}]," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hi5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : []," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"GoodDay5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : [{\"name\" : \"NonExistantType\", \"version\" : \"0.0.1\"}]," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Howdy5\"," + "\"version\" : \"0.0.2\"," + "\"contexts\" : [{\"name\" : null, \"version\" : \"0.0.1\"}]," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002799\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Task/Update", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : null," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"NonExistantEvent\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Task/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Task/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Task/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/-123345/Task/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Task/Get").queryParam("name", (String) null).queryParam("version", (String) null) - .request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Task/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Task/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Task/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", 12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testTaskExt_2() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testTaskExt_2() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); - target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); + apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/1234545/Task/Create").request().post(entity, ApexApiResult.class); - target("editor/" + sessionId + "/Task/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Task/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Task/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Task/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Task/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); - result = target("editor/-123345/Task/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Task/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Task/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Task/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Task/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } @Test - public void testPolicy() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testPolicy() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); assertEquals(Result.SUCCESS, result.getResult()); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - result = target("editor/-12345/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", -12345)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Validate").request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class); - result = target("editor/" + sessionId + "/Model/Validate").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Validate", corruptSessionId)); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Validate").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Model/Validate", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - - Entity<String> modelEntity = Entity.entity("Somewhere over the rainbow", MediaType.APPLICATION_JSON); - result = target("editor/" + -12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + String modelString = "Somewhere over the rainbow"; + result = apexRequest(put(BASE_URL + "/Model/Load", -12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + 12345 + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", 12345) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity("", MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = ""; + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + result = apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Event/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Event/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," @@ -1011,24 +1145,28 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_EXISTS, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"GoodTaSeeYa\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," + "\"states\" : null," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HelloAnother\"," + "\"version\" : \"0.0.2\"," @@ -1042,8 +1180,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello2\"," + "\"version\" : \"0.0.2\"," @@ -1057,8 +1195,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello3\"," + "\"version\" : \"0.0.2\"," @@ -1072,8 +1210,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello4\"," + "\"version\" : \"0.0.2\"," @@ -1086,8 +1224,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello5\"," + "\"version\" : \"0.0.2\"," @@ -1099,8 +1237,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"nextState\" : null" + " }" + " }," + " \"tasks\" : null" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello6\"," + "\"version\" : \"0.0.2\"," @@ -1114,8 +1252,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello7\"," + "\"version\" : \"0.0.2\"," @@ -1123,8 +1261,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "\"states\" : {" + " \"state\" : null" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello8\"," + "\"version\" : \"0.0.2\"," @@ -1139,8 +1277,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello9\"," + "\"version\" : \"0.0.2\"," @@ -1154,23 +1292,23 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); System.err.println(result); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testPolicyExt() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testPolicyExt() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1183,10 +1321,11 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Policy/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"HelloAnother\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1199,8 +1338,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"Hello10\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1213,8 +1352,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello11\"," + "\"version\" : \"0.0.2\"," @@ -1227,8 +1366,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"task\" : null," + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello12\"," + "\"version\" : \"0.0.2\"," @@ -1245,8 +1384,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello13\"," + "\"version\" : \"0.0.2\"," @@ -1263,8 +1402,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello14\"," + "\"version\" : \"0.0.2\"," @@ -1283,8 +1422,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello15\"," + "\"version\" : \"0.0.2\"," @@ -1302,8 +1441,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); entityString = "{" + "\"name\" : \"Hello16\"," + "\"version\" : \"0.0.2\"," @@ -1321,8 +1460,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello17\"," + "\"version\" : \"0.0.2\"," @@ -1344,8 +1483,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + "lots of lime\"}" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); entityString = "{" + "\"name\" : \"Hello18\"," + "\"version\" : \"0.0.2\"," @@ -1365,8 +1504,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"finalizers\" : {" + " \"sf0\" : null" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"Hello19\"," + "\"version\" : \"0.0.2\"," @@ -1387,8 +1526,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"sf0\" : {\"logicFlavour\" : \"LemonAndLime\", \"logic\" : null}" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + result = apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"HelloAnother\"," + "\"version\" : \"0.0.2\"," @@ -1402,19 +1541,23 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A better description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/-12345/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", -12345) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/1234545/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", 1234545) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Update").queryParam("firstStatePeriodic", "true").request() - .put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .queryParam("firstStatePeriodic", "true") + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Policy/Update", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : null," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1427,8 +1570,8 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A better description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); entityString = "{" + "\"name\" : \"IDontExist\"," + "\"version\" : \"0.0.2\"," @@ -1442,63 +1585,75 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A better description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - result = target("editor/" + sessionId + "/Policy/Update").request().put(entity, ApexApiResult.class); + result = apexRequest(put(BASE_URL + "/Policy/Update", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", sessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", "IDontExist") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", sessionId) + .queryParam("name", "IDontExist") + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-123345/Policy/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/123345/Policy/Get").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Policy/Get", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Get").queryParam("name", "Hello") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Policy/Get", corruptSessionId) + .queryParam("name", "Hello") + .queryParam("version", (String) null)); - result = target("editor/" + sessionId + "/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/-12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", -12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/12345/Validate/Event").queryParam("name", (String) null) - .queryParam("version", (String) null).request().get(ApexApiResult.class); + result = apexRequest(get(BASE_URL + "/Validate/Event", 12345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - target("editor/" + corruptSessionId + "/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + apexRequest(delete(BASE_URL + "/Policy/Delete", corruptSessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); - result = target("editor/-123345/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", -123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); } @Test - public void testPolicyExt_2() throws IOException { - final int corruptSessionId = ApexEditorRestResource.createCorruptSession(); + void testPolicyExt_2() throws Exception { + final int corruptSessionId = createCorruptSession(); - ApexApiResult result = target("editor/-1/Session/Create").request().get(ApexApiResult.class); + ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); final int sessionId = Integer.parseInt(result.getMessages().get(0)); - target("editor/" + corruptSessionId + "/Model/Validate").request().get(ApexApiResult.class); - target("editor/" + sessionId + "/Model/Validate").queryParam("name", "%%%$£") - .queryParam("version", (String) null).request().get(ApexApiResult.class); + apexRequest(get(BASE_URL + "/Model/Validate", corruptSessionId)); + apexRequest(get(BASE_URL + "/Model/Validate", sessionId) + .queryParam("name", "%%%$£") + .queryParam("version", (String) null)); final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); - Entity<String> modelEntity = Entity.entity(modelString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Model/Load").request().put(modelEntity, ApexApiResult.class); + apexRequest(put(BASE_URL + "/Model/Load", sessionId) + .content(modelString).contentType(APPLICATION_JSON)); String entityString = "{" + "\"name\" : \"Hello\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," @@ -1511,26 +1666,55 @@ public class ApexEditorRestResourceTest extends JerseyTest { + " \"outputType\" : \"DIRECT\"," + " \"outputName\" : \"so0\"" + " }" + " }" + " }" + "}," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - Entity<String> entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); - target("editor/" + corruptSessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); + apexRequest(post(BASE_URL + "/Policy/Create", corruptSessionId) + .content(entityString).contentType(APPLICATION_JSON)); entityString = "{" + "\"name\" : \"GoodTaSeeYa\"," + "\"version\" : \"0.0.2\"," + "\"template\" : \"somewhere.over.the.rainbow\"," + "\"firstState\" : \"state\"," + "\"states\" : null," + "\"uuid\" : \"1fa2e430-f2b2-11e6-bc64-92361f002671\"," + "\"description\" : \"A description of hello\"" + "}"; - entity = Entity.entity(entityString, MediaType.APPLICATION_JSON); - target("editor/" + sessionId + "/Policy/Create").request().post(entity, ApexApiResult.class); + apexRequest(post(BASE_URL + "/Policy/Create", sessionId) + .content(entityString).contentType(APPLICATION_JSON)); - result = target("editor/123345/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", 123345) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.FAILED, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Delete").queryParam("name", "Hello") - .queryParam("version", "0.0.2").request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", sessionId) + .queryParam("name", "Hello") + .queryParam("version", "0.0.2")); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); - result = target("editor/" + sessionId + "/Policy/Delete").queryParam("name", (String) null) - .queryParam("version", (String) null).request().delete(ApexApiResult.class); + result = apexRequest(delete(BASE_URL + "/Policy/Delete", sessionId) + .queryParam("name", (String) null) + .queryParam("version", (String) null)); assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); } + /* + * Make a request using MockMvc and return the response body as a string. + */ + private String requestString(MockHttpServletRequestBuilder requestBuilder) throws Exception { + return mvc.perform(requestBuilder).andReturn().getResponse().getContentAsString(); + } + + /* + * Make a request using MockMvc and return the decoded JSON response as an ApexApiResult. + */ + private ApexApiResult apexRequest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + String json = requestString(requestBuilder); + return new StandardCoder().decode(json, ApexApiResult.class); + } + + /* + * This method is used only for testing and is used to cause an exception on calls from unit test to test exception + * handling. + */ + private int createCorruptSession() throws Exception { + final ApexApiResult result = apexRequest(get(BASE_URL + "/Session/Create", -1)); + final int corruptSessionId = Integer.parseInt(result.getMessages().get(0)); + sessionHandler.setCorruptSession(corruptSessionId); + return corruptSessionId; + } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java index 7d193ce..26f3090 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/KeyInfoHandlerTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,23 +23,23 @@ package org.onap.policy.gui.editors.apex.rest.handling; import static org.assertj.core.api.Assertions.assertThat; import java.util.Random; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.onap.policy.apex.model.modelapi.ApexApiResult; import org.onap.policy.apex.model.modelapi.ApexModel; -public class KeyInfoHandlerTest { +class KeyInfoHandlerTest { private final Random random = new Random(); private KeyInfoHandler handler; - @Before - public void setUp() { + @BeforeEach + void setUp() { handler = new KeyInfoHandler(); } @Test - public void testExecuteRestCommand() { + void testExecuteRestCommand() { final var sessionId = random.nextInt(); final var session = new RestSession(sessionId); final var commandType = RestCommandType.EVENT; @@ -54,7 +54,7 @@ public class KeyInfoHandlerTest { } @Test - public void testExecuteRestCommandWithJsonString() { + void testExecuteRestCommandWithJsonString() { final var sessionId = random.nextInt(); final var session = new RestSession(sessionId); final var commandType = RestCommandType.EVENT; @@ -70,7 +70,7 @@ public class KeyInfoHandlerTest { } @Test - public void testExecuteRestCommandWithNameAndVersion() { + void testExecuteRestCommandWithNameAndVersion() { final var sessionId = random.nextInt(); final var session = new RestSession(sessionId); final var commandType = RestCommandType.EVENT; @@ -87,7 +87,7 @@ public class KeyInfoHandlerTest { } @Test - public void testExecuteRestCommandWithNameAndVersion2() { + void testExecuteRestCommandWithNameAndVersion2() { final var session = Mockito.mock(RestSession.class); final var commandType = RestCommandType.KEY_INFO; final var command = RestCommand.LIST; diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java index 121faa0..077deaf 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestSessionTest.java @@ -23,64 +23,51 @@ package org.onap.policy.gui.editors.apex.rest.handling; import static org.assertj.core.api.Assertions.assertThat; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.PrintStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.Random; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; -public class RestSessionTest { +class RestSessionTest { private int sessionId; private RestSession restSession; - @BeforeClass - public static void beforeClass() { - // Initialize ApexEditor - final String[] args = {"--time-to-live", "10", "--port", "12321", "--listen", "127.0.0.1"}; - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - new ApexEditorMain(args, outStream); - } - - @Before - public void setUp() { + @BeforeEach + void setUp() { sessionId = new Random().nextInt(); restSession = new RestSession(sessionId); } @Test - public void testGetSessionId() { + void testGetSessionId() { final var actual = restSession.getSessionId(); assertThat(actual).isEqualTo(sessionId); } @Test - public void testCommitChangesNoChanges() { + void testCommitChangesNoChanges() { final var apexApiResult = restSession.commitChanges(); assertThat(apexApiResult.isNok()).isTrue(); } @Test - public void testCommitChanges() { + void testCommitChanges() { restSession.editModel(); final var apexApiResult = restSession.commitChanges(); assertThat(apexApiResult.isOk()).isTrue(); } @Test - public void testDiscardChangesNotEdited() { + void testDiscardChangesNotEdited() { final var apexApiResult = restSession.discardChanges(); assertThat(apexApiResult.isNok()).isTrue(); } @Test - public void testDiscardChanges() { + void testDiscardChanges() { restSession.editModel(); final var apexApiResult = restSession.discardChanges(); assertThat(apexApiResult.isOk()).isTrue(); @@ -88,13 +75,13 @@ public class RestSessionTest { } @Test - public void testDownloadModel() { + void testDownloadModel() { final var actual = restSession.downloadModel(); assertThat(actual.isOk()).isTrue(); } @Test - public void testEditModel() { + void testEditModel() { final var original = restSession.getApexModelEdited(); final var apexApiResult = restSession.editModel(); final var apexModelEdited = restSession.getApexModelEdited(); @@ -106,14 +93,14 @@ public class RestSessionTest { } @Test - public void testEditModelAlreadyEdited() { + void testEditModelAlreadyEdited() { restSession.editModel(); final var apexApiResult = restSession.editModel(); assertThat(apexApiResult.isNok()).isTrue(); } @Test - public void testLoadFromString() throws IOException { + void testLoadFromString() throws IOException { restSession.editModel(); final var toscaPath = Path.of("src/test/resources/models/PolicyModel.yaml"); final var toscaString = Files.readString(toscaPath); @@ -124,7 +111,7 @@ public class RestSessionTest { } @Test - public void testLoadFromStringNoPolicies() throws IOException { + void testLoadFromStringNoPolicies() throws IOException { restSession.editModel(); final var toscaPath = Path.of("src/test/resources/models/PolicyModelNoPolicies.yaml"); final var toscaString = Files.readString(toscaPath); @@ -132,15 +119,4 @@ public class RestSessionTest { assertThat(apexApiResult.isNok()).isTrue(); assertThat(apexApiResult.getMessage()).contains("no policies"); } - - @Test - public void testUploadModel() throws IOException { - restSession.editModel(); - final var toscaPath = Path.of("src/test/resources/models/PolicyModel.yaml"); - final var toscaString = Files.readString(toscaPath); - restSession.loadFromString(toscaString); - final var apexApiResult = restSession.uploadModel(""); - assertThat(apexApiResult.isNok()).isTrue(); - assertThat(apexApiResult.getMessage()).contains("Model upload is disabled"); - } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java index 84876d5..9706ad7 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/RestUtilsTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,13 +23,13 @@ package org.onap.policy.gui.editors.apex.rest.handling; import static org.assertj.core.api.Assertions.assertThat; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.onap.policy.gui.editors.apex.rest.handling.bean.BeanModel; -public class RestUtilsTest { +class RestUtilsTest { @Test - public void getJsonParameters() { + void getJsonParameters() { final var name = RandomStringUtils.randomAlphabetic(3); final var uuid = RandomStringUtils.randomAlphabetic(4); final var desc = RandomStringUtils.randomAlphabetic(5); diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java index c8c0971..fde130d 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/bean/BeansTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation + * Modifications Copyright (C) 2020-2022 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,20 +22,20 @@ package org.onap.policy.gui.editors.apex.rest.handling.bean; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Test the beans. - * + * * @author Liam Fallon (liam.fallon@ericsson.com) */ -public class BeansTest { +class BeansTest { @Test - public void testBeans() { + void testBeans() { assertNotNull(new BeanEvent().toString()); assertNotNull(new BeanState().toString()); assertNotNull(new BeanContextAlbum().toString()); diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKeyTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKeyTest.java deleted file mode 100644 index 5d45db7..0000000 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/config/PolicyUploadPluginConfigKeyTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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.gui.editors.apex.rest.handling.config; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.Test; - -public class PolicyUploadPluginConfigKeyTest { - - @Test - public void getKeyUrl() { - final var actual = PolicyUploadPluginConfigKey.URL.getKey(); - assertThat(actual).isEqualTo("plugin.policy.upload.url"); - } - - @Test - public void getTypeUrl() { - final var actual = PolicyUploadPluginConfigKey.URL.getType(); - assertThat(actual).isEqualTo(String.class); - } - - @Test - public void getKeyEnable() { - final var actual = PolicyUploadPluginConfigKey.ENABLE.getKey(); - assertThat(actual).isEqualTo("plugin.policy.upload.enable"); - } - - @Test - public void getTypeEnable() { - final var actual = PolicyUploadPluginConfigKey.ENABLE.getType(); - assertThat(actual).isEqualTo(Boolean.class); - } -} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadDisabledTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadDisabledTest.java new file mode 100644 index 0000000..2388e8c --- /dev/null +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadDisabledTest.java @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 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.gui.editors.apex.rest.handling.plugin.upload; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.onap.policy.apex.model.modelapi.ApexApiResult; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.TextFileUtils; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; + +@SpringBootTest(classes = ApexEditor.class, + properties = "apex-editor.upload-url=") +@AutoConfigureMockMvc +class PolicyUploadDisabledTest { + + @Autowired + private MockMvc mvc; + + private int sessionId; + + @BeforeEach + void setUp() throws Exception { + createSession(); + loadModel(); + } + + @Test + void testModelUploadDisabled() throws Exception { + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Upload") + .queryParam("userId", "MyUser")); + assertEquals(ApexApiResult.Result.FAILED, result.getResult()); + assertThat(result.getMessage()).contains("Model upload is disabled"); + } + + private ApexApiResult apexRequest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + var response = mvc.perform(requestBuilder).andReturn().getResponse(); + return new StandardCoder().decode(response.getContentAsString(), ApexApiResult.class); + } + + private void createSession() throws Exception { + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/-1/Session/Create")); + sessionId = Integer.parseInt(result.getMessages().get(0)); + } + + private void loadModel() throws Exception { + final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + apexRequest(put("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Load") + .content(modelString).contentType(APPLICATION_JSON)); + } +} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadEnabledTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadEnabledTest.java new file mode 100644 index 0000000..4f4694a --- /dev/null +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadEnabledTest.java @@ -0,0 +1,101 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2022 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.gui.editors.apex.rest.handling.plugin.upload; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.springframework.http.MediaType.APPLICATION_JSON; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.method; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.onap.policy.apex.model.modelapi.ApexApiResult; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.TextFileUtils; +import org.onap.policy.gui.editors.apex.ApexEditor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.test.web.client.ExpectedCount; +import org.springframework.test.web.client.MockRestServiceServer; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.web.client.RestTemplate; + +@SpringBootTest(classes = ApexEditor.class, + properties = "apex-editor.upload-url=http://localhost:12345") +@AutoConfigureMockMvc +class PolicyUploadEnabledTest { + + @Autowired + private MockMvc mvc; + + @Autowired + private RestTemplate policyUploadRestTemplate; + + private MockRestServiceServer mockServer; + + private int sessionId; + + @BeforeEach + void setUp() throws Exception { + mockServer = MockRestServiceServer.createServer(policyUploadRestTemplate); + createSession(); + loadModel(); + } + + @Test + void testModelUpload() throws Exception { + mockServer.expect(ExpectedCount.once(), + requestTo("http://localhost:12345")) + .andExpect(method(HttpMethod.POST)) + .andExpect(content().contentType(APPLICATION_JSON)) + .andRespond(withStatus(HttpStatus.CREATED)); + + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Upload") + .queryParam("userId", "MyUser")); + assertEquals(ApexApiResult.Result.SUCCESS, result.getResult()); + + mockServer.verify(); + } + + private ApexApiResult apexRequest(MockHttpServletRequestBuilder requestBuilder) throws Exception { + var response = mvc.perform(requestBuilder).andReturn().getResponse(); + return new StandardCoder().decode(response.getContentAsString(), ApexApiResult.class); + } + + private void createSession() throws Exception { + ApexApiResult result = apexRequest(get("/policy/gui/v1/apex/editor/-1/Session/Create")); + sessionId = Integer.parseInt(result.getMessages().get(0)); + } + + private void loadModel() throws Exception { + final String modelString = TextFileUtils.getTextFileAsString("src/test/resources/models/PolicyModel.json"); + apexRequest(put("/policy/gui/v1/apex/editor/" + sessionId + "/Model/Load") + .content(modelString).contentType(APPLICATION_JSON)); + } +} diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java index 4525f42..df5452b 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/PolicyUploadHandlerTest.java @@ -21,84 +21,77 @@ package org.onap.policy.gui.editors.apex.rest.handling.plugin.upload; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.PrintStream; import java.nio.file.Files; import java.nio.file.Path; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.ResponseProcessingException; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; -import org.mockito.ArgumentMatchers; -import org.mockito.MockedStatic; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; -import org.onap.policy.gui.editors.apex.rest.ApexEditorMain; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpStatus; +import org.springframework.test.util.ReflectionTestUtils; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; -public class PolicyUploadHandlerTest { +@ExtendWith(MockitoExtension.class) +class PolicyUploadHandlerTest { - private static final String CMDLINE_UPLOAD_USERID = "MyUser"; + private static final String DEFAULT_UPLOAD_USER_ID = "MyUser"; + private static final String UPLOAD_URL = "http://127.0.0.1"; + + @Mock + private RestTemplate policyUploadRestTemplate; + + @InjectMocks private PolicyUploadHandler uploadHandler; + + @Captor + ArgumentCaptor<HttpEntity<UploadPolicyRequestDto>> dtoEntityCaptor; + private AxArtifactKey axArtifactKey; private String toscaServiceTemplate; - private MockedStatic<ClientBuilder> clientBuilderMockedStatic; - private ArgumentCaptor<Entity<UploadPolicyRequestDto>> dtoEntityCaptor; /** * Prepares test environment. * * @throws IOException where there is problem with reading the file. */ - @Before - public void setUp() throws IOException { - uploadHandler = new PolicyUploadHandler(); + @BeforeEach + void setUp() throws IOException { final var name = "a" + RandomStringUtils.randomAlphabetic(5); final var version = "0.0.1"; axArtifactKey = new AxArtifactKey(name, version); final var path = Path.of("src/test/resources/models/", "PolicyModel.json"); toscaServiceTemplate = Files.readString(path); - } - - /** - * Cleaning up after the test. - */ - @After - public void tearDown() { - if (clientBuilderMockedStatic != null) { - clientBuilderMockedStatic.close(); - } + ReflectionTestUtils.setField(uploadHandler, "uploadUrl", UPLOAD_URL); + ReflectionTestUtils.setField(uploadHandler, "defaultUserId", DEFAULT_UPLOAD_USER_ID); } @Test - public void testDoUploadNoUrl() { - final String[] args = {"--upload-userid", CMDLINE_UPLOAD_USERID}; - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - new ApexEditorMain(args, outStream); - + void testDoUploadNoUrl() { + ReflectionTestUtils.setField(uploadHandler, "uploadUrl", null); final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); assertThat(result.isNok()).isTrue(); - assertThat(result.getMessage()).contains("Model upload is disable"); + assertThat(result.getMessage()).contains("Model upload is disabled"); } @Test - public void testDoUploadConnectionError() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - Mockito.doThrow(ResponseProcessingException.class).when(response).getStatus(); - - prepareApexEditorMain(); + void testDoUploadConnectionError() { + when(policyUploadRestTemplate.postForObject(eq(UPLOAD_URL), any(HttpEntity.class), eq(String.class))) + .thenThrow(new RestClientException("connection error")); final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); @@ -107,27 +100,16 @@ public class PolicyUploadHandlerTest { } @Test - public void testDoResponse() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - - Mockito.doReturn(201).when(response).getStatus(); - - prepareApexEditorMain(); - + void testDoResponse() { final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); assertThat(result.isOk()).isTrue(); } @Test - public void testDoResponseErrorCode500() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - - Mockito.doReturn(500).when(response).getStatus(); - - prepareApexEditorMain(); + void testDoResponseErrorCode500() { + when(policyUploadRestTemplate.postForObject(eq(UPLOAD_URL), any(HttpEntity.class), eq(String.class))) + .thenThrow(new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR)); final var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); @@ -136,55 +118,32 @@ public class PolicyUploadHandlerTest { } @Test - public void testDoUploadUserId() { - final var response = Mockito.mock(Response.class); - mockRsHttpClient(response); - - Mockito.doReturn(201).when(response).getStatus(); - - prepareApexEditorMain(); - + void testDoUploadUserId() { // If uploadUserId is specified, that value should be in DTO. var result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", "OverrideUser"); assertThat(result.isOk()).isTrue(); - var dto = dtoEntityCaptor.getValue().getEntity(); + Mockito.verify(policyUploadRestTemplate) + .postForObject(eq(UPLOAD_URL), dtoEntityCaptor.capture(), eq(String.class)); + var dto = dtoEntityCaptor.getValue().getBody(); assertThat(dto.getUserId()).isEqualTo("OverrideUser"); + Mockito.reset(policyUploadRestTemplate); - // If uploadUserId is blank, the value from command line parameter 'upload-userid' is used. + // If uploadUserId is blank, the value from Spring config parameter 'apex-editor.upload-userid' is used. result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", ""); assertThat(result.isOk()).isTrue(); - dto = dtoEntityCaptor.getValue().getEntity(); - assertThat(dto.getUserId()).isEqualTo(CMDLINE_UPLOAD_USERID); + Mockito.verify(policyUploadRestTemplate) + .postForObject(eq(UPLOAD_URL), dtoEntityCaptor.capture(), eq(String.class)); + dto = dtoEntityCaptor.getValue().getBody(); + assertThat(dto.getUserId()).isEqualTo(DEFAULT_UPLOAD_USER_ID); + Mockito.reset(policyUploadRestTemplate); - // If uploadUserId is null, the value from command line parameter 'upload-userid' is used. + // If uploadUserId is null, the value from Spring config parameter 'apex-editor.upload-userid' is used. result = uploadHandler.doUpload(toscaServiceTemplate, axArtifactKey, "", null); assertThat(result.isOk()).isTrue(); - dto = dtoEntityCaptor.getValue().getEntity(); - assertThat(dto.getUserId()).isEqualTo(CMDLINE_UPLOAD_USERID); - } - - private void mockRsHttpClient(Response response) { - final var webTarget = Mockito.mock(WebTarget.class); - final var client = Mockito.mock(Client.class); - final var invocationBuilder = Mockito.mock(Invocation.Builder.class); - - - clientBuilderMockedStatic = Mockito.mockStatic(ClientBuilder.class); - - dtoEntityCaptor = ArgumentCaptor.forClass(Entity.class); - - Mockito.when(ClientBuilder.newClient()).thenReturn(client); - Mockito.when(client.target(ArgumentMatchers.anyString())).thenReturn(webTarget); - Mockito.when(webTarget.request(MediaType.APPLICATION_JSON)).thenReturn(invocationBuilder); - Mockito.when(webTarget.request(MediaType.APPLICATION_JSON)).thenReturn(invocationBuilder); - Mockito.when(invocationBuilder.post(dtoEntityCaptor.capture())).thenReturn(response); - } - - private void prepareApexEditorMain() { - final String[] args = {"--upload-userid", CMDLINE_UPLOAD_USERID, "--upload-url", "http://127.0.0.1"}; - final var outBaStream = new ByteArrayOutputStream(); - final var outStream = new PrintStream(outBaStream); - new ApexEditorMain(args, outStream); + Mockito.verify(policyUploadRestTemplate) + .postForObject(eq(UPLOAD_URL), dtoEntityCaptor.capture(), eq(String.class)); + dto = dtoEntityCaptor.getValue().getBody(); + assertThat(dto.getUserId()).isEqualTo(DEFAULT_UPLOAD_USER_ID); } } diff --git a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java index cb363e3..57e590b 100644 --- a/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java +++ b/gui-editors/gui-editor-apex/src/test/java/org/onap/policy/gui/editors/apex/rest/handling/plugin/upload/UploadPolicyRequestDtoTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,13 +24,13 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.Random; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Test; +import org.junit.jupiter.api.Test; -public class UploadPolicyRequestDtoTest { +class UploadPolicyRequestDtoTest { private final Random random = new Random(); @Test - public void testId() { + void testId() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var id = random.nextLong(); uploadPolicyRequestDto.setId(id); @@ -38,7 +38,7 @@ public class UploadPolicyRequestDtoTest { } @Test - public void testUserId() { + void testUserId() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var id = RandomStringUtils.randomAlphanumeric(5); uploadPolicyRequestDto.setUserId(id); @@ -46,7 +46,7 @@ public class UploadPolicyRequestDtoTest { } @Test - public void testFileName() { + void testFileName() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var filename = RandomStringUtils.randomAlphabetic(6); uploadPolicyRequestDto.setFilename(filename); @@ -54,7 +54,7 @@ public class UploadPolicyRequestDtoTest { } @Test - public void testFileData() { + void testFileData() { final var uploadPolicyRequestDto = new UploadPolicyRequestDto(); final var fileData = RandomStringUtils.randomAlphabetic(6); uploadPolicyRequestDto.setFileData(fileData); |