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 java.util.LinkedList;
29 import java.util.List;
30 import java.util.SortedSet;
31 import java.util.TreeSet;
32 import java.util.stream.Collectors;
33 import javax.transaction.Transactional;
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36 import org.onap.clamp.clds.Application;
37 import org.onap.clamp.clds.util.JsonUtils;
38 import org.onap.clamp.loop.template.PolicyModel;
39 import org.onap.clamp.loop.template.PolicyModelId;
40 import org.onap.clamp.loop.template.PolicyModelsRepository;
41 import org.onap.clamp.loop.template.PolicyModelsService;
42 import org.onap.clamp.policy.pdpgroup.PdpGroup;
43 import org.onap.clamp.policy.pdpgroup.PdpSubgroup;
44 import org.onap.clamp.policy.pdpgroup.PolicyModelKey;
45 import org.springframework.beans.factory.annotation.Autowired;
46 import org.springframework.boot.test.context.SpringBootTest;
47 import org.springframework.test.context.junit4.SpringRunner;
49 import com.google.gson.JsonObject;
51 @RunWith(SpringRunner.class)
52 @SpringBootTest(classes = Application.class)
53 public class PolicyModelServiceItCase {
56 PolicyModelsService policyModelsService;
59 PolicyModelsRepository policyModelsRepository;
61 private static final String POLICY_MODEL_TYPE_1 = "org.onap.testos";
62 private static final String POLICY_MODEL_TYPE_1_VERSION_1 = "1.0.0";
64 private static final String POLICY_MODEL_TYPE_2 = "org.onap.testos2";
65 private static final String POLICY_MODEL_TYPE_3 = "org.onap.testos3";
66 private static final String POLICY_MODEL_TYPE_2_VERSION_1 = "1.0.0";
67 private static final String POLICY_MODEL_TYPE_3_VERSION_1 = "1.0.0";
68 private static final String POLICY_MODEL_TYPE_2_VERSION_2 = "2.0.0";
70 private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, String policyAcronym,
71 String policyVariant, String createdBy) {
72 PolicyModel policyModel = new PolicyModel();
73 policyModel.setCreatedBy(createdBy);
74 policyModel.setPolicyAcronym(policyAcronym);
75 policyModel.setPolicyModelTosca(policyModelTosca);
76 policyModel.setPolicyModelType(policyType);
77 policyModel.setUpdatedBy(createdBy);
78 policyModel.setVersion(version);
83 * This test the create policy Model.
87 public void shouldCreatePolicyModel() {
89 PolicyModel policyModel = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", POLICY_MODEL_TYPE_1_VERSION_1, "TEST",
93 PolicyModel actualPolicyModel = policyModelsService.saveOrUpdatePolicyModel(policyModel);
96 assertThat(actualPolicyModel).isNotNull();
97 assertThat(actualPolicyModel).isEqualTo(policyModelsRepository
98 .findById(new PolicyModelId(actualPolicyModel.getPolicyModelType(), actualPolicyModel.getVersion()))
100 assertThat(actualPolicyModel.getPolicyModelType()).isEqualTo(policyModel.getPolicyModelType());
101 assertThat(actualPolicyModel.getCreatedBy()).isEqualTo("Not found");
102 assertThat(actualPolicyModel.getCreatedDate()).isNotNull();
103 assertThat(actualPolicyModel.getPolicyAcronym()).isEqualTo(policyModel.getPolicyAcronym());
104 assertThat(actualPolicyModel.getPolicyModelTosca()).isEqualTo(policyModel.getPolicyModelTosca());
105 assertThat(actualPolicyModel.getUpdatedBy()).isEqualTo("Not found");
106 assertThat(actualPolicyModel.getUpdatedDate()).isNotNull();
107 assertThat(actualPolicyModel.getVersion()).isEqualTo(policyModel.getVersion());
109 assertThat(policyModelsService.getPolicyModel(POLICY_MODEL_TYPE_1, POLICY_MODEL_TYPE_1_VERSION_1))
110 .isEqualToIgnoringGivenFields(policyModel, "createdDate", "updatedDate", "createdBy", "updatedBy");
115 public void shouldReturnAllPolicyModelTypes() {
117 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
119 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
120 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
122 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
123 List<String> policyModelTypesList = policyModelsService.getAllPolicyModelTypes();
125 assertThat(policyModelTypesList).contains(policyModel1.getPolicyModelType(), policyModel2.getPolicyModelType());
130 public void shouldReturnAllPolicyModels() {
131 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
133 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
134 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
136 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
138 assertThat(policyModelsService.getAllPolicyModels()).contains(policyModel1, policyModel2);
143 public void shouldReturnAllModelsByType() {
144 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
146 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
147 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
149 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
151 assertThat(policyModelsService.getAllPolicyModelsByType(POLICY_MODEL_TYPE_2)).contains(policyModel1,
157 public void shouldReturnSortedSet() {
158 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_1, "TEST",
160 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
161 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
163 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
164 PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml", POLICY_MODEL_TYPE_3_VERSION_1, "TEST",
166 policyModelsService.saveOrUpdatePolicyModel(policyModel3);
168 SortedSet<PolicyModel> sortedSet = new TreeSet<>();
169 policyModelsService.getAllPolicyModels().forEach(sortedSet::add);
170 List<PolicyModel> listToCheck = sortedSet.stream().filter(
171 policy -> policy.equals(policyModel3) || policy.equals(policyModel2) || policy.equals(policyModel1))
172 .collect(Collectors.toList());
173 assertThat(listToCheck.get(0)).isEqualByComparingTo(policyModel2);
174 assertThat(listToCheck.get(1)).isEqualByComparingTo(policyModel1);
175 assertThat(listToCheck.get(2)).isEqualByComparingTo(policyModel3);
180 public void shouldAddPdpGroupInfo() {
181 PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", POLICY_MODEL_TYPE_1_VERSION_1, "TEST",
183 policyModelsService.saveOrUpdatePolicyModel(policyModel1);
184 PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST",
186 policyModelsService.saveOrUpdatePolicyModel(policyModel2);
187 PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml", POLICY_MODEL_TYPE_3_VERSION_1, "TEST",
189 policyModelsService.saveOrUpdatePolicyModel(policyModel3);
192 PolicyModelKey type1 = new PolicyModelKey("org.onap.testos", "1.0.0");
193 PolicyModelKey type2 = new PolicyModelKey("org.onap.testos2", "2.0.0");
195 PdpSubgroup pdpSubgroup1 = new PdpSubgroup();
196 pdpSubgroup1.setPdpType("subGroup1");
197 List<PolicyModelKey> pdpTypeList = new LinkedList<PolicyModelKey>();
198 pdpTypeList.add(type1);
199 pdpTypeList.add(type2);
200 pdpSubgroup1.setSupportedPolicyTypes(pdpTypeList);
202 PolicyModelKey type3 = new PolicyModelKey("org.onap.testos3", "2.0.0");
203 PdpSubgroup pdpSubgroup2 = new PdpSubgroup();
204 pdpSubgroup2.setPdpType("subGroup2");
205 List<PolicyModelKey> pdpTypeList2 = new LinkedList<PolicyModelKey>();
206 pdpTypeList2.add(type2);
207 pdpTypeList2.add(type3);
208 pdpSubgroup2.setSupportedPolicyTypes(pdpTypeList2);
210 List<PdpSubgroup> pdpSubgroupList = new LinkedList<PdpSubgroup>();
211 pdpSubgroupList.add(pdpSubgroup1);
213 PdpGroup pdpGroup1 = new PdpGroup();
214 pdpGroup1.setName("pdpGroup1");
215 pdpGroup1.setPdpGroupState("ACTIVE");
216 pdpGroup1.setPdpSubgroups(pdpSubgroupList);
218 List<PdpSubgroup> pdpSubgroupList2 = new LinkedList<PdpSubgroup>();
219 pdpSubgroupList2.add(pdpSubgroup1);
220 pdpSubgroupList2.add(pdpSubgroup2);
221 PdpGroup pdpGroup2 = new PdpGroup();
222 pdpGroup2.setName("pdpGroup2");
223 pdpGroup2.setPdpGroupState("ACTIVE");
224 pdpGroup2.setPdpSubgroups(pdpSubgroupList2);
226 List<PdpGroup> pdpGroupList = new LinkedList<PdpGroup>();
227 pdpGroupList.add(pdpGroup1);
228 pdpGroupList.add(pdpGroup2);
229 policyModelsService.updatePdpGroupInfo(pdpGroupList);
231 JsonObject res1 = policyModelsService.getPolicyModel("org.onap.testos", "1.0.0").getPolicyPdpGroup();
232 String expectedRes1 = "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\"]}]}";
233 JsonObject expectedJson1 = JsonUtils.GSON.fromJson(expectedRes1, JsonObject.class);
234 assertThat(res1).isEqualTo(expectedJson1);
236 JsonObject res2 = policyModelsService.getPolicyModel("org.onap.testos2", "2.0.0").getPolicyPdpGroup();
237 String expectedRes2 = "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\",\"subGroup2\"]}]}";
238 JsonObject expectedJson2 = JsonUtils.GSON.fromJson(expectedRes2, JsonObject.class);
239 assertThat(res2).isEqualTo(expectedJson2);
241 JsonObject res3 = policyModelsService.getPolicyModel("org.onap.testos3", "1.0.0").getPolicyPdpGroup();
242 assertThat(res3).isNull();