2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2019 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.rest;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
27 import javax.ws.rs.Consumes;
28 import javax.ws.rs.DELETE;
29 import javax.ws.rs.DefaultValue;
30 import javax.ws.rs.GET;
31 import javax.ws.rs.POST;
32 import javax.ws.rs.PUT;
33 import javax.ws.rs.Path;
34 import javax.ws.rs.PathParam;
35 import javax.ws.rs.Produces;
36 import javax.ws.rs.QueryParam;
37 import javax.ws.rs.core.MediaType;
38 import org.junit.AfterClass;
39 import org.junit.BeforeClass;
40 import org.junit.Test;
41 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
42 import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
43 import org.onap.policy.common.utils.network.NetworkUtil;
44 import org.onap.policy.rest.RestManager.Pair;
47 public class RestTest {
50 private static final String NAME_PARAM = "Bob";
51 private static final String AGE_PARAM = "10";
52 private static final String PAYLOAD = "At last! ";
53 private static final String RETURN_STRING = "Hello There ";
54 private static final String EXPECT_STRING = RETURN_STRING + NAME_PARAM + " aged " + AGE_PARAM;
56 private static final String LOCALHOST = "localhost";
57 private static final String BASE = "base";
59 private static int port;
60 private static String baseUri;
61 private static String getUri;
62 private static String deleteUri;
63 private static String putUri;
64 private static String putUriBlank;
65 private static String postUri;
66 private static String postUriBlank;
68 private static HttpServletServer server;
71 * Sets server endpoint for the tests.
74 public static void setUp() throws Exception {
76 port = NetworkUtil.allocPort();
77 baseUri = "http://" + LOCALHOST + ":" + port + "/" + BASE + "/";
78 getUri = baseUri + "RestTest/GetHello/" + NAME_PARAM + "?age=" + AGE_PARAM;
79 deleteUri = baseUri + "RestTest/DeleteHello/" + NAME_PARAM + "?age=" + AGE_PARAM;
80 putUri = baseUri + "RestTest/PutHello/" + NAME_PARAM + "?age=" + AGE_PARAM;
81 putUriBlank = baseUri + "RestTest/PutBlank";
82 postUri = baseUri + "RestTest/PostHello/" + NAME_PARAM + "?age=" + AGE_PARAM;
83 postUriBlank = baseUri + "RestTest/PostBlank";
85 server = HttpServletServerFactoryInstance.getServerFactory()
86 .build("RestTest", LOCALHOST, port, "/" + BASE, false, true);
87 server.addServletClass("/*", RestTest.class.getName());
88 server.waitedStart(5000);
93 * Tear down server endpoint for the tests.
95 * @throws Exception if there is a problem
98 public static void tearDown() throws Exception {
99 HttpServletServerFactoryInstance.getServerFactory().destroy();
102 @Test(expected = NullPointerException.class)
103 public void testGetUrlNull() {
104 RestManager mgr = new RestManager();
105 mgr.get(null, "user", null, null);
108 @Test(expected = NullPointerException.class)
109 public void testPutUrlNull() {
110 RestManager mgr = new RestManager();
111 mgr.put(null, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
114 @Test(expected = NullPointerException.class)
115 public void testPostUrlNull() {
116 RestManager mgr = new RestManager();
117 mgr.post(null, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
120 @Test(expected = NullPointerException.class)
121 public void testDeleteUrlNull() {
122 RestManager mgr = new RestManager();
123 mgr.delete(null, "user", null, null, null, null);
127 public void testUsernameNull() {
128 RestManager mgr = new RestManager();
130 Pair<Integer, String> result = mgr.get(getUri, null, null, null);
131 assertEquals((Integer)200, result.first);
132 assertTrue(result.second != null);
133 assertTrue(result.second.length() > 0);
134 assertEquals("GOT: " + EXPECT_STRING, result.second);
136 result = mgr.delete(deleteUri, null, null, null, null, null);
137 assertEquals((Integer)200, result.first);
138 assertTrue(result.second != null);
139 assertTrue(result.second.length() > 0);
140 assertEquals("DELETE: " + EXPECT_STRING, result.second);
142 result = mgr.delete(deleteUri, null, null, null);
143 assertEquals((Integer)200, result.first);
144 assertTrue(result.second != null);
145 assertTrue(result.second.length() > 0);
146 assertEquals("DELETE: " + EXPECT_STRING, result.second);
148 result = mgr.put(putUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
149 assertEquals((Integer)200, result.first);
150 assertTrue(result.second != null);
151 assertTrue(result.second.length() > 0);
152 assertEquals("PUT: " + PAYLOAD + EXPECT_STRING, result.second);
154 result = mgr.put(putUriBlank, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
155 assertEquals((Integer)200, result.first);
156 assertTrue(result.second != null);
157 assertTrue(result.second.length() > 0);
158 assertEquals("PUT: " + PAYLOAD + RETURN_STRING, result.second);
160 result = mgr.post(postUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
161 assertEquals((Integer)200, result.first);
162 assertTrue(result.second != null);
163 assertTrue(result.second.length() > 0);
164 assertEquals("POST: " + PAYLOAD + EXPECT_STRING, result.second);
166 result = mgr.post(postUriBlank, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
167 assertEquals((Integer)200, result.first);
168 assertTrue(result.second != null);
169 assertTrue(result.second.length() > 0);
170 assertEquals("POST: " + PAYLOAD + RETURN_STRING, result.second);
174 public void testUsernameEmpty() {
175 RestManager mgr = new RestManager();
177 Pair<Integer, String> result = mgr.get(getUri, "", null, null);
178 assertEquals((Integer)200, result.first);
179 assertTrue(result.second != null);
180 assertTrue(result.second.length() > 0);
181 assertEquals("GOT: " + EXPECT_STRING, result.second);
183 result = mgr.delete(deleteUri, "", null, null, null, null);
184 assertEquals((Integer)200, result.first);
185 assertTrue(result.second != null);
186 assertTrue(result.second.length() > 0);
187 assertEquals("DELETE: " + EXPECT_STRING, result.second);
189 result = mgr.put(putUri, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
190 assertEquals((Integer)200, result.first);
191 assertTrue(result.second != null);
192 assertTrue(result.second.length() > 0);
193 assertEquals("PUT: " + PAYLOAD + EXPECT_STRING, result.second);
195 result = mgr.put(putUriBlank, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
196 assertEquals((Integer)200, result.first);
197 assertTrue(result.second != null);
198 assertTrue(result.second.length() > 0);
199 assertEquals("PUT: " + PAYLOAD + RETURN_STRING, result.second);
201 result = mgr.post(postUri, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
202 assertEquals((Integer)200, result.first);
203 assertTrue(result.second != null);
204 assertTrue(result.second.length() > 0);
205 assertEquals("POST: " + PAYLOAD + EXPECT_STRING, result.second);
207 result = mgr.post(postUriBlank, "", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
208 assertEquals((Integer)200, result.first);
209 assertTrue(result.second != null);
210 assertTrue(result.second.length() > 0);
211 assertEquals("POST: " + PAYLOAD + RETURN_STRING, result.second);
215 public void testGoodUrl() {
216 RestManager mgr = new RestManager();
218 Pair<Integer, String> result = mgr.get(getUri, "user", null, null);
219 assertEquals((Integer)200, result.first);
220 assertTrue(result.second != null);
221 assertTrue(result.second.length() > 0);
222 assertEquals("GOT: " + EXPECT_STRING, result.second);
224 result = mgr.delete(deleteUri, "user", null, null, null, null);
225 assertEquals((Integer)200, result.first);
226 assertTrue(result.second != null);
227 assertTrue(result.second.length() > 0);
228 assertEquals("DELETE: " + EXPECT_STRING, result.second);
230 result = mgr.put(putUri, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
231 assertEquals((Integer)200, result.first);
232 assertTrue(result.second != null);
233 assertTrue(result.second.length() > 0);
234 assertEquals("PUT: " + PAYLOAD + EXPECT_STRING, result.second);
236 result = mgr.put(putUriBlank, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
237 assertEquals((Integer)200, result.first);
238 assertTrue(result.second != null);
239 assertTrue(result.second.length() > 0);
240 assertEquals("PUT: " + PAYLOAD + RETURN_STRING, result.second);
242 result = mgr.post(postUri, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
243 assertEquals((Integer)200, result.first);
244 assertTrue(result.second != null);
245 assertTrue(result.second.length() > 0);
246 assertEquals("POST: " + PAYLOAD + EXPECT_STRING, result.second);
248 result = mgr.post(postUriBlank, "user", null, null, MediaType.TEXT_PLAIN, PAYLOAD);
249 assertEquals((Integer)200, result.first);
250 assertTrue(result.second != null);
251 assertTrue(result.second.length() > 0);
252 assertEquals("POST: " + PAYLOAD + RETURN_STRING, result.second);
256 public void testNoUrlParamUrl() {
257 RestManager mgr = new RestManager();
259 Pair<Integer, String> result = mgr.get(baseUri + "RestTest/GetHello/", null, null, null);
260 assertEquals((Integer)404, result.first);
262 result = mgr.delete(baseUri + "RestTest/DeleteHello/", null, null, null, null, null);
263 assertEquals((Integer)404, result.first);
265 result = mgr.put(baseUri + "RestTest/PutHello/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
266 assertEquals((Integer)404, result.first);
268 result = mgr.post(baseUri + "RestTest/PostHello/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
269 assertEquals((Integer)404, result.first);
273 public void testNoQueryParamUrl() {
274 RestManager mgr = new RestManager();
276 Pair<Integer, String> result = mgr.get(baseUri + "RestTest/GetHello/" + NAME_PARAM, null, null, null);
277 assertEquals((Integer)200, result.first);
278 assertTrue(result.second != null);
279 assertTrue(result.second.length() > 0);
280 assertEquals("GOT: " + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
282 result = mgr.delete(baseUri + "RestTest/DeleteHello/" + NAME_PARAM, null, null, null, null, null);
283 assertEquals((Integer)200, result.first);
284 assertTrue(result.second != null);
285 assertTrue(result.second.length() > 0);
286 assertEquals("DELETE: " + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
288 result = mgr.put(baseUri + "RestTest/PutHello/" + NAME_PARAM, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
289 assertEquals((Integer)200, result.first);
290 assertTrue(result.second != null);
291 assertTrue(result.second.length() > 0);
292 assertEquals("PUT: " + PAYLOAD + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
294 result = mgr.post(baseUri + "RestTest/PostHello/" + NAME_PARAM, null, null,
295 null, MediaType.TEXT_PLAIN, PAYLOAD);
296 assertEquals((Integer)200, result.first);
297 assertTrue(result.second != null);
298 assertTrue(result.second.length() > 0);
299 assertEquals("POST: " + PAYLOAD + RETURN_STRING + NAME_PARAM + " aged 90", result.second);
303 public void testBadUrl() {
304 RestManager mgr = new RestManager();
306 Pair<Integer, String> result = mgr.get(baseUri + "NonExistant/URL/", null, null, null);
307 assertEquals((Integer)404, result.first);
309 result = mgr.delete(baseUri + "NonExistant/URL/", null, null, null, null, null);
310 assertEquals((Integer)404, result.first);
312 result = mgr.put(baseUri + "NonExistant/URL/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
313 assertEquals((Integer)404, result.first);
315 result = mgr.post(baseUri + "NonExistant/URL/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
316 assertEquals((Integer)404, result.first);
320 public void testWrongUrl() {
321 RestManager mgr = new RestManager();
323 Pair<Integer, String> result = mgr.get(deleteUri, null, null, null);
324 assertEquals((Integer)405, result.first);
326 result = mgr.delete(getUri, null, null, null, null, null);
327 assertEquals((Integer)405, result.first);
329 result = mgr.delete(getUri, null, null, null);
330 assertEquals((Integer)405, result.first);
332 result = mgr.put(getUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
333 assertEquals((Integer)405, result.first);
335 result = mgr.post(getUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
336 assertEquals((Integer)405, result.first);
340 @Path("/GetHello/{name}")
341 @Produces(MediaType.TEXT_PLAIN)
342 public String getIt( @PathParam("name") String name, @DefaultValue("90") @QueryParam("age") String age) {
343 return "GOT: " + RETURN_STRING + name + " aged " + age;
347 @Path("/DeleteHello/{name}")
348 @Produces(MediaType.TEXT_PLAIN)
349 public String deleteIt( @PathParam("name") String name, @DefaultValue("90") @QueryParam("age") String age) {
350 return "DELETE: " + RETURN_STRING + name + " aged " + age;
354 @Path("/PutHello/{name}")
355 @Consumes(MediaType.TEXT_PLAIN)
356 @Produces(MediaType.TEXT_PLAIN)
357 public String putBlank(
359 @PathParam("name") String name,
360 @DefaultValue("90") @QueryParam("age") String age) {
362 return "PUT: " + payload + RETURN_STRING + name + " aged " + age;
367 @Produces(MediaType.TEXT_PLAIN)
368 public String putIt( String payload) {
369 return "PUT: " + payload + RETURN_STRING;
373 @Path("/PostHello/{name}")
374 @Consumes(MediaType.TEXT_PLAIN)
375 @Produces(MediaType.TEXT_PLAIN)
376 public String postIt(
378 @PathParam("name") String name,
379 @DefaultValue("90") @QueryParam("age") String age) {
381 return "POST: " + payload + RETURN_STRING + name + " aged " + age;
386 @Produces(MediaType.TEXT_PLAIN)
387 public String postBlank( String payload) {
388 return "POST: " + payload + RETURN_STRING;