diff options
Diffstat (limited to 'src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java')
-rw-r--r-- | src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java | 311 |
1 files changed, 311 insertions, 0 deletions
diff --git a/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java b/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java new file mode 100644 index 000000000..6f6cad815 --- /dev/null +++ b/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java @@ -0,0 +1,311 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END============================================ + * =================================================================== + * + */ + +package org.onap.clamp.loop; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.google.gson.JsonObject; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.stream.Collectors; +import javax.transaction.Transactional; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.Application; +import org.onap.clamp.clds.util.JsonUtils; +import org.onap.clamp.clds.util.ResourceFileUtils; +import org.onap.clamp.loop.template.PolicyModel; +import org.onap.clamp.loop.template.PolicyModelId; +import org.onap.clamp.loop.template.PolicyModelsRepository; +import org.onap.clamp.loop.template.PolicyModelsService; +import org.onap.clamp.policy.pdpgroup.PdpGroup; +import org.onap.clamp.policy.pdpgroup.PdpSubgroup; +import org.onap.clamp.policy.pdpgroup.PolicyModelKey; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class PolicyModelServiceItCase { + + @Autowired + PolicyModelsService policyModelsService; + + @Autowired + PolicyModelsRepository policyModelsRepository; + + private static final String POLICY_MODEL_TYPE_1 = "org.onap.testos"; + private static final String POLICY_MODEL_TYPE_1_VERSION_1 = "1.0.0"; + + private static final String POLICY_MODEL_TYPE_2 = "org.onap.testos2"; + private static final String POLICY_MODEL_TYPE_3 = "org.onap.testos3"; + private static final String POLICY_MODEL_TYPE_2_VERSION_1 = "1.0.0"; + private static final String POLICY_MODEL_TYPE_3_VERSION_1 = "1.0.0"; + private static final String POLICY_MODEL_TYPE_2_VERSION_2 = "2.0.0"; + + private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, + String policyAcronym, String policyVariant, String createdBy) { + PolicyModel policyModel = new PolicyModel(); + policyModel.setCreatedBy(createdBy); + policyModel.setPolicyAcronym(policyAcronym); + policyModel.setPolicyModelTosca(policyModelTosca); + policyModel.setPolicyModelType(policyType); + policyModel.setUpdatedBy(createdBy); + policyModel.setVersion(version); + return policyModel; + } + + /** + * This test the create policy Model. + */ + @Test + @Transactional + public void shouldCreatePolicyModel() { + // given + PolicyModel policyModel = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", + POLICY_MODEL_TYPE_1_VERSION_1, "TEST", "VARIANT", "user"); + + // when + PolicyModel actualPolicyModel = policyModelsService.saveOrUpdatePolicyModel(policyModel); + + // then + assertThat(actualPolicyModel).isNotNull(); + assertThat(actualPolicyModel).isEqualTo(policyModelsRepository + .findById(new PolicyModelId(actualPolicyModel.getPolicyModelType(), + actualPolicyModel.getVersion())) + .get()); + assertThat(actualPolicyModel.getPolicyModelType()) + .isEqualTo(policyModel.getPolicyModelType()); + assertThat(actualPolicyModel.getCreatedBy()).isEqualTo("Not found"); + assertThat(actualPolicyModel.getCreatedDate()).isNotNull(); + assertThat(actualPolicyModel.getPolicyAcronym()).isEqualTo(policyModel.getPolicyAcronym()); + assertThat(actualPolicyModel.getPolicyModelTosca()) + .isEqualTo(policyModel.getPolicyModelTosca()); + assertThat(actualPolicyModel.getUpdatedBy()).isEqualTo("Not found"); + assertThat(actualPolicyModel.getUpdatedDate()).isNotNull(); + assertThat(actualPolicyModel.getVersion()).isEqualTo(policyModel.getVersion()); + + assertThat( + policyModelsService.getPolicyModel(POLICY_MODEL_TYPE_1, POLICY_MODEL_TYPE_1_VERSION_1)) + .isEqualToIgnoringGivenFields(policyModel, "createdDate", "updatedDate", + "createdBy", "updatedBy"); + } + + /** + * This tests a create Policy Model from Tosca. + * + * @throws IOException In case of failure + */ + @Test + @Transactional + public void shouldCreatePolicyModelFromTosca() throws IOException { + String toscaModelYaml = + ResourceFileUtils.getResourceAsString("tosca/tosca_with_metadata.yaml"); + PolicyModel policyModel = policyModelsService.createNewPolicyModelFromTosca(toscaModelYaml); + + assertThat(policyModelsService.getAllPolicyModels()).contains(policyModel); + + assertThat(policyModelsService.getPolicyModelTosca(policyModel.getPolicyModelType(), + policyModel.getVersion())).contains(toscaModelYaml); + } + + /** + * This tests a update Policy Model. + * + * @throws IOException In case of failure + */ + @Test + @Transactional + public void shouldUpdatePolicyModel() throws IOException { + String toscaModelYaml = + ResourceFileUtils.getResourceAsString("tosca/tosca_with_metadata.yaml"); + PolicyModel policyModel = policyModelsService.createNewPolicyModelFromTosca(toscaModelYaml); + String newToscaModelYaml = + ResourceFileUtils.getResourceAsString("tosca/tosca_metadata_clamp_possible_values.yaml"); + + PolicyModel updatedPolicyModel = policyModelsService.updatePolicyModelTosca( + policyModel.getPolicyModelType(), policyModel.getVersion(), newToscaModelYaml); + + assertThat(updatedPolicyModel.getPolicyModelTosca()).isEqualTo(newToscaModelYaml); + + } + + /** + * This tests a getAllPolicyModelTypes get. + */ + @Test + @Transactional + public void shouldReturnAllPolicyModelTypes() { + // given + PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel1); + PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel2); + List<String> policyModelTypesList = policyModelsService.getAllPolicyModelTypes(); + + assertThat(policyModelTypesList).contains(policyModel1.getPolicyModelType(), + policyModel2.getPolicyModelType()); + } + + /** + * This tests a getAllPolicyModels get. + */ + @Test + @Transactional + public void shouldReturnAllPolicyModels() { + PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel1); + PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel2); + + assertThat(policyModelsService.getAllPolicyModels()).contains(policyModel1, policyModel2); + } + + /** + * This tests a getAllPolicyModelsByType get. + */ + @Test + @Transactional + public void shouldReturnAllModelsByType() { + PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel1); + PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel2); + + assertThat(policyModelsService.getAllPolicyModelsByType(POLICY_MODEL_TYPE_2)) + .contains(policyModel1, policyModel2); + } + + /** + * This tests the sorting of policyModel. + */ + @Test + @Transactional + public void shouldReturnSortedSet() { + PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_1, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel1); + PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel2); + PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml", + POLICY_MODEL_TYPE_3_VERSION_1, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel3); + + SortedSet<PolicyModel> sortedSet = new TreeSet<>(); + policyModelsService.getAllPolicyModels().forEach(sortedSet::add); + List<PolicyModel> listToCheck = + sortedSet + .stream().filter(policy -> policy.equals(policyModel3) + || policy.equals(policyModel2) || policy.equals(policyModel1)) + .collect(Collectors.toList()); + assertThat(listToCheck.get(0)).isEqualByComparingTo(policyModel2); + assertThat(listToCheck.get(1)).isEqualByComparingTo(policyModel1); + assertThat(listToCheck.get(2)).isEqualByComparingTo(policyModel3); + } + + /** + * This tests the pdpgroup GSON encode/decode and saving. + */ + @Test + @Transactional + public void shouldAddPdpGroupInfo() { + PolicyModel policyModel1 = getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", + POLICY_MODEL_TYPE_1_VERSION_1, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel1); + PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", + POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel2); + PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml", + POLICY_MODEL_TYPE_3_VERSION_1, "TEST", "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel3); + + PolicyModelKey type1 = new PolicyModelKey("org.onap.testos", "1.0.0"); + PolicyModelKey type2 = new PolicyModelKey("org.onap.testos2", "2.0.0"); + + PdpSubgroup pdpSubgroup1 = new PdpSubgroup(); + pdpSubgroup1.setPdpType("subGroup1"); + List<PolicyModelKey> pdpTypeList = new LinkedList<PolicyModelKey>(); + pdpTypeList.add(type1); + pdpTypeList.add(type2); + pdpSubgroup1.setSupportedPolicyTypes(pdpTypeList); + + PolicyModelKey type3 = new PolicyModelKey("org.onap.testos3", "2.0.0"); + PdpSubgroup pdpSubgroup2 = new PdpSubgroup(); + pdpSubgroup2.setPdpType("subGroup2"); + List<PolicyModelKey> pdpTypeList2 = new LinkedList<PolicyModelKey>(); + pdpTypeList2.add(type2); + pdpTypeList2.add(type3); + pdpSubgroup2.setSupportedPolicyTypes(pdpTypeList2); + + List<PdpSubgroup> pdpSubgroupList = new LinkedList<PdpSubgroup>(); + pdpSubgroupList.add(pdpSubgroup1); + + PdpGroup pdpGroup1 = new PdpGroup(); + pdpGroup1.setName("pdpGroup1"); + pdpGroup1.setPdpGroupState("ACTIVE"); + pdpGroup1.setPdpSubgroups(pdpSubgroupList); + + List<PdpSubgroup> pdpSubgroupList2 = new LinkedList<PdpSubgroup>(); + pdpSubgroupList2.add(pdpSubgroup1); + pdpSubgroupList2.add(pdpSubgroup2); + PdpGroup pdpGroup2 = new PdpGroup(); + pdpGroup2.setName("pdpGroup2"); + pdpGroup2.setPdpGroupState("ACTIVE"); + pdpGroup2.setPdpSubgroups(pdpSubgroupList2); + + List<PdpGroup> pdpGroupList = new LinkedList<PdpGroup>(); + pdpGroupList.add(pdpGroup1); + pdpGroupList.add(pdpGroup2); + policyModelsService.updatePdpGroupInfo(pdpGroupList); + + JsonObject res1 = + policyModelsService.getPolicyModel("org.onap.testos", "1.0.0").getPolicyPdpGroup(); + String expectedRes1 = + "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\"]}]}"; + JsonObject expectedJson1 = JsonUtils.GSON.fromJson(expectedRes1, JsonObject.class); + assertThat(res1).isEqualTo(expectedJson1); + + JsonObject res2 = + policyModelsService.getPolicyModel("org.onap.testos2", "2.0.0").getPolicyPdpGroup(); + String expectedRes2 = + "{\"supportedPdpGroups\":[{\"pdpGroup1\":[\"subGroup1\"]},{\"pdpGroup2\":[\"subGroup1\",\"subGroup2\"]}]}"; + JsonObject expectedJson2 = JsonUtils.GSON.fromJson(expectedRes2, JsonObject.class); + assertThat(res2).isEqualTo(expectedJson2); + + JsonObject res3 = + policyModelsService.getPolicyModel("org.onap.testos3", "1.0.0").getPolicyPdpGroup(); + assertThat(res3).isNull(); + } +} |