2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
4 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
5 * Modifications Copyright (C) 2019 Nordix Foundation.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.api.main.rest;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertFalse;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertTrue;
29 import static org.junit.Assert.fail;
31 import java.lang.reflect.Constructor;
32 import java.lang.reflect.Modifier;
33 import java.security.SecureRandom;
34 import java.security.cert.X509Certificate;
35 import java.util.Base64;
36 import java.util.Properties;
38 import javax.net.ssl.SSLContext;
39 import javax.net.ssl.TrustManager;
40 import javax.net.ssl.X509TrustManager;
41 import javax.ws.rs.client.Client;
42 import javax.ws.rs.client.ClientBuilder;
43 import javax.ws.rs.client.Entity;
44 import javax.ws.rs.client.Invocation;
45 import javax.ws.rs.client.WebTarget;
46 import javax.ws.rs.core.Response;
47 import org.glassfish.jersey.client.ClientConfig;
48 import org.glassfish.jersey.client.ClientProperties;
49 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
50 import org.junit.After;
51 import org.junit.Test;
52 import org.onap.policy.api.main.exception.PolicyApiException;
53 import org.onap.policy.api.main.parameters.ApiParameterGroup;
54 import org.onap.policy.api.main.parameters.CommonTestData;
55 import org.onap.policy.api.main.rest.provider.PolicyProvider;
56 import org.onap.policy.api.main.rest.provider.PolicyTypeProvider;
57 import org.onap.policy.api.main.startstop.Main;
58 import org.onap.policy.common.endpoints.http.server.RestServer;
59 import org.onap.policy.common.endpoints.http.server.YamlMessageBodyHandler;
60 import org.onap.policy.common.endpoints.parameters.RestServerParameters;
61 import org.onap.policy.common.endpoints.report.HealthCheckReport;
62 import org.onap.policy.common.gson.GsonMessageBodyHandler;
63 import org.onap.policy.common.parameters.ParameterService;
64 import org.onap.policy.common.utils.coder.StandardCoder;
65 import org.onap.policy.common.utils.coder.StandardYamlCoder;
66 import org.onap.policy.common.utils.network.NetworkUtil;
67 import org.onap.policy.common.utils.resources.ResourceUtils;
68 import org.onap.policy.models.base.PfModelException;
69 import org.onap.policy.models.errors.concepts.ErrorResponse;
70 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
71 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
72 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
73 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
74 import org.slf4j.Logger;
75 import org.slf4j.LoggerFactory;
78 * Class to perform unit test of {@link ApiRestServer}.
80 * @author Chenfei Gao (cgao@research.att.com)
82 public class TestApiRestServer {
84 private static final Logger LOGGER = LoggerFactory.getLogger(TestApiRestServer.class);
85 private static final String NOT_ALIVE = "not alive";
86 private static final String ALIVE = "alive";
87 private static final String SELF = "self";
88 private static final String NAME = "Policy API";
89 private static final String APP_JSON = "application/json";
90 private static final String APP_YAML = "application/yaml";
92 private static final String HEALTHCHECK_ENDPOINT = "healthcheck";
93 private static final String STATISTICS_ENDPOINT = "statistics";
95 private static final String POLICYTYPES = "policytypes";
96 private static final String POLICYTYPES_TCA = "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app";
97 private static final String POLICYTYPES_COLLECTOR =
98 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server";
99 private static final String POLICYTYPES_TCA_VERSION =
100 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0";
101 private static final String POLICYTYPES_TCA_LATEST =
102 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/latest";
103 private static final String POLICYTYPES_COLLECTOR_VERSION =
104 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server/versions/1.0.0";
105 private static final String POLICYTYPES_COLLECTOR_LATEST =
106 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server/versions/latest";
108 private static final String POLICYTYPES_TCA_POLICIES =
109 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies";
110 private static final String POLICYTYPES_TCA_POLICIES_VCPE =
111 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca";
112 private static final String POLICYTYPES_TCA_POLICIES_VCPE_VERSION = "policytypes/"
113 + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/1.0.0";
114 private static final String POLICYTYPES_TCA_POLICIES_VCPE_LATEST = "policytypes/"
115 + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/latest";
116 private static final String POLICYTYPES_TCA_POLICIES_VCPE_DEPLOYED = "policytypes/"
117 + "onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies/onap.restart.tca/versions/deployed";
119 private static final String GUARD_POLICIES = "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies";
120 private static final String GUARD_POLICIES_VDNS_FL_LATEST =
121 "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout"
122 + "/versions/latest";
123 private static final String GUARD_POLICIES_VDNS_FL_DEPLOYED =
124 "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout"
125 + "/versions/deployed";
126 private static final String GUARD_POLICIES_VDNS_MINMAX_LATEST =
127 "policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.minmax.scaleout"
128 + "/versions/latest";
129 private static final String GUARD_POLICIES_VDNS_FL_VERSION = "policytypes/"
130 + "onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.frequency.scaleout/versions/1";
131 private static final String GUARD_POLICIES_VDNS_MINMAX_VERSION =
132 "policytypes/" + "onap.policies.controlloop.Guard/versions/1.0.0/policies/guard.minmax.scaleout/versions/1";
134 private static final String OPS_POLICIES =
135 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies";
136 private static final String OPS_POLICIES_VCPE_LATEST =
137 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart"
138 + "/versions/latest";
139 private static final String OPS_POLICIES_VCPE_DEPLOYED =
140 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart"
141 + "/versions/deployed";
142 private static final String OPS_POLICIES_VDNS_LATEST =
143 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.scaleout"
144 + "/versions/latest";
145 private static final String OPS_POLICIES_VFIREWALL_LATEST =
146 "policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.modifyconfig"
147 + "/versions/latest";
148 private static final String OPS_POLICIES_VCPE_VERSION = "policytypes/"
149 + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.restart/versions/1";
150 private static final String OPS_POLICIES_VDNS_VERSION = "policytypes/"
151 + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.scaleout/versions/1";
152 private static final String OPS_POLICIES_VFIREWALL_VERSION = "policytypes/"
153 + "onap.policies.controlloop.Operational/versions/1.0.0/policies/operational.modifyconfig/versions/1";
155 private static final String KEYSTORE = System.getProperty("user.dir") + "/src/test/resources/ssl/policy-keystore";
156 private static final CommonTestData COMMON_TEST_DATA = new CommonTestData();
158 private RestServer restServer;
159 private StandardCoder standardCoder = new StandardCoder();
160 private StandardYamlCoder standardYamlCoder = new StandardYamlCoder();
164 private String[] toscaPolicyResourceNames = {
165 "policies/vCPE.policy.monitoring.input.tosca.json",
166 "policies/vCPE.policy.monitoring.input.tosca.yaml",
167 "policies/vDNS.policy.monitoring.input.tosca.json",
168 "policies/vDNS.policy.monitoring.input.tosca.yaml",
169 "policies/vFirewall.policy.monitoring.input.tosca.json",
170 "policies/vFirewall.policy.monitoring.input.tosca.yaml"
173 private String[] toscaPolicyTypeResourceNames = {
174 "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
175 "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
176 "policytypes/onap.policies.Optimization.yaml",
177 "policytypes/onap.policies.controlloop.Operational.yaml",
178 "policytypes/onap.policies.controlloop.guard.Blacklist.yaml",
179 "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml",
180 "policytypes/onap.policies.controlloop.guard.MinMax.yaml",
181 "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
182 "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
183 "policytypes/onap.policies.optimization.DistancePolicy.yaml",
184 "policytypes/onap.policies.optimization.HpaPolicy.yaml",
185 "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
186 "policytypes/onap.policies.optimization.PciPolicy.yaml",
187 "policytypes/onap.policies.optimization.QueryPolicy.yaml",
188 "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
189 "policytypes/onap.policies.optimization.Vim_fit.yaml",
190 "policytypes/onap.policies.optimization.VnfPolicy.yaml"
193 private String[] legacyGuardPolicyResourceNames = {
194 "policies/vDNS.policy.guard.frequency.input.json",
195 "policies/vDNS.policy.guard.minmax.input.json"
198 private String[] legacyOperationalPolicyResourceNames = {
199 "policies/vCPE.policy.operational.input.json",
200 "policies/vDNS.policy.operational.input.json",
201 "policies/vFirewall.policy.operational.input.json"
204 private static PolicyModelsProviderParameters providerParams;
205 private static ApiParameterGroup apiParamGroup;
206 private static PolicyProvider policyProvider;
207 private static PolicyTypeProvider policyTypeProvider;
212 * Initializes parameters.
214 * @throws PfModelException the PfModel parsing exception
216 private void setupParameters() throws PfModelException {
218 standardCoder = new StandardCoder();
219 providerParams = new PolicyModelsProviderParameters();
220 providerParams.setDatabaseDriver("org.h2.Driver");
221 providerParams.setDatabaseUrl("jdbc:h2:mem:testdb");
222 providerParams.setDatabaseUser("policy");
223 providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
224 providerParams.setPersistenceUnit("ToscaConceptTest");
225 apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
226 ParameterService.register(apiParamGroup, true);
227 policyTypeProvider = new PolicyTypeProvider();
228 policyProvider = new PolicyProvider();
232 * Method for cleanup after each test.
235 public void teardown() throws Exception {
236 if (policyTypeProvider != null) {
237 policyTypeProvider.close();
239 if (policyProvider != null) {
240 policyProvider.close();
243 stopApiService(main);
244 } else if (restServer != null) {
250 public void testApiStatisticsConstructorIsPrivate() {
253 final Constructor<ApiStatisticsManager> constructor = ApiStatisticsManager.class.getDeclaredConstructor();
254 assertTrue(Modifier.isPrivate(constructor.getModifiers()));
255 constructor.setAccessible(true);
256 constructor.newInstance();
257 } catch (final Exception exp) {
258 assertTrue(exp.getCause().toString().contains("Instantiation of the class is not allowed"));
263 public void testCreatePolicyTypes() {
265 main = startApiService(true);
266 for (String resrcName : toscaPolicyTypeResourceNames) {
267 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
268 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
269 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
270 assertNotNull(response);
271 assertFalse(response.getPolicyTypes().isEmpty());
273 } catch (Exception exp) {
274 fail("Test should not throw an exception");
279 public void testCreatePolicies() {
281 main = startApiService(true);
282 for (String resrcName : toscaPolicyResourceNames) {
283 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
284 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
285 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
286 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
287 error.getErrorMessage());
289 } catch (Exception exp) {
290 fail("Test should not throw an exception");
295 public void testCreateGuardPolicies() {
297 main = startApiService(true);
298 for (String resrcName : legacyGuardPolicyResourceNames) {
299 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
300 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
302 } catch (Exception exp) {
303 fail("Test should not throw an exception");
308 public void testCreateGuardPoliciesPersistent() {
310 setupParameters(); // setup DB
311 main = startApiService(true);
312 for (String resrcName : legacyGuardPolicyResourceNames) {
313 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
314 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
316 } catch (Exception exp) {
317 fail("Test should not throw an exception");
322 public void testCreateOperationalPolicies() {
324 main = startApiService(true);
325 for (String resrcName : legacyOperationalPolicyResourceNames) {
326 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
327 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
329 } catch (Exception exp) {
330 fail("Test should not throw an exception");
335 public void testCreateOperationalPoliciesPersistent() {
337 setupParameters(); // setup DB
338 main = startApiService(true);
339 for (String resrcName : legacyOperationalPolicyResourceNames) {
340 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
341 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
343 } catch (Exception exp) {
344 fail("Test should not throw an exception");
349 public void testHttpsCreatePolicyTypes() {
351 main = startApiService(false);
352 for (String resrcName : toscaPolicyTypeResourceNames) {
353 Response rawResponse = createResource(POLICYTYPES, resrcName, false);
354 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
355 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
356 assertNotNull(response);
357 assertFalse(response.getPolicyTypes().isEmpty());
359 } catch (Exception exp) {
360 fail("Test should not throw an exception");
365 public void testHttpsCreatePolicies() {
367 main = startApiService(false);
368 for (String resrcName : toscaPolicyResourceNames) {
369 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, false);
370 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
371 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
372 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
373 error.getErrorMessage());
375 } catch (Exception exp) {
376 fail("Test should not throw an exception");
381 public void testHttpsCreateGuardPolicies() {
383 main = startApiService(false);
384 for (String resrcName : legacyGuardPolicyResourceNames) {
385 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, false);
386 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
388 } catch (Exception exp) {
389 fail("Test should not throw an exception");
394 public void testHttpsCreateOperationalPolicies() {
396 main = startApiService(false);
397 for (String resrcName : legacyOperationalPolicyResourceNames) {
398 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, false);
399 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
401 } catch (Exception exp) {
402 fail("Test should not throw an exception");
407 public void testHealthCheckSuccessJson() {
408 testHealthCheckSuccess(APP_JSON);
412 public void testHealthCheckSuccessYaml() {
413 testHealthCheckSuccess(APP_YAML);
418 private void testHealthCheckSuccess(String mediaType) {
421 main = startApiService(true);
422 final Invocation.Builder invocationBuilder = sendHttpRequest(HEALTHCHECK_ENDPOINT, mediaType);
423 final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
424 validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
425 } catch (final Exception exp) {
426 LOGGER.error("testHealthCheckSuccess failed", exp);
427 fail("Test should not throw an exception");
432 public void testHealthCheckFailureJson() {
433 testHealthCheckFailure(APP_JSON);
437 public void testHealthCheckFailureYaml() {
438 testHealthCheckFailure(APP_YAML);
441 private void testHealthCheckFailure(String mediaType) {
443 port = NetworkUtil.allocPort();
444 final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false, port);
445 restServerParams.setName(CommonTestData.API_GROUP_NAME);
446 restServer = new RestServer(restServerParams, null, ApiRestController.class);
449 final Invocation.Builder invocationBuilder = sendHttpRequest(HEALTHCHECK_ENDPOINT, mediaType);
450 final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
451 validateHealthCheckReport(NAME, SELF, false, 500, NOT_ALIVE, report);
452 assertTrue(restServer.isAlive());
453 assertTrue(restServer.toString().startsWith("RestServer [servers="));
454 } catch (Exception exp) {
455 fail("Test should not throw an exception");
460 public void testHttpsHealthCheckSuccessJson() {
461 testHttpsHealthCheckSuccess(APP_JSON);
465 public void testHttpsHealthCheckSuccessYaml() {
466 testHttpsHealthCheckSuccess(APP_YAML);
469 private void testHttpsHealthCheckSuccess(String mediaType) {
471 main = startApiService(false);
472 final Invocation.Builder invocationBuilder = sendHttpsRequest(HEALTHCHECK_ENDPOINT, mediaType);
473 final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
474 validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
475 } catch (Exception exp) {
476 fail("Test should not throw an exception");
481 public void testApiStatistics_200_Json() {
482 testApiStatistics_200(APP_JSON);
486 public void testApiStatistics_200_Yaml() {
487 testApiStatistics_200(APP_YAML);
490 private void testApiStatistics_200(String mediaType) {
492 main = startApiService(true);
493 Invocation.Builder invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT, mediaType);
494 StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
495 validateStatisticsReport(report, 200);
496 updateApiStatistics();
497 invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT, mediaType);
498 report = invocationBuilder.get(StatisticsReport.class);
499 validateStatisticsReport(report, 200);
500 ApiStatisticsManager.resetAllStatistics();
501 } catch (Exception exp) {
502 fail("Test should not throw an exception");
507 public void testHttpsApiStatisticsJson() {
508 testHttpsApiStatistics(APP_JSON);
512 public void testHttpsApiStatisticsYaml() {
513 testHttpsApiStatistics(APP_YAML);
516 private void testHttpsApiStatistics(String mediaType) {
518 main = startApiService(false);
519 final Invocation.Builder invocationBuilder = sendHttpsRequest(STATISTICS_ENDPOINT, mediaType);
520 final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
521 validateStatisticsReport(report, 200);
522 } catch (Exception exp) {
523 fail("Test should not throw an exception");
528 public void testApiStatistics_500_Json() {
529 testApiStatistics_500(APP_JSON);
533 public void testApiStatistics_500_Yaml() {
534 testApiStatistics_500(APP_YAML);
538 private void testApiStatistics_500(String mediaType) {
540 port = NetworkUtil.allocPort();
541 final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false, port);
542 restServerParams.setName(CommonTestData.API_GROUP_NAME);
543 restServer = new RestServer(restServerParams, null, ApiRestController.class);
546 final Invocation.Builder invocationBuilder = sendHttpRequest(STATISTICS_ENDPOINT, mediaType);
547 final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
548 validateStatisticsReport(report, 500);
549 ApiStatisticsManager.resetAllStatistics();
550 } catch (Exception exp) {
551 fail("Test should not throw an exception");
557 public void testReadPolicyTypesJson() {
558 testReadPolicyTypes(APP_JSON);
562 public void testReadPolicyTypesYaml() {
563 testReadPolicyTypes(APP_YAML);
566 private void testReadPolicyTypes(String mediaType) {
568 main = startApiService(true);
569 Response rawResponse = readResource(POLICYTYPES, true, mediaType);
570 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
571 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
572 assertTrue(response.getPolicyTypes().isEmpty());
574 rawResponse = readResource(POLICYTYPES_TCA, true, mediaType);
575 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
576 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
577 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:null does not exist",
578 error.getErrorMessage());
580 rawResponse = readResource(POLICYTYPES_TCA_VERSION, true, mediaType);
581 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
582 error = rawResponse.readEntity(ErrorResponse.class);
583 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
584 error.getErrorMessage());
586 rawResponse = readResource(POLICYTYPES_TCA_LATEST, true, mediaType);
587 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
588 error = rawResponse.readEntity(ErrorResponse.class);
589 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:null does not exist",
590 error.getErrorMessage());
592 rawResponse = readResource(POLICYTYPES_COLLECTOR, true, mediaType);
593 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
594 error = rawResponse.readEntity(ErrorResponse.class);
595 assertEquals("policy type with ID "
596 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:null does not exist",
597 error.getErrorMessage());
599 rawResponse = readResource(POLICYTYPES_COLLECTOR_VERSION, true, mediaType);
600 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
601 error = rawResponse.readEntity(ErrorResponse.class);
602 assertEquals("policy type with ID "
603 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:1.0.0 does not exist",
604 error.getErrorMessage());
606 rawResponse = readResource(POLICYTYPES_COLLECTOR_LATEST, true, mediaType);
607 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
608 error = rawResponse.readEntity(ErrorResponse.class);
609 assertEquals("policy type with ID "
610 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:null does not exist",
611 error.getErrorMessage());
612 } catch (Exception exp) {
613 fail("Test should not throw an exception");
618 public void testReadPolicyTypesPersistentJson() {
619 testReadPolicyTypesPersistent(APP_JSON);
623 public void testReadPolicyTypesPersistentYaml() {
624 testReadPolicyTypesPersistent(APP_YAML);
627 private void testReadPolicyTypesPersistent(String mediaType) {
630 main = startApiService(true);
631 for (String resrcName : toscaPolicyTypeResourceNames) {
632 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
633 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
634 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
635 assertNotNull(response);
636 assertFalse(response.getPolicyTypes().isEmpty());
639 for (String resrcName : toscaPolicyResourceNames) {
640 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
641 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
644 Response rawResponse = readResource(POLICYTYPES_TCA, true, mediaType);
645 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
647 rawResponse = readResource(POLICYTYPES_TCA_VERSION, true, mediaType);
648 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
651 rawResponse = readResource(POLICYTYPES_TCA_LATEST, true, mediaType);
652 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
655 rawResponse = readResource(POLICYTYPES_COLLECTOR, true, mediaType);
656 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
659 rawResponse = readResource(POLICYTYPES_COLLECTOR_VERSION, true, mediaType);
660 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
663 rawResponse = readResource(POLICYTYPES_COLLECTOR_LATEST, true, mediaType);
664 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
665 } catch (Exception exp) {
666 fail("Test should not throw an exception");
671 public void testDeletePolicyTypeJson() {
672 testDeletePolicyType(APP_JSON);
676 public void testDeletePolicyTypeYaml() {
677 testDeletePolicyType(APP_YAML);
680 private void testDeletePolicyType(String mediaType) {
682 main = startApiService(true);
683 Response rawResponse = deleteResource(POLICYTYPES_TCA_VERSION, true, mediaType);
684 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
685 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
686 assertEquals("policy type with ID onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
687 error.getErrorMessage());
689 rawResponse = deleteResource(POLICYTYPES_COLLECTOR_VERSION, true, mediaType);
690 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
691 error = rawResponse.readEntity(ErrorResponse.class);
692 assertEquals("policy type with ID "
693 + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server:1.0.0 does not exist",
694 error.getErrorMessage());
695 } catch (Exception exp) {
696 fail("Test should not throw an exception");
701 public void testDeletePolicyTypePersistentJson() {
702 testDeletePolicyTypePersistent(APP_JSON);
706 public void testDeletePolicyTypePersistentYaml() {
707 testDeletePolicyTypePersistent(APP_YAML);
710 private void testDeletePolicyTypePersistent(String mediaType) {
712 setupParameters(); // setup DB
713 main = startApiService(true);// create policy types
714 for (String resrcName : toscaPolicyTypeResourceNames) {
715 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
716 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
717 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
718 assertNotNull(response);
719 assertFalse(response.getPolicyTypes().isEmpty());
721 Response rawResponse = deleteResource(POLICYTYPES_TCA_VERSION, true, mediaType);
722 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
723 } catch (Exception exp) {
724 fail("Test should not throw an exception");
730 public void testReadPoliciesJson() {
731 testReadPolicies(APP_JSON);
735 public void testReadPoliciesYaml() {
736 testReadPolicies(APP_YAML);
739 private void testReadPolicies(String mediaType) {
741 main = startApiService(true);
742 Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES, true, mediaType);
743 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
744 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
746 "policy with ID null:null and "
747 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
748 error.getErrorMessage());
750 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE, true, mediaType);
751 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
752 error = rawResponse.readEntity(ErrorResponse.class);
754 "policy with ID onap.restart.tca:null and "
755 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
756 error.getErrorMessage());
758 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
759 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
760 error = rawResponse.readEntity(ErrorResponse.class);
762 "policy with ID onap.restart.tca:1.0.0 and "
763 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
764 error.getErrorMessage());
766 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_LATEST, true, mediaType);
767 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
768 error = rawResponse.readEntity(ErrorResponse.class);
770 "policy with ID onap.restart.tca:null and "
771 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
772 error.getErrorMessage());
773 } catch (Exception exp) {
774 fail("Test should not throw an exception");
779 public void testReadPoliciesPersistentJson() {
780 testReadPoliciesPersistent(APP_JSON);
784 public void testReadPoliciesPersistentYaml() {
785 testReadPoliciesPersistent(APP_YAML);
788 private void testReadPoliciesPersistent(String mediaType) {
791 main = startApiService(true);
792 for (String resrcName : toscaPolicyTypeResourceNames) {
793 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
794 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
795 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
796 assertNotNull(response);
797 assertFalse(response.getPolicyTypes().isEmpty());
800 for (String resrcName : toscaPolicyResourceNames) {
801 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
802 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
805 Response rawResponse;
806 rawResponse = readResource(POLICYTYPES_TCA, true, mediaType);
807 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
809 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE, true, mediaType);
810 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
812 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
813 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
815 rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_LATEST, true, mediaType);
816 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
817 } catch (Exception exp) {
818 fail("Test should not throw an exception");
823 public void testDeletePoliciesJson() {
824 testDeletePolicies(APP_JSON);
828 public void testDeletePoliciesYaml() {
829 testDeletePolicies(APP_YAML);
832 private void testDeletePolicies(String mediaType) {
834 main = startApiService(true);
835 Response rawResponse = deleteResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
836 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
837 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
839 "policy with ID onap.restart.tca:1.0.0 and "
840 + "type onap.policies.monitoring.cdap.tca.hi.lo.app:1.0.0 does not exist",
841 error.getErrorMessage());
842 } catch (Exception exp) {
843 fail("Test should not throw an exception");
848 public void testDeletePolicyVersionJson() {
849 testDeletePolicyVersion(APP_JSON);
853 public void testDeletePolicyVersionYaml() {
854 testDeletePolicyVersion(APP_YAML);
857 private void testDeletePolicyVersion(String mediaType) {
859 setupParameters(); // setup DB
860 main = startApiService(true);// create policy types
861 for (String resrcName : toscaPolicyTypeResourceNames) {
862 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
863 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
864 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
865 assertNotNull(response);
866 assertFalse(response.getPolicyTypes().isEmpty());
868 for (String resrcName : toscaPolicyResourceNames) {
869 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
870 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
872 Response rawResponse = deleteResource(POLICYTYPES_TCA_POLICIES_VCPE_VERSION, true, mediaType);
873 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
874 } catch (Exception exp) {
875 fail("Test should not throw an exception");
880 public void testGetAllVersionOfPolicyJson() {
881 testGetAllVersionOfPolicy(APP_JSON);
885 public void testGetAllVersionOfPolicyYaml() {
886 testGetAllVersionOfPolicy(APP_YAML);
889 private void testGetAllVersionOfPolicy(String mediaType) {
891 setupParameters(); // setup DB
892 main = startApiService(true);// create policy types
893 for (String resrcName : toscaPolicyTypeResourceNames) {
894 Response rawResponse = createResource(POLICYTYPES, resrcName, true);
895 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
896 ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
897 assertNotNull(response);
898 assertFalse(response.getPolicyTypes().isEmpty());
900 for (String resrcName : toscaPolicyResourceNames) {
901 Response rawResponse = createResource(POLICYTYPES_TCA_POLICIES, resrcName, true);
902 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
904 Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES, true, mediaType);
905 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
906 } catch (Exception exp) {
907 fail("Test should not throw an exception");
913 public void testReadGuardPoliciesJson() {
914 testReadGuardPolicies(APP_JSON);
918 public void testReadGuardPoliciesYaml() {
919 testReadGuardPolicies(APP_YAML);
922 private void testReadGuardPolicies(String mediaType) {
924 main = startApiService(true);
925 Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_LATEST, true, mediaType);
926 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
927 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
928 assertEquals("no policy found for policy: guard.frequency.scaleout:null", error.getErrorMessage());
930 rawResponse = readResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
931 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
932 error = rawResponse.readEntity(ErrorResponse.class);
933 assertEquals("no policy found for policy: guard.frequency.scaleout:1", error.getErrorMessage());
935 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_LATEST, true, mediaType);
936 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
937 error = rawResponse.readEntity(ErrorResponse.class);
938 assertEquals("no policy found for policy: guard.minmax.scaleout:null", error.getErrorMessage());
940 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_VERSION, true, mediaType);
941 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
942 error = rawResponse.readEntity(ErrorResponse.class);
943 assertEquals("no policy found for policy: guard.minmax.scaleout:1", error.getErrorMessage());
944 } catch (Exception exp) {
945 fail("Test should not throw an exception");
950 public void testReadGuardPoliciesPersistentJson() {
951 testReadGuardPoliciesPersistent(APP_JSON);
955 public void testReadGuardPoliciesPersistentYaml() {
956 testReadGuardPoliciesPersistent(APP_YAML);
959 private void testReadGuardPoliciesPersistent(String mediaType) {
961 setupParameters(); // setup DB
962 main = startApiService(true);
963 for (String resrcName : legacyGuardPolicyResourceNames) {
964 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
965 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
968 Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_LATEST, true, mediaType);
969 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
972 rawResponse = readResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
973 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
975 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_LATEST, true, mediaType);
976 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
979 rawResponse = readResource(GUARD_POLICIES_VDNS_MINMAX_VERSION, true, mediaType);
980 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
981 } catch (Exception exp) {
982 fail("Test should not throw an exception");
988 public void testReadOperationalPoliciesJson() {
989 testReadOperationalPolicies(APP_JSON);
993 public void testReadOperationalPoliciesYaml() {
994 testReadOperationalPolicies(APP_YAML);
997 private void testReadOperationalPolicies(String mediaType) {
999 main = startApiService(true);
1000 Response rawResponse = readResource(OPS_POLICIES_VCPE_LATEST, true, mediaType);
1001 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1002 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
1003 assertEquals("no policy found for policy: operational.restart:null", error.getErrorMessage());
1005 rawResponse = readResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1006 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1007 error = rawResponse.readEntity(ErrorResponse.class);
1008 assertEquals("no policy found for policy: operational.restart:1", error.getErrorMessage());
1010 rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true, mediaType);
1011 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1012 error = rawResponse.readEntity(ErrorResponse.class);
1013 assertEquals("no policy found for policy: operational.scaleout:null", error.getErrorMessage());
1015 rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1016 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1017 error = rawResponse.readEntity(ErrorResponse.class);
1018 assertEquals("no policy found for policy: operational.scaleout:1", error.getErrorMessage());
1020 rawResponse = readResource(OPS_POLICIES_VFIREWALL_LATEST, true, mediaType);
1021 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1022 error = rawResponse.readEntity(ErrorResponse.class);
1023 assertEquals("no policy found for policy: operational.modifyconfig:null", error.getErrorMessage());
1025 rawResponse = readResource(OPS_POLICIES_VFIREWALL_VERSION, true, mediaType);
1026 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1027 error = rawResponse.readEntity(ErrorResponse.class);
1028 assertEquals("no policy found for policy: operational.modifyconfig:1", error.getErrorMessage());
1029 } catch (Exception exp) {
1030 fail("Test should not throw an exception");
1035 public void testReadOperationalPoliciesPersistentJson() {
1036 testReadOperationalPoliciesPersistent(APP_JSON);
1040 public void testReadOperationalPoliciesPersistentYaml() {
1041 testReadOperationalPoliciesPersistent(APP_YAML);
1044 private void testReadOperationalPoliciesPersistent(String mediaType) {
1046 setupParameters(); // setup DB
1047 main = startApiService(true);
1048 for (String resrcName : legacyOperationalPolicyResourceNames) {
1049 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
1050 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1053 Response rawResponse = readResource(OPS_POLICIES_VCPE_LATEST, true, mediaType);
1054 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1057 rawResponse = readResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1058 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1061 rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true, mediaType);
1062 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1065 rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1066 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1069 rawResponse = readResource(OPS_POLICIES_VFIREWALL_LATEST, true, mediaType);
1070 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1073 rawResponse = readResource(OPS_POLICIES_VFIREWALL_VERSION, true, mediaType);
1074 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1075 } catch (Exception exp) {
1076 fail("Test should not throw an exception");
1081 public void testDeleteGuardPolicyJson() {
1082 testDeleteGuardPolicy(APP_JSON);
1086 public void testDeleteGuardPolicyYaml() {
1087 testDeleteGuardPolicy(APP_YAML);
1090 private void testDeleteGuardPolicy(String mediaType) {
1092 main = startApiService(true);
1093 Response rawResponse = deleteResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
1094 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1095 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
1096 assertEquals("no policy found for policy: guard.frequency.scaleout:1", error.getErrorMessage());
1097 } catch (Exception exp) {
1098 fail("Test should not throw an exception");
1103 public void testDeleteGuardPolicyPersistentJson() {
1104 testDeleteGuardPolicyPersistent(APP_JSON);
1108 public void testDeleteGuardPolicyPersistentYaml() {
1109 testDeleteGuardPolicyPersistent(APP_YAML);
1112 private void testDeleteGuardPolicyPersistent(String mediaType) {
1114 setupParameters(); // setup DB
1115 main = startApiService(true);
1117 for (String resrcName : legacyGuardPolicyResourceNames) {
1118 Response rawResponse = createGuardPolicy(GUARD_POLICIES, resrcName, true);
1119 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1122 Response rawResponse = deleteResource(GUARD_POLICIES_VDNS_FL_VERSION, true, mediaType);
1123 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1124 } catch (Exception exp) {
1125 fail("Test should not throw an exception");
1130 public void testGetDeployedVersionsOfGuardPolicyJson() {
1131 testGetDeployedVersionsOfGuardPolicy(APP_JSON);
1135 public void testGetDeployedVersionsOfGuardPolicyYaml() {
1136 testGetDeployedVersionsOfGuardPolicy(APP_YAML);
1139 private void testGetDeployedVersionsOfGuardPolicy(String mediaType) {
1141 main = startApiService(true);
1142 Response rawResponse = readResource(GUARD_POLICIES_VDNS_FL_DEPLOYED, true, mediaType);
1143 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
1144 } catch (Exception exp) {
1145 fail("Test should not throw an exception");
1150 public void testDeleteOperationalPolicyJson() {
1151 testDeleteOperationalPolicy(APP_JSON);
1155 public void testDeleteOperationalPolicyYaml() {
1156 testDeleteOperationalPolicy(APP_YAML);
1159 private void testDeleteOperationalPolicy(String mediaType) {
1161 main = startApiService(true);
1162 Response rawResponse = deleteResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1163 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1164 ErrorResponse error = rawResponse.readEntity(ErrorResponse.class);
1165 assertEquals("no policy found for policy: operational.restart:1", error.getErrorMessage());
1166 } catch (Exception exp) {
1167 fail("Test should not throw an exception");
1172 public void testDeleteOperationalPolicyPersistentJson() {
1173 testDeleteOperationalPolicyPersistent(APP_JSON);
1177 public void testDeleteOperationalPolicyPersistentYaml() {
1178 testDeleteOperationalPolicyPersistent(APP_YAML);
1181 private void testDeleteOperationalPolicyPersistent(String mediaType) {
1183 setupParameters(); // setup DB
1184 main = startApiService(true);
1185 for (String resrcName : legacyOperationalPolicyResourceNames) {
1186 Response rawResponse = createOperationalPolicy(OPS_POLICIES, resrcName, true);
1187 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1189 Response rawResponse = deleteResource(OPS_POLICIES_VCPE_VERSION, true, mediaType);
1190 assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
1191 } catch (Exception exp) {
1192 fail("Test should not throw an exception");
1198 public void testGetDeployedVersionsOfPolicyJson() {
1199 testGetDeployedVersionsOfPolicy(APP_JSON);
1203 public void testGetDeployedVersionsOfPolicyYaml() {
1204 testGetDeployedVersionsOfPolicy(APP_YAML);
1207 private void testGetDeployedVersionsOfPolicy(String mediaType) {
1209 main = startApiService(true);
1210 Response rawResponse = readResource(POLICYTYPES_TCA_POLICIES_VCPE_DEPLOYED, true, mediaType);
1211 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
1212 } catch (Exception exp) {
1213 fail("Test should not throw an exception");
1218 public void testGetLatestVersionOfOperationalPolicyJson() {
1219 testGetLatestVersionOfOperationalPolicy(APP_JSON);
1223 public void testGetLatestVersionOfOperationalPolicyYaml() {
1224 testGetLatestVersionOfOperationalPolicy(APP_YAML);
1227 private void testGetLatestVersionOfOperationalPolicy(String mediaType) {
1229 main = startApiService(true);
1230 Response rawResponse = readResource(OPS_POLICIES_VDNS_LATEST, true, mediaType);
1231 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1232 } catch (Exception exp) {
1233 fail("Test should not throw an exception");
1238 public void testGetSpecificVersionOfOperationalPolicyJson() {
1239 testGetSpecificVersionOfOperationalPolicy(APP_JSON);
1243 public void testGetSpecificVersionOfOperationalPolicyYaml() {
1244 testGetSpecificVersionOfOperationalPolicy(APP_YAML);
1247 private void testGetSpecificVersionOfOperationalPolicy(String mediaType) {
1249 main = startApiService(true);
1250 Response rawResponse = readResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1251 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1252 } catch (Exception exp) {
1253 fail("Test should not throw an exception");
1258 public void testGetDeployedVersionsOfOperationalPolicyJson() {
1259 testGetDeployedVersionsOfOperationalPolicy(APP_JSON);
1263 public void testGetDeployedVersionsOfOperationalPolicyYaml() {
1264 testGetDeployedVersionsOfOperationalPolicy(APP_YAML);
1267 private void testGetDeployedVersionsOfOperationalPolicy(String mediaType) {
1269 main = startApiService(true);
1270 Response rawResponse = readResource(OPS_POLICIES_VCPE_DEPLOYED, true, mediaType);
1271 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), rawResponse.getStatus());
1272 } catch (Exception exp) {
1273 fail("Test should not throw an exception");
1278 public void testDeleteSpecificVersionOfOperationalPolicyJson() {
1279 testDeleteSpecificVersionOfOperationalPolicy(APP_JSON);
1283 public void testDeleteSpecificVersionOfOperationalPolicyYaml() {
1284 testDeleteSpecificVersionOfOperationalPolicy(APP_YAML);
1287 private void testDeleteSpecificVersionOfOperationalPolicy(String mediaType) {
1289 main = startApiService(true);
1290 Response rawResponse = deleteResource(OPS_POLICIES_VDNS_VERSION, true, mediaType);
1291 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawResponse.getStatus());
1292 } catch (Exception exp) {
1293 fail("Test should not throw an exception");
1297 private Response createResource(String endpoint, String resourceName, boolean http)
1300 String mediaType = APP_JSON; // default media type
1301 ToscaServiceTemplate rawServiceTemplate = new ToscaServiceTemplate();
1302 if (resourceName.endsWith(".json")) {
1303 rawServiceTemplate = standardCoder.decode(
1304 ResourceUtils.getResourceAsString(resourceName), ToscaServiceTemplate.class);
1305 } else if (resourceName.endsWith(".yaml") || resourceName.endsWith(".yml")) {
1306 mediaType = APP_YAML;
1307 rawServiceTemplate = standardYamlCoder.decode(
1308 ResourceUtils.getResourceAsString(resourceName), ToscaServiceTemplate.class);
1311 final Invocation.Builder invocationBuilder;
1314 invocationBuilder = sendHttpRequest(endpoint, mediaType);
1316 invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1319 Entity<ToscaServiceTemplate> entity = Entity.entity(rawServiceTemplate, mediaType);
1320 return invocationBuilder.post(entity);
1323 private Response createGuardPolicy(String endpoint, String resourceName, boolean http)
1326 String mediaType = APP_JSON; // default media type
1327 LegacyGuardPolicyInput rawGuardPolicy = new LegacyGuardPolicyInput();
1328 if (resourceName.endsWith(".json")) {
1329 rawGuardPolicy = standardCoder.decode(
1330 ResourceUtils.getResourceAsString(resourceName), LegacyGuardPolicyInput.class);
1331 } else if (resourceName.endsWith(".yaml") || resourceName.endsWith(".yml")) {
1332 mediaType = APP_YAML;
1333 rawGuardPolicy = standardYamlCoder.decode(
1334 ResourceUtils.getResourceAsString(resourceName), LegacyGuardPolicyInput.class);
1337 final Invocation.Builder invocationBuilder;
1340 invocationBuilder = sendHttpRequest(endpoint, mediaType);
1342 invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1345 Entity<LegacyGuardPolicyInput> entity = Entity.entity(rawGuardPolicy, mediaType);
1346 return invocationBuilder.post(entity);
1349 private Response createOperationalPolicy(String endpoint, String resourceName, boolean http)
1352 String mediaType = APP_JSON; // default media type
1353 LegacyOperationalPolicy rawOpsPolicy = new LegacyOperationalPolicy();
1354 if (resourceName.endsWith(".json")) {
1355 rawOpsPolicy = standardCoder.decode(
1356 ResourceUtils.getResourceAsString(resourceName), LegacyOperationalPolicy.class);
1357 } else if (resourceName.endsWith(".yaml") || resourceName.endsWith(".yml")) {
1358 mediaType = APP_YAML;
1359 rawOpsPolicy = standardYamlCoder.decode(
1360 ResourceUtils.getResourceAsString(resourceName), LegacyOperationalPolicy.class);
1363 final Invocation.Builder invocationBuilder;
1366 invocationBuilder = sendHttpRequest(endpoint, mediaType);
1368 invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1371 Entity<LegacyOperationalPolicy> entity = Entity.entity(rawOpsPolicy, mediaType);
1372 return invocationBuilder.post(entity);
1375 private Response readResource(String endpoint, boolean http, String mediaType) throws Exception {
1377 final Invocation.Builder invocationBuilder;
1380 invocationBuilder = sendHttpRequest(endpoint, mediaType);
1382 invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1385 return invocationBuilder.get();
1389 private Response deleteResource(String endpoint, boolean http, String mediaType) throws Exception {
1391 final Invocation.Builder invocationBuilder;
1394 invocationBuilder = sendHttpRequest(endpoint, mediaType);
1396 invocationBuilder = sendHttpsRequest(endpoint, mediaType);
1399 return invocationBuilder.delete();
1402 private Main startApiService(final boolean http) throws Exception {
1403 port = NetworkUtil.allocPort();
1405 final String[] apiConfigParameters = new String[2];
1407 COMMON_TEST_DATA.makeParameters("src/test/resources/parameters/ApiConfigParameters.json",
1408 "src/test/resources/parameters/ApiConfigParametersXXX.json", port);
1409 apiConfigParameters[0] = "-c";
1410 apiConfigParameters[1] = "src/test/resources/parameters/ApiConfigParametersXXX.json";
1412 final Properties systemProps = System.getProperties();
1413 systemProps.put("javax.net.ssl.keyStore", KEYSTORE);
1414 systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
1415 System.setProperties(systemProps);
1416 COMMON_TEST_DATA.makeParameters("src/test/resources/parameters/ApiConfigParameters_Https.json",
1417 "src/test/resources/parameters/ApiConfigParameters_HttpsXXX.json", port);
1418 apiConfigParameters[0] = "-c";
1419 apiConfigParameters[1] = "src/test/resources/parameters/ApiConfigParameters_HttpsXXX.json";
1421 return new Main(apiConfigParameters);
1424 private void stopApiService(final Main main) throws PolicyApiException {
1429 private Invocation.Builder sendHttpRequest(final String endpoint, String mediaType) throws Exception {
1431 final ClientConfig clientConfig = new ClientConfig();
1433 final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
1434 clientConfig.register(feature);
1436 final Client client = ClientBuilder.newClient(clientConfig);
1438 client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
1439 if (APP_JSON.equalsIgnoreCase(mediaType)) {
1440 client.register(GsonMessageBodyHandler.class);
1441 } else if (APP_YAML.equalsIgnoreCase(mediaType)) {
1442 client.register(YamlMessageBodyHandler.class);
1445 final WebTarget webTarget = client.target("http://localhost:" + port + "/policy/api/v1/" + endpoint);
1447 final Invocation.Builder invocationBuilder = webTarget.request(mediaType);
1449 if (!NetworkUtil.isTcpPortOpen("localhost", port, 60, 1000L)) {
1450 throw new IllegalStateException("cannot connect to port " + port);
1452 return invocationBuilder;
1455 private Invocation.Builder sendHttpsRequest(final String endpoint, String mediaType) throws Exception {
1457 final TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
1460 public X509Certificate[] getAcceptedIssuers() {
1461 return new X509Certificate[0];
1465 public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
1468 public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
1471 final SSLContext sc = SSLContext.getInstance("TLSv1.2");
1472 sc.init(null, noopTrustManager, new SecureRandom());
1473 final ClientBuilder clientBuilder =
1474 ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier((host, session) -> true);
1475 final Client client = clientBuilder.build();
1476 final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
1477 client.register(feature);
1479 client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
1480 if (APP_JSON.equalsIgnoreCase(mediaType)) {
1481 client.register(GsonMessageBodyHandler.class);
1482 } else if (APP_YAML.equalsIgnoreCase(mediaType)) {
1483 client.register(YamlMessageBodyHandler.class);
1486 final WebTarget webTarget = client.target("https://localhost:" + port + "/policy/api/v1/" + endpoint);
1488 final Invocation.Builder invocationBuilder = webTarget.request(mediaType);
1490 if (!NetworkUtil.isTcpPortOpen("localhost", port, 60, 1000L)) {
1491 throw new IllegalStateException("cannot connect to port " + port);
1493 return invocationBuilder;
1496 private void updateApiStatistics() {
1498 ApiStatisticsManager.updateTotalApiCallCount();
1499 ApiStatisticsManager.updateApiCallSuccessCount();
1500 ApiStatisticsManager.updateApiCallFailureCount();
1501 ApiStatisticsManager.updateTotalPolicyGetCount();
1502 ApiStatisticsManager.updateTotalPolicyPostCount();
1503 ApiStatisticsManager.updateTotalPolicyTypeGetCount();
1504 ApiStatisticsManager.updateTotalPolicyTypePostCount();
1505 ApiStatisticsManager.updatePolicyGetSuccessCount();
1506 ApiStatisticsManager.updatePolicyGetFailureCount();
1507 ApiStatisticsManager.updatePolicyPostSuccessCount();
1508 ApiStatisticsManager.updatePolicyPostFailureCount();
1509 ApiStatisticsManager.updatePolicyTypeGetSuccessCount();
1510 ApiStatisticsManager.updatePolicyTypeGetFailureCount();
1511 ApiStatisticsManager.updatePolicyTypePostSuccessCount();
1512 ApiStatisticsManager.updatePolicyTypePostFailureCount();
1515 private void validateStatisticsReport(final StatisticsReport report, final int code) {
1517 assertEquals(code, report.getCode());
1520 private void validateHealthCheckReport(final String name, final String url, final boolean healthy, final int code,
1521 final String message, final HealthCheckReport report) {
1523 assertEquals(name, report.getName());
1524 assertEquals(url, report.getUrl());
1525 assertEquals(healthy, report.isHealthy());
1526 assertEquals(code, report.getCode());
1527 assertEquals(message, report.getMessage());