2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END============================================
20 * ===================================================================
24 package org.onap.clamp.loop;
26 import static org.assertj.core.api.Assertions.assertThat;
28 import com.google.gson.JsonObject;
29 import java.io.IOException;
30 import java.util.LinkedList;
31 import java.util.List;
32 import java.util.SortedSet;
33 import java.util.TreeSet;
34 import java.util.stream.Collectors;
35 import javax.transaction.Transactional;
36 import org.junit.Test;
37 import org.junit.runner.RunWith;
38 import org.onap.clamp.clds.Application;
39 import org.onap.clamp.clds.util.JsonUtils;
40 import org.onap.clamp.clds.util.ResourceFileUtil;
41 import org.onap.clamp.loop.template.PolicyModel;
42 import org.onap.clamp.loop.template.PolicyModelId;
43 import org.onap.clamp.loop.template.PolicyModelsRepository;
44 import org.onap.clamp.loop.template.PolicyModelsService;
45 import org.onap.clamp.policy.pdpgroup.PdpGroup;
46 import org.onap.clamp.policy.pdpgroup.PdpSubgroup;
47 import org.onap.clamp.policy.pdpgroup.PolicyModelKey;
48 import org.springframework.beans.factory.annotation.Autowired;
49 import org.springframework.boot.test.context.SpringBootTest;
50 import org.springframework.test.context.junit4.SpringRunner;
52 @RunWith(SpringRunner.class)
53 @SpringBootTest(classes = Application.class)
54 public class PolicyModelServiceItCase {
57 PolicyModelsService policyModelsService;
60 PolicyModelsRepository policyModelsRepository;
62 private static final String POLICY_MODEL_TYPE_1 = "org.onap.testos";
63 private static final String POLICY_MODEL_TYPE_1_VERSION_1 = "1.0.0";
65 private static final String POLICY_MODEL_TYPE_2 = "org.onap.testos2";
66 private static final String POLICY_MODEL_TYPE_3 = "org.onap.testos3";
67 private static final String POLICY_MODEL_TYPE_2_VERSION_1 = "1.0.0";
68 private static final String POLICY_MODEL_TYPE_3_VERSION_1 = "1.0.0";
69 private static final String POLICY_MODEL_TYPE_2_VERSION_2 = "2.0.0";
71 private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version,
72 String policyAcronym, String policyVariant, String createdBy) {
73 PolicyModel policyModel = new PolicyModel();
74 policyModel.setCreatedBy(createdBy);
75 policyModel.setPolicyAcronym(policyAcronym);
76 policyModel.setPolicyModelTosca(policyModelTosca);
77 policyModel.setPolicyModelType(policyType);
78 policyModel.setUpdatedBy(createdBy);
79 policyModel.setVersion(version);
84 * This test the create policy Model.
88 public void shouldCreatePolicyModel() {
90 PolicyModel policyModel = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml",
91 POLICY_MODEL_TYPE_1_VERSION_1, "TEST", "VARIANT", "user");
94 PolicyModel actualPolicyModel = policyModelsService.saveOrUpdatePolicyModel(policyModel);
97 assertThat(actualPolicyModel).isNotNull();
98 assertThat(actualPolicyModel).isEqualTo(policyModelsRepository
99 .findById(new PolicyModelId(actualPolicyModel.getPolicyModelType(),
100 actualPolicyModel.getVersion()))
102 assertThat(actualPolicyModel.getPolicyModelType())
103 .isEqualTo(policyModel.getPolicyModelType());
104 assertThat(actualPolicyModel.getCreatedBy()).isEqualTo("Not found");
105 assertThat(actualPolicyModel.getCreatedDate()).isNotNull();
106 assertThat(actualPolicyModel.getPolicyAcronym()).isEqualTo(policyModel.getPolicyAcronym());
107 assertThat(actualPolicyModel.getPolicyModelTosca())
108 .isEqualTo(policyModel.getPolicyModelTosca());
109 assertThat(actualPolicyModel.getUpdatedBy()).isEqualTo("Not found");
110 assertThat(actualPolicyModel.getUpdatedDate()).isNotNull();
111 assertThat(actualPolicyModel.getVersion()).isEqualTo(policyModel.getVersion());
114 policyModelsService.getPolicyModel(POLICY_MODEL_TYPE_1, POLICY_MODEL_TYPE_1_VERSION_1))
115 .isEqualToIgnoringGivenFields(policyModel, "createdDate", "updatedDate",
116 "createdBy", "updatedBy");
120 * This tests a create Policy Model from Tosca.
122 * @throws IOException
126 public void shouldCreatePolicyModelFromTosca() throws IOException {
127 String toscaModelYaml =
128 ResourceFileUtil.getResourceAsString("tosca/tosca_with_metadata.yaml");
129 PolicyModel policyModel = policyModelsService.createNewPolicyModelFromTosca(toscaModelYaml);
131 assertThat(policyModelsService.getAllPolicyModels()).contains(policyModel);
133 assertThat(policyModelsService.getPolicyModelTosca(policyModel.getPolicyModelType(),
134 policyModel.getVersion())).contains(toscaModelYaml);
138 * This tests a update Policy Model.
140 * @throws IOException
144 public void shouldUpdatePolicyModel() throws IOException {
145 String toscaModelYaml =
146 ResourceFileUtil.getResourceAsString("tosca/tosca_with_metadata.yaml");
147 PolicyModel policyModel = policyModelsService.createNewPolicyModelFromTosca(toscaModelYaml);
148 String newToscaModelYaml =
149 ResourceFileUtil.getResourceAsString("tosca/tosca_metadata_clamp_possible_values.yaml");
151 PolicyModel updatedPolicyModel = policyModelsService.updatePolicyModelTosca(
152 policyModel.getPolicyModelType(), policyModel.getVersion(), newToscaModelYaml);
154 assertThat(updatedPolicyModel.getPolicyModelTosca()).isEqualTo(newToscaModelYaml);
159 * This tests a getAllPolicyModelTypes get.
163 public void shouldReturnAllPolicyModelTypes() {
165 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
166 POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user");
167 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
168 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
169 POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user");
170 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
171 List<String> policyModelTypesList = policyModelsService.getAllPolicyModelTypes();
173 assertThat(policyModelTypesList).contains(policyModel1.getPolicyModelType(),
174 policyModel2.getPolicyModelType());
178 * This tests a getAllPolicyModels get.
182 public void shouldReturnAllPolicyModels() {
183 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
184 POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user");
185 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
186 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
187 POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user");
188 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
190 assertThat(policyModelsService.getAllPolicyModels()).contains(policyModel1, policyModel2);
194 * This tests a getAllPolicyModelsByType get.
198 public void shouldReturnAllModelsByType() {
199 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
200 POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user");
201 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
202 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
203 POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user");
204 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
206 assertThat(policyModelsService.getAllPolicyModelsByType(POLICY_MODEL_TYPE_2))
207 .contains(policyModel1, policyModel2);
211 * This tests the sorting of policyModel.
215 public void shouldReturnSortedSet() {
216 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
217 POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user");
218 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
219 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
220 POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user");
221 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
222 PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml",
223 POLICY_MODEL_TYPE_3_VERSION_1, "TEST", "VARIANT", "user");
224 policyModelsService.saveOrUpdatePolicyModel(policyModel3);
226 SortedSet<PolicyModel> sortedSet = new TreeSet<>();
227 policyModelsService.getAllPolicyModels().forEach(sortedSet::add);
228 List<PolicyModel> listToCheck =
230 .stream().filter(policy -> policy.equals(policyModel3)
231 || policy.equals(policyModel2) || policy.equals(policyModel1))
232 .collect(Collectors.toList());
233 assertThat(listToCheck.get(0)).isEqualByComparingTo(policyModel2);
234 assertThat(listToCheck.get(1)).isEqualByComparingTo(policyModel1);
235 assertThat(listToCheck.get(2)).isEqualByComparingTo(policyModel3);
239 * This tests the pdpgroup GSON encode/decode and saving.
243 public void shouldAddPdpGroupInfo() {
244 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml",
245 POLICY_MODEL_TYPE_1_VERSION_1, "TEST", "VARIANT", "user");
246 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
247 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml",
248 POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user");
249 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
250 PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml",
251 POLICY_MODEL_TYPE_3_VERSION_1, "TEST", "VARIANT", "user");
252 policyModelsService.saveOrUpdatePolicyModel(policyModel3);
254 PolicyModelKey type1 = new PolicyModelKey("org.onap.testos", "1.0.0");
255 PolicyModelKey type2 = new PolicyModelKey("org.onap.testos2", "2.0.0");
257 PdpSubgroup pdpSubgroup1 = new PdpSubgroup();
258 pdpSubgroup1.setPdpType("subGroup1");
259 List<PolicyModelKey> pdpTypeList = new LinkedList<PolicyModelKey>();
260 pdpTypeList.add(type1);
261 pdpTypeList.add(type2);
262 pdpSubgroup1.setSupportedPolicyTypes(pdpTypeList);
264 PolicyModelKey type3 = new PolicyModelKey("org.onap.testos3", "2.0.0");
265 PdpSubgroup pdpSubgroup2 = new PdpSubgroup();
266 pdpSubgroup2.setPdpType("subGroup2");
267 List<PolicyModelKey> pdpTypeList2 = new LinkedList<PolicyModelKey>();
268 pdpTypeList2.add(type2);
269 pdpTypeList2.add(type3);
270 pdpSubgroup2.setSupportedPolicyTypes(pdpTypeList2);
272 List<PdpSubgroup> pdpSubgroupList = new LinkedList<PdpSubgroup>();
273 pdpSubgroupList.add(pdpSubgroup1);
275 PdpGroup pdpGroup1 = new PdpGroup();
276 pdpGroup1.setName("pdpGroup1");
277 pdpGroup1.setPdpGroupState("ACTIVE");
278 pdpGroup1.setPdpSubgroups(pdpSubgroupList);
280 List<PdpSubgroup> pdpSubgroupList2 = new LinkedList<PdpSubgroup>();
281 pdpSubgroupList2.add(pdpSubgroup1);
282 pdpSubgroupList2.add(pdpSubgroup2);
283 PdpGroup pdpGroup2 = new PdpGroup();
284 pdpGroup2.setName("pdpGroup2");
285 pdpGroup2.setPdpGroupState("ACTIVE");
286 pdpGroup2.setPdpSubgroups(pdpSubgroupList2);
288 List<PdpGroup> pdpGroupList = new LinkedList<PdpGroup>();
289 pdpGroupList.add(pdpGroup1);
290 pdpGroupList.add(pdpGroup2);
291 policyModelsService.updatePdpGroupInfo(pdpGroupList);
294 policyModelsService.getPolicyModel("org.onap.testos", "1.0.0").getPolicyPdpGroup();
295 String expectedRes1 =
296 "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\"]}]}";
297 JsonObject expectedJson1 = JsonUtils.GSON.fromJson(expectedRes1, JsonObject.class);
298 assertThat(res1).isEqualTo(expectedJson1);
301 policyModelsService.getPolicyModel("org.onap.testos2", "2.0.0").getPolicyPdpGroup();
302 String expectedRes2 =
303 "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\",\"subGroup2\"]}]}";
304 JsonObject expectedJson2 = JsonUtils.GSON.fromJson(expectedRes2, JsonObject.class);
305 assertThat(res2).isEqualTo(expectedJson2);
308 policyModelsService.getPolicyModel("org.onap.testos3", "1.0.0").getPolicyPdpGroup();
309 assertThat(res3).isNull();