08399e91d320670204063ebd44ce5592aefe5263
[policy/common.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * policy-endpoints
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.common.endpoints.http.server.test;
22
23 import static org.junit.Assert.assertTrue;
24
25 import java.io.IOException;
26 import java.util.List;
27 import java.util.Properties;
28
29 import javax.ws.rs.core.Response;
30
31 import org.junit.AfterClass;
32 import org.junit.BeforeClass;
33 import org.junit.Test;
34 import org.onap.policy.common.endpoints.http.client.HttpClient;
35 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
36 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
37 import org.onap.policy.common.utils.network.NetworkUtil;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40
41 public class HttpClientTest {
42
43     private static Logger logger = LoggerFactory.getLogger(HttpClientTest.class);
44
45     @BeforeClass
46     public static void setUp() throws InterruptedException, IOException {
47         logger.info("-- setup() --");
48
49         /* echo server */
50
51         final HttpServletServer echoServerNoAuth =
52                 HttpServletServer.factory.build("echo", "localhost", 6666, "/", false, true);
53         echoServerNoAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
54         echoServerNoAuth.waitedStart(5000);
55
56         if (!NetworkUtil.isTcpPortOpen("localhost", echoServerNoAuth.getPort(), 5, 10000L)) {
57             throw new IllegalStateException("cannot connect to port " + echoServerNoAuth.getPort());
58         }
59
60         /* no auth echo server */
61
62         final HttpServletServer echoServerAuth =
63                 HttpServletServer.factory.build("echo", "localhost", 6667, "/", false, true);
64         echoServerAuth.setBasicAuthentication("x", "y", null);
65         echoServerAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
66         echoServerAuth.waitedStart(5000);
67
68         if (!NetworkUtil.isTcpPortOpen("localhost", echoServerAuth.getPort(), 5, 10000L)) {
69             throw new IllegalStateException("cannot connect to port " + echoServerAuth.getPort());
70         }
71     }
72
73     @AfterClass
74     public static void tearDown() {
75         logger.info("-- tearDown() --");
76
77         HttpServletServer.factory.destroy();
78         HttpClient.factory.destroy();
79     }
80
81     @Test
82     public void testHttpNoAuthClient() throws Exception {
83         logger.info("-- testHttpNoAuthClient() --");
84
85         final HttpClient client = HttpClient.factory.build("testHttpNoAuthClient", false, false, "localhost", 6666,
86                 "junit/echo", null, null, true);
87         final Response response = client.get("hello");
88         final String body = HttpClient.getBody(response, String.class);
89
90         assertTrue(response.getStatus() == 200);
91         assertTrue(body.equals("hello"));
92     }
93
94     @Test
95     public void testHttpAuthClient() throws Exception {
96         logger.info("-- testHttpAuthClient() --");
97
98         final HttpClient client = HttpClient.factory.build("testHttpAuthClient", false, false, "localhost", 6667,
99                 "junit/echo", "x", "y", true);
100         final Response response = client.get("hello");
101         final String body = HttpClient.getBody(response, String.class);
102
103         assertTrue(response.getStatus() == 200);
104         assertTrue(body.equals("hello"));
105     }
106
107     @Test
108     public void testHttpAuthClient401() throws Exception {
109         logger.info("-- testHttpAuthClient401() --");
110
111         final HttpClient client = HttpClient.factory.build("testHttpAuthClient401", false, false, "localhost", 6667,
112                 "junit/echo", null, null, true);
113         final Response response = client.get("hello");
114         assertTrue(response.getStatus() == 401);
115     }
116
117     @Test
118     public void testHttpAuthClientProps() throws Exception {
119         logger.info("-- testHttpAuthClientProps() --");
120
121         final Properties httpProperties = new Properties();
122
123         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES, "PAP,PDP");
124         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
125                 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
126         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
127                 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
128         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
129                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
130         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
131                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
132         httpProperties.setProperty(
133                 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
134                         + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
135                 RestMockHealthCheck.class.getName());
136         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
137                 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
138
139         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
140                 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
141         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
142                 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
143         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
144                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
145         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
146                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
147         httpProperties.setProperty(
148                 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
149                         + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
150                 RestMockHealthCheck.class.getName());
151         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
152                 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
153
154         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES, "PAP,PDP");
155         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
156                 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
157         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
158                 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
159         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
160                 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pap/test");
161         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
162                 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
163         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
164                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
165         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
166                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
167         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
168                 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
169
170         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
171                 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
172         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
173                 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
174         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
175                 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pdp");
176         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
177                 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
178         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
179                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
180         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
181                 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
182         httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
183                 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
184
185         final List<HttpServletServer> servers = HttpServletServer.factory.build(httpProperties);
186         assertTrue(servers.size() == 2);
187
188         final List<HttpClient> clients = HttpClient.factory.build(httpProperties);
189         assertTrue(clients.size() == 2);
190
191         for (final HttpServletServer server : servers) {
192             server.waitedStart(10000);
193         }
194
195         final HttpClient clientPAP = HttpClient.factory.get("PAP");
196         final Response response = clientPAP.get();
197         assertTrue(response.getStatus() == 200);
198
199         final HttpClient clientPDP = HttpClient.factory.get("PDP");
200         final Response response2 = clientPDP.get("test");
201         assertTrue(response2.getStatus() == 500);
202     }
203
204
205 }