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.util.LinkedList;
30 import java.util.List;
31 import java.util.SortedSet;
32 import java.util.TreeSet;
33 import java.util.stream.Collectors;
34 import javax.transaction.Transactional;
35 import org.junit.Test;
36 import org.junit.runner.RunWith;
37 import org.onap.clamp.clds.Application;
38 import org.onap.clamp.clds.util.JsonUtils;
39 import org.onap.clamp.loop.template.PolicyModel;
40 import org.onap.clamp.loop.template.PolicyModelId;
41 import org.onap.clamp.loop.template.PolicyModelsRepository;
42 import org.onap.clamp.loop.template.PolicyModelsService;
43 import org.onap.clamp.policy.pdpgroup.PdpGroup;
44 import org.onap.clamp.policy.pdpgroup.PdpSubgroup;
45 import org.onap.clamp.policy.pdpgroup.PolicyModelKey;
46 import org.springframework.beans.factory.annotation.Autowired;
47 import org.springframework.boot.test.context.SpringBootTest;
48 import org.springframework.test.context.junit4.SpringRunner;
50 @RunWith(SpringRunner.class)
51 @SpringBootTest(classes = Application.class)
52 public class PolicyModelServiceItCase {
55 PolicyModelsService policyModelsService;
58 PolicyModelsRepository policyModelsRepository;
60 private static final String POLICY_MODEL_TYPE_1 = "org.onap.testos";
61 private static final String POLICY_MODEL_TYPE_1_VERSION_1 = "1.0.0";
63 private static final String POLICY_MODEL_TYPE_2 = "org.onap.testos2";
64 private static final String POLICY_MODEL_TYPE_3 = "org.onap.testos3";
65 private static final String POLICY_MODEL_TYPE_2_VERSION_1 = "1.0.0";
66 private static final String POLICY_MODEL_TYPE_3_VERSION_1 = "1.0.0";
67 private static final String POLICY_MODEL_TYPE_2_VERSION_2 = "2.0.0";
69 private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, String policyAcronym,
70 String policyVariant, String createdBy) {
71 PolicyModel policyModel = new PolicyModel();
72 policyModel.setCreatedBy(createdBy);
73 policyModel.setPolicyAcronym(policyAcronym);
74 policyModel.setPolicyModelTosca(policyModelTosca);
75 policyModel.setPolicyModelType(policyType);
76 policyModel.setUpdatedBy(createdBy);
77 policyModel.setVersion(version);
82 * This test the create policy Model.
86 public void shouldCreatePolicyModel() {
88 PolicyModel policyModel = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", POLICY_MODEL_TYPE_1_VERSION_1, "TEST",
92 PolicyModel actualPolicyModel = policyModelsService.saveOrUpdatePolicyModel(policyModel);
95 assertThat(actualPolicyModel).isNotNull();
96 assertThat(actualPolicyModel).isEqualTo(policyModelsRepository
97 .findById(new PolicyModelId(actualPolicyModel.getPolicyModelType(), actualPolicyModel.getVersion()))
99 assertThat(actualPolicyModel.getPolicyModelType()).isEqualTo(policyModel.getPolicyModelType());
100 assertThat(actualPolicyModel.getCreatedBy()).isEqualTo("Not found");
101 assertThat(actualPolicyModel.getCreatedDate()).isNotNull();
102 assertThat(actualPolicyModel.getPolicyAcronym()).isEqualTo(policyModel.getPolicyAcronym());
103 assertThat(actualPolicyModel.getPolicyModelTosca()).isEqualTo(policyModel.getPolicyModelTosca());
104 assertThat(actualPolicyModel.getUpdatedBy()).isEqualTo("Not found");
105 assertThat(actualPolicyModel.getUpdatedDate()).isNotNull();
106 assertThat(actualPolicyModel.getVersion()).isEqualTo(policyModel.getVersion());
108 assertThat(policyModelsService.getPolicyModel(POLICY_MODEL_TYPE_1, POLICY_MODEL_TYPE_1_VERSION_1))
109 .isEqualToIgnoringGivenFields(policyModel, "createdDate", "updatedDate", "createdBy", "updatedBy");
113 * This tests a getAllPolicyModelTypes get.
117 public void shouldReturnAllPolicyModelTypes() {
119 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
121 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
122 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
124 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
125 List<String> policyModelTypesList = policyModelsService.getAllPolicyModelTypes();
127 assertThat(policyModelTypesList).contains(policyModel1.getPolicyModelType(), policyModel2.getPolicyModelType());
131 * This tests a getAllPolicyModels get.
135 public void shouldReturnAllPolicyModels() {
136 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
138 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
139 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
141 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
143 assertThat(policyModelsService.getAllPolicyModels()).contains(policyModel1, policyModel2);
147 * This tests a getAllPolicyModelsByType get.
151 public void shouldReturnAllModelsByType() {
152 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
154 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
155 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
157 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
159 assertThat(policyModelsService.getAllPolicyModelsByType(POLICY_MODEL_TYPE_2)).contains(policyModel1,
164 * This tests the sorting of policyModel.
168 public void shouldReturnSortedSet() {
169 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
171 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
172 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
174 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
175 PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml", POLICY_MODEL_TYPE_3_VERSION_1, "TEST",
177 policyModelsService.saveOrUpdatePolicyModel(policyModel3);
179 SortedSet<PolicyModel> sortedSet = new TreeSet<>();
180 policyModelsService.getAllPolicyModels().forEach(sortedSet::add);
181 List<PolicyModel> listToCheck = sortedSet.stream()
182 .filter(policy -> policy.equals(policyModel3) || policy.equals(policyModel2)
183 || policy.equals(policyModel1)).collect(Collectors.toList());
184 assertThat(listToCheck.get(0)).isEqualByComparingTo(policyModel2);
185 assertThat(listToCheck.get(1)).isEqualByComparingTo(policyModel1);
186 assertThat(listToCheck.get(2)).isEqualByComparingTo(policyModel3);
190 * This tests the pdpgroup GSON encode/decode and saving.
194 public void shouldAddPdpGroupInfo() {
195 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", POLICY_MODEL_TYPE_1_VERSION_1, "TEST",
197 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
198 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
200 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
201 PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml", POLICY_MODEL_TYPE_3_VERSION_1, "TEST",
203 policyModelsService.saveOrUpdatePolicyModel(policyModel3);
206 PolicyModelKey type1 = new PolicyModelKey("org.onap.testos", "1.0.0");
207 PolicyModelKey type2 = new PolicyModelKey("org.onap.testos2", "2.0.0");
209 PdpSubgroup pdpSubgroup1 = new PdpSubgroup();
210 pdpSubgroup1.setPdpType("subGroup1");
211 List<PolicyModelKey> pdpTypeList = new LinkedList<PolicyModelKey>();
212 pdpTypeList.add(type1);
213 pdpTypeList.add(type2);
214 pdpSubgroup1.setSupportedPolicyTypes(pdpTypeList);
216 PolicyModelKey type3 = new PolicyModelKey("org.onap.testos3", "2.0.0");
217 PdpSubgroup pdpSubgroup2 = new PdpSubgroup();
218 pdpSubgroup2.setPdpType("subGroup2");
219 List<PolicyModelKey> pdpTypeList2 = new LinkedList<PolicyModelKey>();
220 pdpTypeList2.add(type2);
221 pdpTypeList2.add(type3);
222 pdpSubgroup2.setSupportedPolicyTypes(pdpTypeList2);
224 List<PdpSubgroup> pdpSubgroupList = new LinkedList<PdpSubgroup>();
225 pdpSubgroupList.add(pdpSubgroup1);
227 PdpGroup pdpGroup1 = new PdpGroup();
228 pdpGroup1.setName("pdpGroup1");
229 pdpGroup1.setPdpGroupState("ACTIVE");
230 pdpGroup1.setPdpSubgroups(pdpSubgroupList);
232 List<PdpSubgroup> pdpSubgroupList2 = new LinkedList<PdpSubgroup>();
233 pdpSubgroupList2.add(pdpSubgroup1);
234 pdpSubgroupList2.add(pdpSubgroup2);
235 PdpGroup pdpGroup2 = new PdpGroup();
236 pdpGroup2.setName("pdpGroup2");
237 pdpGroup2.setPdpGroupState("ACTIVE");
238 pdpGroup2.setPdpSubgroups(pdpSubgroupList2);
240 List<PdpGroup> pdpGroupList = new LinkedList<PdpGroup>();
241 pdpGroupList.add(pdpGroup1);
242 pdpGroupList.add(pdpGroup2);
243 policyModelsService.updatePdpGroupInfo(pdpGroupList);
245 JsonObject res1 = policyModelsService.getPolicyModel("org.onap.testos", "1.0.0").getPolicyPdpGroup();
246 String expectedRes1 =
247 "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\"]}]}";
248 JsonObject expectedJson1 = JsonUtils.GSON.fromJson(expectedRes1, JsonObject.class);
249 assertThat(res1).isEqualTo(expectedJson1);
251 JsonObject res2 = policyModelsService.getPolicyModel("org.onap.testos2", "2.0.0").getPolicyPdpGroup();
252 String expectedRes2 =
253 "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\",\"subGroup2\"]}]}";
254 JsonObject expectedJson2 = JsonUtils.GSON.fromJson(expectedRes2, JsonObject.class);
255 assertThat(res2).isEqualTo(expectedJson2);
257 JsonObject res3 = policyModelsService.getPolicyModel("org.onap.testos3", "1.0.0").getPolicyPdpGroup();
258 assertThat(res3).isNull();