Java 17 Upgrade
[policy/models.git] / models-interactions / model-impl / rest / src / test / java / org / onap / policy / rest / RestTest.java
index 903ec2f..e6c8191 100644 (file)
@@ -2,8 +2,8 @@
  * ============LICENSE_START=======================================================
  * rest
  * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2017-2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019-2020, 2023 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.rest;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.DefaultValue;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.HttpMethod;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import org.apache.commons.lang3.tuple.Pair;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
 import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
 import org.onap.policy.common.utils.network.NetworkUtil;
-import org.onap.policy.rest.RestManager.Pair;
 
 @Path("RestTest")
 public class RestTest {
-
+    private static final String MERGE_PATCH_PLUS_JSON = "application/merge-patch+json";
 
     private static final String NAME_PARAM = "Bob";
     private static final String AGE_PARAM = "10";
@@ -64,6 +71,8 @@ public class RestTest {
     private static String putUriBlank;
     private static String postUri;
     private static String postUriBlank;
+    private static String patchUri;
+    private static String patchUriBlank;
 
     private static HttpServletServer server;
 
@@ -81,6 +90,8 @@ public class RestTest {
         putUriBlank = baseUri + "RestTest/PutBlank";
         postUri = baseUri + "RestTest/PostHello/" + NAME_PARAM + "?age=" + AGE_PARAM;
         postUriBlank = baseUri + "RestTest/PostBlank";
+        patchUri = baseUri + "RestTest/PatchHello/" + NAME_PARAM + "?age=" + AGE_PARAM;
+        patchUriBlank = baseUri + "RestTest/PatchBlank";
 
         server = HttpServletServerFactoryInstance.getServerFactory()
             .build("RestTest", LOCALHOST, port, "/" + BASE, false, true);
@@ -123,51 +134,50 @@ public class RestTest {
         mgr.delete(null, "user", null, null, null, null);
     }
 
+    @Test(expected = NullPointerException.class)
+    public void testPatchUrlNull() {
+        RestManager mgr = new RestManager();
+        mgr.patch(null, "user", null, null, PAYLOAD);
+    }
+
     @Test
     public void testUsernameNull() {
         RestManager mgr = new RestManager();
 
         Pair<Integer, String> result = mgr.get(getUri, null, null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("GOT: " + EXPECT_STRING, result.second);
+        checkResult(result, "GOT: " + EXPECT_STRING);
 
         result = mgr.delete(deleteUri, null, null, null, null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("DELETE: " + EXPECT_STRING, result.second);
+        checkResult(result, "DELETE: " + EXPECT_STRING);
 
         result = mgr.delete(deleteUri, null, null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("DELETE: " + EXPECT_STRING, result.second);
+        checkResult(result, "DELETE: " + EXPECT_STRING);
 
         result = mgr.put(putUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("PUT: " + PAYLOAD + EXPECT_STRING, result.second);
+        checkResult(result, "PUT: " + PAYLOAD + EXPECT_STRING);
 
         result = mgr.put(putUriBlank, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("PUT: " + PAYLOAD + RETURN_STRING, result.second);
+        checkResult(result, "PUT: " + PAYLOAD + RETURN_STRING);
 
         result = mgr.post(postUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("POST: " + PAYLOAD + EXPECT_STRING, result.second);
+        checkResult(result, "POST: " + PAYLOAD + EXPECT_STRING);
 
         result = mgr.post(postUriBlank, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("POST: " + PAYLOAD + RETURN_STRING, result.second);
+        checkResult(result, "POST: " + PAYLOAD + RETURN_STRING);
+
+        result = mgr.patch(patchUri, null, null, null, PAYLOAD);
+        checkResult(result, "PATCH: " + PAYLOAD + EXPECT_STRING);
+
+        result = mgr.patch(patchUriBlank, null, null, null, PAYLOAD);
+        checkResult(result, "PATCH: " + PAYLOAD + RETURN_STRING);
+
+    }
+
+    private void checkResult(Pair<Integer, String> result, String expectedText) {
+        assertEquals((Integer) 200, result.getLeft());
+        assertNotNull(result.getRight());
+        assertTrue(result.getRight().length() > 0);
+        assertEquals(expectedText, result.getRight());
     }
 
     @Test
@@ -175,40 +185,29 @@ public class RestTest {
         RestManager mgr = new RestManager();
 
         Pair<Integer, String> result = mgr.get(getUri, "", null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("GOT: " + EXPECT_STRING, result.second);
+        checkResult(result, "GOT: " + EXPECT_STRING);
 
         result = mgr.delete(deleteUri, "", null, null, null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("DELETE: " + EXPECT_STRING, result.second);
+        checkResult(result, "DELETE: " + EXPECT_STRING);
 
         result = mgr.put(putUri, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("PUT: " + PAYLOAD + EXPECT_STRING, result.second);
+        checkResult(result, "PUT: " + PAYLOAD + EXPECT_STRING);
 
         result = mgr.put(putUriBlank, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("PUT: " + PAYLOAD + RETURN_STRING, result.second);
+        checkResult(result, "PUT: " + PAYLOAD + RETURN_STRING);
 
         result = mgr.post(postUri, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("POST: " + PAYLOAD + EXPECT_STRING, result.second);
+        checkResult(result, "POST: " + PAYLOAD + EXPECT_STRING);
 
         result = mgr.post(postUriBlank, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("POST: " + PAYLOAD + RETURN_STRING, result.second);
+        checkResult(result, "POST: " + PAYLOAD + RETURN_STRING);
+
+        result = mgr.patch(patchUri, "", null, null, PAYLOAD);
+        checkResult(result, "PATCH: " + PAYLOAD + EXPECT_STRING);
+
+        result = mgr.patch(patchUriBlank, "", null, null, PAYLOAD);
+        checkResult(result, "PATCH: " + PAYLOAD + RETURN_STRING);
+
     }
 
     @Test
@@ -216,40 +215,29 @@ public class RestTest {
         RestManager mgr = new RestManager();
 
         Pair<Integer, String> result = mgr.get(getUri, "user", null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("GOT: " + EXPECT_STRING, result.second);
+        checkResult(result, "GOT: " + EXPECT_STRING);
 
         result = mgr.delete(deleteUri, "user", null, null, null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("DELETE: " + EXPECT_STRING, result.second);
+        checkResult(result, "DELETE: " + EXPECT_STRING);
 
         result = mgr.put(putUri, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("PUT: " + PAYLOAD + EXPECT_STRING, result.second);
+        checkResult(result, "PUT: " + PAYLOAD + EXPECT_STRING);
 
         result = mgr.put(putUriBlank, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("PUT: " + PAYLOAD + RETURN_STRING, result.second);
+        checkResult(result, "PUT: " + PAYLOAD + RETURN_STRING);
 
         result = mgr.post(postUri, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("POST: " + PAYLOAD + EXPECT_STRING, result.second);
+        checkResult(result, "POST: " + PAYLOAD + EXPECT_STRING);
 
         result = mgr.post(postUriBlank, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("POST: " + PAYLOAD + RETURN_STRING, result.second);
+        checkResult(result, "POST: " + PAYLOAD + RETURN_STRING);
+
+        result = mgr.patch(patchUri, "user", null, null, PAYLOAD);
+        checkResult(result, "PATCH: " + PAYLOAD + EXPECT_STRING);
+
+        result = mgr.patch(patchUriBlank, "user", null, null, PAYLOAD);
+        checkResult(result, "PATCH: " + PAYLOAD + RETURN_STRING);
+
     }
 
     @Test
@@ -257,16 +245,21 @@ public class RestTest {
         RestManager mgr = new RestManager();
 
         Pair<Integer, String> result = mgr.get(baseUri + "RestTest/GetHello/", null, null, null);
-        assertEquals((Integer)404, result.first);
+
+        assertEquals((Integer) 404, result.getLeft());
 
         result = mgr.delete(baseUri + "RestTest/DeleteHello/", null, null, null, null, null);
-        assertEquals((Integer)404, result.first);
+        assertEquals((Integer) 404, result.getLeft());
 
         result = mgr.put(baseUri + "RestTest/PutHello/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)404, result.first);
+        assertEquals((Integer) 404, result.getLeft());
 
         result = mgr.post(baseUri + "RestTest/PostHello/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)404, result.first);
+        assertEquals((Integer) 404, result.getLeft());
+
+        result = mgr.patch(baseUri + "RestTest/PatchHello/", null, null, null, PAYLOAD);
+        assertEquals((Integer) 404, result.getLeft());
+
     }
 
     @Test
@@ -274,29 +267,22 @@ public class RestTest {
         RestManager mgr = new RestManager();
 
         Pair<Integer, String> result = mgr.get(baseUri + "RestTest/GetHello/" + NAME_PARAM, null, null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("GOT: " + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
+        checkResult(result, "GOT: " + RETURN_STRING + NAME_PARAM + " aged 90");
 
         result = mgr.delete(baseUri + "RestTest/DeleteHello/" + NAME_PARAM, null, null, null, null, null);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("DELETE: " + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
+        checkResult(result, "DELETE: " + RETURN_STRING + NAME_PARAM + " aged 90");
 
         result = mgr.put(baseUri + "RestTest/PutHello/" + NAME_PARAM, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("PUT: " + PAYLOAD + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
+        checkResult(result, "PUT: " + PAYLOAD + RETURN_STRING + NAME_PARAM + " aged 90");
 
         result = mgr.post(baseUri + "RestTest/PostHello/" + NAME_PARAM, null, null,
             null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)200, result.first);
-        assertTrue(result.second != null);
-        assertTrue(result.second.length() > 0);
-        assertEquals("POST: " + PAYLOAD + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
+        checkResult(result, "POST: " + PAYLOAD + RETURN_STRING + NAME_PARAM + " aged 90");
+
+        result = mgr.patch(baseUri + "RestTest/PatchHello/" + NAME_PARAM, null, null,
+            null, PAYLOAD);
+        checkResult(result, "PATCH: " + PAYLOAD + RETURN_STRING + NAME_PARAM + " aged 90");
+
     }
 
     @Test
@@ -304,16 +290,21 @@ public class RestTest {
         RestManager mgr = new RestManager();
 
         Pair<Integer, String> result = mgr.get(baseUri + "NonExistant/URL/", null, null, null);
-        assertEquals((Integer)404, result.first);
+
+        assertEquals((Integer) 404, result.getLeft());
 
         result = mgr.delete(baseUri + "NonExistant/URL/", null, null, null, null, null);
-        assertEquals((Integer)404, result.first);
+        assertEquals((Integer) 404, result.getLeft());
 
         result = mgr.put(baseUri + "NonExistant/URL/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)404, result.first);
+        assertEquals((Integer) 404, result.getLeft());
 
         result = mgr.post(baseUri + "NonExistant/URL/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)404, result.first);
+        assertEquals((Integer) 404, result.getLeft());
+
+        result = mgr.patch(baseUri + "NonExistant/URL/", null, null, null, PAYLOAD);
+        assertEquals((Integer) 404, result.getLeft());
+
     }
 
     @Test
@@ -321,32 +312,37 @@ public class RestTest {
         RestManager mgr = new RestManager();
 
         Pair<Integer, String> result = mgr.get(deleteUri, null, null, null);
-        assertEquals((Integer)405, result.first);
+
+        assertEquals((Integer) 405, result.getLeft());
 
         result = mgr.delete(getUri, null, null, null, null, null);
-        assertEquals((Integer)405, result.first);
+        assertEquals((Integer) 405, result.getLeft());
 
         result = mgr.delete(getUri, null, null, null);
-        assertEquals((Integer)405, result.first);
+        assertEquals((Integer) 405, result.getLeft());
 
         result = mgr.put(getUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)405, result.first);
+        assertEquals((Integer) 405, result.getLeft());
 
         result = mgr.post(getUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
-        assertEquals((Integer)405, result.first);
+        assertEquals((Integer) 405, result.getLeft());
+
+        result = mgr.patch(getUri, null, null, null, PAYLOAD);
+        assertEquals((Integer) 405, result.getLeft());
+
     }
 
     @GET
     @Path("/GetHello/{name}")
     @Produces(MediaType.TEXT_PLAIN)
-    public String getIt( @PathParam("name") String name, @DefaultValue("90") @QueryParam("age") String age) {
+    public String getIt(@PathParam("name") String name, @DefaultValue("90") @QueryParam("age") String age) {
         return "GOT: " + RETURN_STRING + name + " aged " + age;
     }
 
     @DELETE
     @Path("/DeleteHello/{name}")
     @Produces(MediaType.TEXT_PLAIN)
-    public String deleteIt( @PathParam("name") String name, @DefaultValue("90") @QueryParam("age") String age) {
+    public String deleteIt(@PathParam("name") String name, @DefaultValue("90") @QueryParam("age") String age) {
         return "DELETE: " + RETURN_STRING + name + " aged " + age;
     }
 
@@ -365,7 +361,7 @@ public class RestTest {
     @PUT
     @Path("/PutBlank")
     @Produces(MediaType.TEXT_PLAIN)
-    public String putIt( String payload) {
+    public String putIt(String payload) {
         return "PUT: " + payload + RETURN_STRING;
     }
 
@@ -384,7 +380,33 @@ public class RestTest {
     @POST
     @Path("/PostBlank")
     @Produces(MediaType.TEXT_PLAIN)
-    public String postBlank( String payload) {
+    public String postBlank(String payload) {
         return "POST: " + payload + RETURN_STRING;
     }
+
+    @Target({ElementType.METHOD})
+    @Retention(RetentionPolicy.RUNTIME)
+    @HttpMethod("PATCH")
+    @Documented
+    public static @interface Patch {
+    }
+
+    @Patch
+    @Path("/PatchHello/{name}")
+    @Consumes(MERGE_PATCH_PLUS_JSON)
+    @Produces(MERGE_PATCH_PLUS_JSON)
+    public String patchIt(
+        String payload,
+        @PathParam("name") String name,
+        @DefaultValue("90") @QueryParam("age") String age) {
+
+        return "PATCH: " + payload + RETURN_STRING + name + " aged " + age;
+    }
+
+    @Patch
+    @Path("/PatchBlank")
+    @Produces(MERGE_PATCH_PLUS_JSON)
+    public String patchBlank(String payload) {
+        return "PATCH: " + payload + RETURN_STRING;
+    }
 }