Merge "Add extra methods to Provider interface"
[policy/models.git] / models-provider / src / test / java / org / onap / policy / models / provider / impl / DummyPolicyModelsProviderTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.models.provider.impl;
22
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertNull;
27 import static org.junit.Assert.fail;
28
29 import org.junit.Test;
30 import org.onap.policy.models.pdp.concepts.PdpGroups;
31 import org.onap.policy.models.provider.PolicyModelsProvider;
32 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
33 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
34 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
35 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
36 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
37
38 /**
39  * Test the dummy models provider implementation.
40  *
41  * @author Liam Fallon (liam.fallon@est.tech)
42  */
43 public class DummyPolicyModelsProviderTest {
44
45     @Test
46     public void testProvider() throws Exception {
47         PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters();
48         parameters.setImplementation(DummyPolicyModelsProviderImpl.class.getCanonicalName());
49         parameters.setDatabaseUrl("jdbc:dummy");
50         parameters.setPersistenceUnit("dummy");
51
52         PolicyModelsProvider dummyProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
53
54         dummyProvider.init();
55
56         ToscaServiceTemplate serviceTemplate = dummyProvider.getPolicies("onap.vcpe.tca", "1.0.0");
57         assertNotNull(serviceTemplate);
58         assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app",
59                 serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get("onap.vcpe.tca").getType());
60
61         dummyProvider.close();
62     }
63
64     @Test
65     public void testProviderMethods() throws Exception {
66         PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters();
67         parameters.setImplementation(DummyPolicyModelsProviderImpl.class.getCanonicalName());
68         parameters.setDatabaseUrl("jdbc:dummy");
69         parameters.setPersistenceUnit("dummy");
70
71         PolicyModelsProvider dummyProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
72         dummyProvider.init();
73
74         assertNotNull(dummyProvider.getPolicyTypes("name", "version"));
75         assertNotNull(dummyProvider.createPolicyTypes(new ToscaServiceTemplate()));
76         assertNotNull(dummyProvider.updatePolicyTypes(new ToscaServiceTemplate()));
77         assertNotNull(dummyProvider.deletePolicyType("name", "version"));
78
79         assertNotNull(dummyProvider.getPolicies("name", "version"));
80         assertNotNull(dummyProvider.createPolicies(new ToscaServiceTemplate()));
81         assertNotNull(dummyProvider.updatePolicies(new ToscaServiceTemplate()));
82         assertNotNull(dummyProvider.deletePolicy("name", "version"));
83
84         assertNotNull(dummyProvider.getOperationalPolicy("policy_id"));
85         assertNotNull(dummyProvider.createOperationalPolicy(new LegacyOperationalPolicy()));
86         assertNotNull(dummyProvider.updateOperationalPolicy(new LegacyOperationalPolicy()));
87         assertNotNull(dummyProvider.deleteOperationalPolicy("policy_id"));
88
89         assertNotNull(dummyProvider.getGuardPolicy("policy_id"));
90         assertNotNull(dummyProvider.createGuardPolicy(new LegacyGuardPolicyInput()));
91         assertNotNull(dummyProvider.updateGuardPolicy(new LegacyGuardPolicyInput()));
92         assertNotNull(dummyProvider.deleteGuardPolicy("policy_id"));
93
94         assertNull(dummyProvider.getPdpGroups("name", "version"));
95         assertNull(dummyProvider.createPdpGroups(new PdpGroups()));
96         assertNull(dummyProvider.updatePdpGroups(new PdpGroups()));
97         assertNull(dummyProvider.deletePdpGroup("name", "version"));
98
99
100         assertThatThrownBy(() -> {
101             dummyProvider.getOperationalPolicy(null);
102         }).hasMessage("policyId is marked @NonNull but is null");
103         assertThatThrownBy(() -> {
104             dummyProvider.createOperationalPolicy(null);
105         }).hasMessage("legacyOperationalPolicy is marked @NonNull but is null");
106         assertThatThrownBy(() -> {
107             dummyProvider.updateOperationalPolicy(null);
108         }).hasMessage("legacyOperationalPolicy is marked @NonNull but is null");
109         assertThatThrownBy(() -> {
110             dummyProvider.deleteOperationalPolicy(null);
111         }).hasMessage("policyId is marked @NonNull but is null");
112
113         assertThatThrownBy(() -> {
114             dummyProvider.getGuardPolicy(null);
115         }).hasMessage("policyId is marked @NonNull but is null");
116         assertThatThrownBy(() -> {
117             dummyProvider.createGuardPolicy(null);
118         }).hasMessage("legacyGuardPolicy is marked @NonNull but is null");
119         assertThatThrownBy(() -> {
120             dummyProvider.updateGuardPolicy(null);
121         }).hasMessage("legacyGuardPolicy is marked @NonNull but is null");
122         assertThatThrownBy(() -> {
123             dummyProvider.deleteGuardPolicy(null);
124         }).hasMessage("policyId is marked @NonNull but is null");
125
126         assertThatThrownBy(() -> {
127             dummyProvider.createPdpGroups(null);
128         }).hasMessage("pdpGroups is marked @NonNull but is null");
129         assertThatThrownBy(() -> {
130             dummyProvider.updatePdpGroups(null);
131         }).hasMessage("pdpGroups is marked @NonNull but is null");
132         assertThatThrownBy(() -> {
133             dummyProvider.deletePdpGroup(null, null);
134         }).hasMessage("name is marked @NonNull but is null");
135
136         dummyProvider.close();
137     }
138
139     @Test
140     public void testDummyResponse() {
141         DummyPolicyModelsProviderSubImpl resp = null;
142
143         try {
144             resp = new DummyPolicyModelsProviderSubImpl(new PolicyModelsProviderParameters());
145             resp.getBadDummyResponse1();
146             fail("test should throw an exception");
147         } catch (Exception npe) {
148             assertEquals("error serializing object", npe.getMessage());
149         } finally {
150             if (resp != null) {
151                 resp.close();
152             }
153         }
154
155         try {
156             resp = new DummyPolicyModelsProviderSubImpl(new PolicyModelsProviderParameters());
157             resp.getBadDummyResponse2();
158             fail("test should throw an exception");
159         } catch (Exception npe) {
160             assertEquals("fileName is marked @NonNull but is null", npe.getMessage());
161         } finally {
162             if (resp != null) {
163                 resp.close();
164             }
165         }
166     }
167 }