Merge "Add DecisionException"
[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.assertTrue;
28 import static org.junit.Assert.fail;
29
30 import java.util.ArrayList;
31
32 import org.junit.Test;
33 import org.onap.policy.models.provider.PolicyModelsProvider;
34 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
35 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
36 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
37 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
38 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
39
40 /**
41  * Test the dummy models provider implementation.
42  *
43  * @author Liam Fallon (liam.fallon@est.tech)
44  */
45 public class DummyPolicyModelsProviderTest {
46
47     @Test
48     public void testProvider() throws Exception {
49         PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters();
50         parameters.setImplementation(DummyPolicyModelsProviderImpl.class.getCanonicalName());
51         parameters.setDatabaseUrl("jdbc:dummy");
52         parameters.setPersistenceUnit("dummy");
53
54         PolicyModelsProvider dummyProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
55
56         dummyProvider.init();
57
58         ToscaServiceTemplate serviceTemplate = dummyProvider.getPolicies("onap.vcpe.tca", "1.0.0");
59         assertNotNull(serviceTemplate);
60         assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app",
61                 serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get("onap.vcpe.tca").getType());
62
63         dummyProvider.close();
64     }
65
66     @Test
67     public void testProviderMethods() throws Exception {
68         PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters();
69         parameters.setImplementation(DummyPolicyModelsProviderImpl.class.getCanonicalName());
70         parameters.setDatabaseUrl("jdbc:dummy");
71         parameters.setPersistenceUnit("dummy");
72
73         PolicyModelsProvider dummyProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
74         dummyProvider.init();
75
76         assertNotNull(dummyProvider.getPolicyTypes("name", "version"));
77         assertNotNull(dummyProvider.createPolicyTypes(new ToscaServiceTemplate()));
78         assertNotNull(dummyProvider.updatePolicyTypes(new ToscaServiceTemplate()));
79         assertNotNull(dummyProvider.deletePolicyType("name", "version"));
80
81         assertNotNull(dummyProvider.getPolicies("name", "version"));
82         assertNotNull(dummyProvider.createPolicies(new ToscaServiceTemplate()));
83         assertNotNull(dummyProvider.updatePolicies(new ToscaServiceTemplate()));
84         assertNotNull(dummyProvider.deletePolicy("name", "version"));
85
86         assertNotNull(dummyProvider.getOperationalPolicy("policy_id"));
87         assertNotNull(dummyProvider.createOperationalPolicy(new LegacyOperationalPolicy()));
88         assertNotNull(dummyProvider.updateOperationalPolicy(new LegacyOperationalPolicy()));
89         assertNotNull(dummyProvider.deleteOperationalPolicy("policy_id"));
90
91         assertNotNull(dummyProvider.getGuardPolicy("policy_id"));
92         assertNotNull(dummyProvider.createGuardPolicy(new LegacyGuardPolicyInput()));
93         assertNotNull(dummyProvider.updateGuardPolicy(new LegacyGuardPolicyInput()));
94         assertNotNull(dummyProvider.deleteGuardPolicy("policy_id"));
95
96         assertTrue(dummyProvider.getPdpGroups("name", "version").isEmpty());
97         assertTrue(dummyProvider.createPdpGroups(new ArrayList<>()).isEmpty());
98         assertTrue(dummyProvider.updatePdpGroups(new ArrayList<>()).isEmpty());
99         assertNull(dummyProvider.deletePdpGroup("name", "version"));
100
101
102         assertThatThrownBy(() -> {
103             dummyProvider.getOperationalPolicy(null);
104         }).hasMessage("policyId is marked @NonNull but is null");
105         assertThatThrownBy(() -> {
106             dummyProvider.createOperationalPolicy(null);
107         }).hasMessage("legacyOperationalPolicy is marked @NonNull but is null");
108         assertThatThrownBy(() -> {
109             dummyProvider.updateOperationalPolicy(null);
110         }).hasMessage("legacyOperationalPolicy is marked @NonNull but is null");
111         assertThatThrownBy(() -> {
112             dummyProvider.deleteOperationalPolicy(null);
113         }).hasMessage("policyId is marked @NonNull but is null");
114
115         assertThatThrownBy(() -> {
116             dummyProvider.getGuardPolicy(null);
117         }).hasMessage("policyId is marked @NonNull but is null");
118         assertThatThrownBy(() -> {
119             dummyProvider.createGuardPolicy(null);
120         }).hasMessage("legacyGuardPolicy is marked @NonNull but is null");
121         assertThatThrownBy(() -> {
122             dummyProvider.updateGuardPolicy(null);
123         }).hasMessage("legacyGuardPolicy is marked @NonNull but is null");
124         assertThatThrownBy(() -> {
125             dummyProvider.deleteGuardPolicy(null);
126         }).hasMessage("policyId is marked @NonNull but is null");
127
128         assertThatThrownBy(() -> {
129             dummyProvider.createPdpGroups(null);
130         }).hasMessage("pdpGroups is marked @NonNull but is null");
131         assertThatThrownBy(() -> {
132             dummyProvider.updatePdpGroups(null);
133         }).hasMessage("pdpGroups is marked @NonNull but is null");
134         assertThatThrownBy(() -> {
135             dummyProvider.deletePdpGroup(null, null);
136         }).hasMessage("name is marked @NonNull but is null");
137
138         dummyProvider.close();
139     }
140
141     @Test
142     public void testDummyResponse() {
143         DummyPolicyModelsProviderSubImpl resp = null;
144
145         try {
146             resp = new DummyPolicyModelsProviderSubImpl(new PolicyModelsProviderParameters());
147             resp.getBadDummyResponse1();
148             fail("test should throw an exception");
149         } catch (Exception npe) {
150             assertEquals("error serializing object", npe.getMessage());
151         } finally {
152             if (resp != null) {
153                 resp.close();
154             }
155         }
156
157         try {
158             resp = new DummyPolicyModelsProviderSubImpl(new PolicyModelsProviderParameters());
159             resp.getBadDummyResponse2();
160             fail("test should throw an exception");
161         } catch (Exception npe) {
162             assertEquals("fileName is marked @NonNull but is null", npe.getMessage());
163         } finally {
164             if (resp != null) {
165                 resp.close();
166             }
167         }
168     }
169 }