Added junit for policy-management
[policy/drools-pdp.git] / policy-management / src / test / java / org / onap / policy / drools / server / restful / test / RestManagerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * policy-management
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.drools.server.restful.test;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25
26 import java.io.IOException;
27 import java.util.Properties;
28
29 import org.junit.AfterClass;
30 import org.junit.BeforeClass;
31 import org.junit.Test;
32 import org.onap.policy.drools.properties.PolicyProperties;
33 import org.onap.policy.drools.system.PolicyEngine;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36 import org.apache.http.HttpEntity;
37 import org.apache.http.client.ClientProtocolException;
38 import org.apache.http.client.methods.CloseableHttpResponse;
39 import org.apache.http.client.methods.HttpGet;
40 import org.apache.http.impl.client.CloseableHttpClient;
41 import org.apache.http.impl.client.HttpClients;
42 import org.apache.http.util.EntityUtils;
43
44 public class RestManagerTest {
45     
46
47     public static final int DEFAULT_TELEMETRY_PORT = 9698;
48     private static final String HOST = "localhost";
49     private static final String REST_MANAGER_PATH = "/policy/pdp";
50     private static final String HOST_URL = "http://" + HOST + ":" + DEFAULT_TELEMETRY_PORT + REST_MANAGER_PATH;
51     private static final String FOO_CONTROLLER = "foo-controller";
52     private static CloseableHttpClient client;
53     
54     private static final Logger logger = LoggerFactory.getLogger(RestManagerTest.class);
55     
56     @BeforeClass
57     public static void setUp() {
58         /* override default port */
59         final Properties engineProps = PolicyEngine.manager.defaultTelemetryConfig();
60         engineProps.put(PolicyProperties.PROPERTY_HTTP_SERVER_SERVICES + "."
61                 + PolicyEngine.TELEMETRY_SERVER_DEFAULT_NAME + PolicyProperties.PROPERTY_HTTP_PORT_SUFFIX,
62                 "" + DEFAULT_TELEMETRY_PORT);
63             PolicyEngine.manager.configure(engineProps);
64             PolicyEngine.manager.start();
65     
66         client = HttpClients.createDefault();
67         
68     }
69     
70     @AfterClass
71     public static void tearDown() {
72         PolicyEngine.manager.shutdown();
73  
74     }
75     
76     
77     @Test
78     public void GETTest() throws ClientProtocolException, IOException, InterruptedException {
79         assertTrue(PolicyEngine.manager.isAlive());
80         
81         HttpGet httpGet;
82         CloseableHttpResponse response;
83         String responseBody;
84         
85         httpGet = new HttpGet(HOST_URL + "/engine");
86         response = client.execute(httpGet);
87         logger.info("/engine response code: {}", response.getStatusLine().getStatusCode());
88         assertEquals(200, response.getStatusLine().getStatusCode());
89         httpGet.releaseConnection();
90
91         httpGet = new HttpGet(HOST_URL + "/engine/features");
92         response = client.execute(httpGet);
93         logger.info("/engine/features response code: {}", response.getStatusLine().getStatusCode());
94         assertEquals(200, response.getStatusLine().getStatusCode());
95         httpGet.releaseConnection();
96         
97         httpGet = new HttpGet(HOST_URL + "/engine/features/inventory");
98         response = client.execute(httpGet);
99         logger.info("/engine/features/inventory response code: {}", response.getStatusLine().getStatusCode());
100         assertEquals(200, response.getStatusLine().getStatusCode());
101         httpGet.releaseConnection();
102         
103         httpGet = new HttpGet(HOST_URL + "/engine/features/foobar");
104         response = client.execute(httpGet);
105         logger.info("/engine/features/foobar response code: {}",response.getStatusLine().getStatusCode());
106         assertEquals(404, response.getStatusLine().getStatusCode());
107         httpGet.releaseConnection();
108         
109         httpGet = new HttpGet(HOST_URL + "/engine/inputs");
110         response = client.execute(httpGet);
111         logger.info("/engine/inputs response code: {}",response.getStatusLine().getStatusCode());
112         assertEquals(200, response.getStatusLine().getStatusCode());
113         httpGet.releaseConnection();
114         
115         httpGet = new HttpGet(HOST_URL + "/engine/properties");
116         response = client.execute(httpGet);
117         logger.info("/engine/properties response code: {}",response.getStatusLine().getStatusCode());
118         assertEquals(200, response.getStatusLine().getStatusCode());
119         httpGet.releaseConnection();
120         
121         httpGet = new HttpGet(HOST_URL + "/engine/environment");
122         response = client.execute(httpGet);
123         logger.info("/engine/environment response code: {}",response.getStatusLine().getStatusCode());
124         assertEquals(200, response.getStatusLine().getStatusCode());
125         httpGet.releaseConnection();
126  
127         PolicyEngine.manager.setEnvironmentProperty("foo", "bar"); 
128         httpGet = new HttpGet(HOST_URL + "/engine/environment/foo");
129         response = client.execute(httpGet);
130         responseBody = getResponseBody(response);
131         logger.info("/engine/environment/foo response code: {}",response.getStatusLine().getStatusCode());
132         logger.info("/engine/environment/foo response body: {}",responseBody);
133         assertEquals(200, response.getStatusLine().getStatusCode());
134         assertEquals("bar", responseBody);
135         httpGet.releaseConnection();
136         
137
138         httpGet = new HttpGet(HOST_URL + "/engine/switches");
139         response = client.execute(httpGet);
140         logger.info("/engine/switches response code: {}",response.getStatusLine().getStatusCode());
141         assertEquals(200, response.getStatusLine().getStatusCode());
142         httpGet.releaseConnection();
143         
144        
145         Properties controllerProps = new Properties();
146         PolicyEngine.manager.createPolicyController(FOO_CONTROLLER, controllerProps);
147         httpGet = new HttpGet(HOST_URL + "/engine/controllers");
148         response = client.execute(httpGet);
149         responseBody = getResponseBody(response);
150         logger.info("/engine/controllers response code: {}",response.getStatusLine().getStatusCode());
151         logger.info("/engine/controllers response body: {}",responseBody);
152         assertEquals(200, response.getStatusLine().getStatusCode());
153         assertEquals("[\"" + FOO_CONTROLLER +"\"]", responseBody);
154         httpGet.releaseConnection();
155        
156         
157         httpGet = new HttpGet(HOST_URL + "/engine/controllers/inventory");
158         response = client.execute(httpGet);
159         logger.info("/engine/controllers/inventory response code: {}",response.getStatusLine().getStatusCode());
160         assertEquals(200, response.getStatusLine().getStatusCode());
161         httpGet.releaseConnection();
162         
163         
164         httpGet = new HttpGet(HOST_URL + "/engine/controllers/features");
165         response = client.execute(httpGet);
166         logger.info("/engine/controllers/features response code: {}",response.getStatusLine().getStatusCode());
167         assertEquals(200, response.getStatusLine().getStatusCode());
168         httpGet.releaseConnection();
169         
170         
171         httpGet = new HttpGet(HOST_URL + "/engine/controllers/features/inventory");
172         response = client.execute(httpGet);
173         logger.info("/engine/controllers/features/inventory response code: {}",response.getStatusLine().getStatusCode());
174         assertEquals(200, response.getStatusLine().getStatusCode());
175         httpGet.releaseConnection();
176         
177         
178         httpGet = new HttpGet(HOST_URL + "/engine/controllers/features/dummy");
179         response = client.execute(httpGet);
180         logger.info("/engine/controllers/features/dummy response code: {}",response.getStatusLine().getStatusCode());
181         assertEquals(404, response.getStatusLine().getStatusCode());
182         httpGet.releaseConnection();
183         
184         
185         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER);
186         response = client.execute(httpGet);
187         logger.info("/engine/controllers/ response code: {}",response.getStatusLine().getStatusCode());
188         assertEquals(200, response.getStatusLine().getStatusCode());
189         httpGet.releaseConnection();
190         
191         httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller");
192         response = client.execute(httpGet);
193         logger.info("/engine/controllers/nonexistantcontroller response code: {}",response.getStatusLine().getStatusCode());
194         assertEquals(404, response.getStatusLine().getStatusCode());
195         httpGet.releaseConnection();
196         
197
198         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/properties");
199         response = client.execute(httpGet);
200         responseBody = getResponseBody(response);
201         logger.info("/engine/controllers/contoller/properties response code: {}", response.getStatusLine().getStatusCode());
202         logger.info("/engine/controllers/contoller/properties response code: {}", responseBody);
203         assertEquals(200, response.getStatusLine().getStatusCode());
204         assertEquals("{}", responseBody);
205         httpGet.releaseConnection();
206         
207         httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/properties");
208         response = client.execute(httpGet);
209         logger.info("/engine/controllers/nonexistantcontroller/properties response code: {}",response.getStatusLine().getStatusCode());
210         assertEquals(404, response.getStatusLine().getStatusCode());
211         httpGet.releaseConnection();
212
213         
214         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/inputs");
215         response = client.execute(httpGet);
216         logger.info("/engine/controllers/controller/inputs response code: {}",response.getStatusLine().getStatusCode());
217         assertEquals(200, response.getStatusLine().getStatusCode());
218         httpGet.releaseConnection();
219         
220         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/switches");
221         response = client.execute(httpGet);
222         logger.info("/engine/controllers/controller/switches response code: {}",response.getStatusLine().getStatusCode());
223         assertEquals(200, response.getStatusLine().getStatusCode());
224         httpGet.releaseConnection();
225        
226         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools");
227         response = client.execute(httpGet);
228         logger.info("/engine/controllers/controller/drools response code: {}",response.getStatusLine().getStatusCode());
229         assertEquals(200, response.getStatusLine().getStatusCode());
230         httpGet.releaseConnection();
231         
232         httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/drools");
233         response = client.execute(httpGet);
234         logger.info("/engine/controllers/nonexistantcontroller/drools response code: {}",response.getStatusLine().getStatusCode());
235         assertEquals(404, response.getStatusLine().getStatusCode());
236         httpGet.releaseConnection();
237         
238         
239         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts");
240         response = client.execute(httpGet);
241         logger.info("/engine/controllers/controller/drools/facts response code: {}",response.getStatusLine().getStatusCode());
242         assertEquals(200, response.getStatusLine().getStatusCode());
243         httpGet.releaseConnection();
244         
245         httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/drools/facts");
246         response = client.execute(httpGet);
247         logger.info("/engine/controllers/nonexistantcontroller/drools/facts response code: {}",response.getStatusLine().getStatusCode());
248         assertEquals(404, response.getStatusLine().getStatusCode());
249         httpGet.releaseConnection();
250         
251         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts/dummy");
252         response = client.execute(httpGet);
253         logger.info("/engine/controllers/controller/drools/facts/fact response code: {}",response.getStatusLine().getStatusCode());
254         assertEquals(200, response.getStatusLine().getStatusCode());
255         httpGet.releaseConnection();
256         
257         
258         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts/dummy/dummy");
259         response = client.execute(httpGet);
260         logger.info("/engine/controllers/controller/drools/facts/fact response code: {}",response.getStatusLine().getStatusCode());
261         assertEquals(200, response.getStatusLine().getStatusCode());
262         httpGet.releaseConnection();
263         
264         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/drools/facts/session/query/queriedEntity");
265         response = client.execute(httpGet);
266         logger.info("/engine/controllers/controller/drools/facts/session/query/queriedEntity response code: {}",response.getStatusLine().getStatusCode());
267         assertEquals(200, response.getStatusLine().getStatusCode());
268         httpGet.releaseConnection();
269         
270        
271         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders");
272         response = client.execute(httpGet);
273         logger.info("/engine/controllers/controller/decoders response code: {}",response.getStatusLine().getStatusCode());
274         assertEquals(200, response.getStatusLine().getStatusCode());
275         httpGet.releaseConnection();
276         
277         httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/decoders");
278         response = client.execute(httpGet);
279         logger.info("/engine/controllers/nonexistantcontroller/decoders response code: {}",response.getStatusLine().getStatusCode());
280         assertEquals(404, response.getStatusLine().getStatusCode());
281         httpGet.releaseConnection();
282         
283         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/filters");
284         response = client.execute(httpGet);
285         logger.info("/engine/controllers/controllers/decoders/filters response code: {}",response.getStatusLine().getStatusCode());
286         assertEquals(200, response.getStatusLine().getStatusCode());
287         httpGet.releaseConnection();
288         
289         httpGet = new HttpGet(HOST_URL + "/engine/controllers/nonexistantcontroller/decoders/filters");
290         response = client.execute(httpGet);
291         logger.info("engine/controllers/nonexistantcontroller/decoders/filters response code: {}",response.getStatusLine().getStatusCode());
292         assertEquals(404, response.getStatusLine().getStatusCode());
293         httpGet.releaseConnection();
294         
295         
296         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic");
297         response = client.execute(httpGet);      
298         logger.info("/engine/controllers/controllers/decoders/topics response code: {}",response.getStatusLine().getStatusCode());
299         assertEquals(404, response.getStatusLine().getStatusCode());
300         httpGet.releaseConnection();
301         
302         
303         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters");
304         response = client.execute(httpGet);      
305         logger.info("/engine/controllers/controllers/decoders/topic/filters response code: {}",response.getStatusLine().getStatusCode());
306         assertEquals(404, response.getStatusLine().getStatusCode());
307         httpGet.releaseConnection();
308         
309         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters/factType");
310         response = client.execute(httpGet);      
311         logger.info("/engine/controllers/controller/decoders/topic/filters/factType response code: {}",response.getStatusLine().getStatusCode());
312         assertEquals(404, response.getStatusLine().getStatusCode());
313         httpGet.releaseConnection();
314   
315         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters/factType/rules");
316         response = client.execute(httpGet);      
317         logger.info("/engine/controllers/controllers/decoders/topic/filters/factType/rules response code: {}",response.getStatusLine().getStatusCode());
318         assertEquals(404, response.getStatusLine().getStatusCode());
319         httpGet.releaseConnection();
320         
321         httpGet = new HttpGet(HOST_URL + "/engine/controllers/" + FOO_CONTROLLER + "/decoders/topic/filters/factType/rules/ruleName");
322         response = client.execute(httpGet);      
323         logger.info("/engine/controllers/controllers/decoders/topic/filters/factType/rules/ruleName response code: {}",response.getStatusLine().getStatusCode());
324         assertEquals(404, response.getStatusLine().getStatusCode());
325         httpGet.releaseConnection();
326         
327         
328     }
329
330
331     public String getResponseBody(CloseableHttpResponse response) {
332         
333         HttpEntity entity;
334         try {
335             entity = response.getEntity();      
336             return EntityUtils.toString(entity);
337             
338         } catch (IOException e) {
339         
340         }
341         
342         return null;
343     }
344  
345 }