Removed all mention of www.example.org from tests
[policy/models.git] / models-interactions / model-impl / rest / src / test / java / org / onap / policy / rest / RestTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * rest
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
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  */
21
22 package org.onap.policy.rest;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26
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;
45
46 @Path("RestTest")
47 public class RestTest {
48
49
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;
55
56     private static final String LOCALHOST = "localhost";
57     private static final String BASE = "base";
58
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;
67
68     private static HttpServletServer server;
69
70     /**
71      * Sets server endpoint for the tests.
72      */
73     @BeforeClass
74     public static void setUp() throws Exception {
75
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";
84
85         server = HttpServletServerFactoryInstance.getServerFactory()
86             .build("RestTest", LOCALHOST, port, "/" + BASE, false, true);
87         server.addServletClass("/*", RestTest.class.getName());
88         server.waitedStart(5000);
89
90     }
91
92     /**
93      * Tear down server endpoint for the tests.
94      *
95      * @throws Exception if there is a problem
96      */
97     @AfterClass
98     public static void tearDown() throws Exception {
99         HttpServletServerFactoryInstance.getServerFactory().destroy();
100     }
101
102     @Test(expected = NullPointerException.class)
103     public void testGetUrlNull() {
104         RestManager mgr = new RestManager();
105         mgr.get(null, "user", null, null);
106     }
107
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);
112     }
113
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);
118     }
119
120     @Test(expected = NullPointerException.class)
121     public void testDeleteUrlNull() {
122         RestManager mgr = new RestManager();
123         mgr.delete(null, "user", null, null, null, null);
124     }
125
126     @Test
127     public void testUsernameNull() {
128         RestManager mgr = new RestManager();
129
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);
135
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);
141
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);
147
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);
153
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);
159
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);
165
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);
171     }
172
173     @Test
174     public void testUsernameEmpty() {
175         RestManager mgr = new RestManager();
176
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);
182
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);
188
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);
194
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);
200
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);
206
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);
212     }
213
214     @Test
215     public void testGoodUrl() {
216         RestManager mgr = new RestManager();
217
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);
223
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);
229
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);
235
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);
241
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);
247
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);
253     }
254
255     @Test
256     public void testNoUrlParamUrl() {
257         RestManager mgr = new RestManager();
258
259         Pair<Integer, String> result = mgr.get(baseUri + "RestTest/GetHello/", null, null, null);
260         assertEquals((Integer)404, result.first);
261
262         result = mgr.delete(baseUri + "RestTest/DeleteHello/", null, null, null, null, null);
263         assertEquals((Integer)404, result.first);
264
265         result = mgr.put(baseUri + "RestTest/PutHello/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
266         assertEquals((Integer)404, result.first);
267
268         result = mgr.post(baseUri + "RestTest/PostHello/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
269         assertEquals((Integer)404, result.first);
270     }
271
272     @Test
273     public void testNoQueryParamUrl() {
274         RestManager mgr = new RestManager();
275
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);
281
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);
287
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);
293
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);
300     }
301
302     @Test
303     public void testBadUrl() {
304         RestManager mgr = new RestManager();
305
306         Pair<Integer, String> result = mgr.get(baseUri + "NonExistant/URL/", null, null, null);
307         assertEquals((Integer)404, result.first);
308
309         result = mgr.delete(baseUri + "NonExistant/URL/", null, null, null, null, null);
310         assertEquals((Integer)404, result.first);
311
312         result = mgr.put(baseUri + "NonExistant/URL/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
313         assertEquals((Integer)404, result.first);
314
315         result = mgr.post(baseUri + "NonExistant/URL/", null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
316         assertEquals((Integer)404, result.first);
317     }
318
319     @Test
320     public void testWrongUrl() {
321         RestManager mgr = new RestManager();
322
323         Pair<Integer, String> result = mgr.get(deleteUri, null, null, null);
324         assertEquals((Integer)405, result.first);
325
326         result = mgr.delete(getUri, null, null, null, null, null);
327         assertEquals((Integer)405, result.first);
328
329         result = mgr.delete(getUri, null, null, null);
330         assertEquals((Integer)405, result.first);
331
332         result = mgr.put(getUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
333         assertEquals((Integer)405, result.first);
334
335         result = mgr.post(getUri, null, null, null, MediaType.TEXT_PLAIN, PAYLOAD);
336         assertEquals((Integer)405, result.first);
337     }
338
339     @GET
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;
344     }
345
346     @DELETE
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;
351     }
352
353     @PUT
354     @Path("/PutHello/{name}")
355     @Consumes(MediaType.TEXT_PLAIN)
356     @Produces(MediaType.TEXT_PLAIN)
357     public String putBlank(
358         String payload,
359         @PathParam("name") String name,
360         @DefaultValue("90") @QueryParam("age") String age) {
361
362         return "PUT: " + payload + RETURN_STRING + name + " aged " + age;
363     }
364
365     @PUT
366     @Path("/PutBlank")
367     @Produces(MediaType.TEXT_PLAIN)
368     public String putIt( String payload) {
369         return "PUT: " + payload + RETURN_STRING;
370     }
371
372     @POST
373     @Path("/PostHello/{name}")
374     @Consumes(MediaType.TEXT_PLAIN)
375     @Produces(MediaType.TEXT_PLAIN)
376     public String postIt(
377         String payload,
378         @PathParam("name") String name,
379         @DefaultValue("90") @QueryParam("age") String age) {
380
381         return "POST: " + payload + RETURN_STRING + name + " aged " + age;
382     }
383
384     @POST
385     @Path("/PostBlank")
386     @Produces(MediaType.TEXT_PLAIN)
387     public String postBlank( String payload) {
388         return "POST: " + payload + RETURN_STRING;
389     }
390 }