X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-tosca%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Ftosca%2Fsimple%2Fconcepts%2FJpaToscaServiceTemplateTest.java;h=6296788ee37cff4ed70b39e084824b081af15f1f;hb=938005505883cf7a636a8840e20e3dc8a0ad9176;hp=df72ce57be517e58b4c613418d172ed0278a9770;hpb=26e7f16c6e3f224d38e09441be30c1d4fa795c2a;p=policy%2Fmodels.git diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java index df72ce57b..6296788ee 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplateTest.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019-2021, 2023 Nordix Foundation. + * Modifications Copyright (C) 2019-2021 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. @@ -21,18 +21,22 @@ package org.onap.policy.models.tosca.simple.concepts; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.util.LinkedHashMap; import java.util.Map; import java.util.TreeMap; import org.junit.Test; +import org.onap.policy.common.parameters.BeanValidationResult; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfReferenceKey; -import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.Validated; /** * DAO test for ToscaDatatype. @@ -41,28 +45,31 @@ import org.onap.policy.models.base.PfValidationResult; */ public class JpaToscaServiceTemplateTest { - private static final String KEY_IS_NULL = "key is marked @NonNull but is null"; + private static final String KEY_IS_NULL = "key is marked .*on.*ull but is null"; private static final String VERSION_001 = "0.0.1"; @Test - public void testServiceTemplatePojo() { + public void testServiceTemplateNull() { assertNotNull(new JpaToscaServiceTemplate()); assertNotNull(new JpaToscaServiceTemplate(new PfConceptKey())); assertNotNull(new JpaToscaServiceTemplate(new PfConceptKey(), "")); assertNotNull(new JpaToscaServiceTemplate(new JpaToscaServiceTemplate())); - assertThatThrownBy(() -> new JpaToscaServiceTemplate((PfConceptKey) null)).hasMessage(KEY_IS_NULL); + assertThatThrownBy(() -> new JpaToscaServiceTemplate((PfConceptKey) null)).hasMessageMatching(KEY_IS_NULL); - assertThatThrownBy(() -> new JpaToscaServiceTemplate(null, null)).hasMessage(KEY_IS_NULL); + assertThatThrownBy(() -> new JpaToscaServiceTemplate(null, null)).hasMessageMatching(KEY_IS_NULL); - assertThatThrownBy(() -> new JpaToscaServiceTemplate(null, "")).hasMessage(KEY_IS_NULL); + assertThatThrownBy(() -> new JpaToscaServiceTemplate(null, "")).hasMessageMatching(KEY_IS_NULL); assertThatThrownBy(() -> new JpaToscaServiceTemplate(new PfConceptKey(), null)) - .hasMessage("toscaDefinitionsVersion is marked @NonNull but is null"); + .hasMessageMatching("toscaDefinitionsVersion is marked .*on.*ull but is null"); assertThatThrownBy(() -> new JpaToscaServiceTemplate((JpaToscaServiceTemplate) null)) - .hasMessage("copyConcept is marked @NonNull but is null"); + .isInstanceOf(NullPointerException.class); + } + @Test + public void testServiceTemplatePojo() { PfConceptKey tstKey = new PfConceptKey("tst", VERSION_001); JpaToscaServiceTemplate tst = new JpaToscaServiceTemplate(tstKey, "Tosca Version"); @@ -89,53 +96,167 @@ public class JpaToscaServiceTemplateTest { tst.setTopologyTemplate(ttt); assertEquals(ttt, tst.getTopologyTemplate()); + assertCloneAndCopies(tstKey, tst, dataTypes, policyTypes, ttt); + + assertTrue(new JpaToscaServiceTemplate().validate("").isValid()); + assertTrue(tst.validate("").isValid()); + + tst.setDescription(null); + assertTrue(tst.validate("").isValid()); + tst.setDescription(""); + assertFalse(tst.validate("").isValid()); + tst.setDescription("A Description"); + assertTrue(tst.validate("").isValid()); + + assertThatThrownBy(() -> tst.validate(null)).hasMessageMatching("fieldName is marked .*on.*ull but is null"); + + tst.setToscaDefinitionsVersion(null); + BeanValidationResult result = tst.validate(""); + assertThat(result.getResult()).contains("tosca_definitions_version").contains(Validated.IS_NULL); + + tst.setToscaDefinitionsVersion(JpaToscaServiceTemplate.DEFAULT_TOSCA_DEFINITIONS_VERSION); + tst.setDataTypes(null); + result = tst.validate(""); + assertTrue(result.isValid()); + + JpaToscaPolicyType pt0 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1")); + tst.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0); + result = tst.validate(""); + assertTrue(result.isValid()); + + JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1")); + JpaToscaProperty prop0 = new JpaToscaProperty(new PfReferenceKey(pt0.getKey(), "prop0")); + prop0.setType(dt0.getKey()); + + assertDataTypesAndToscaTopology(tst, pt0, dt0, prop0); + + tst.setPolicyTypes(null); + result = tst.validate(""); + assertTrue(result.isValid()); + + assertNoPolicyType(tst, policyTypes, pt0, dt0); + + } + + private static void assertDataTypesAndToscaTopology(JpaToscaServiceTemplate tst, JpaToscaPolicyType pt0, + JpaToscaDataType dt0, JpaToscaProperty prop0) { + BeanValidationResult result; + pt0.setProperties(new LinkedHashMap<>()); + pt0.getProperties().put(prop0.getKey().getLocalName(), prop0); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains("data type").contains("dt0:0.0.1").contains(Validated.NOT_FOUND); + + tst.setDataTypes(null); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains("data type").contains("dt0:0.0.1").contains(Validated.NOT_FOUND); + + tst.setDataTypes(new JpaToscaDataTypes()); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains("data type").contains("dt0:0.0.1").contains(Validated.NOT_FOUND); + + tst.getDataTypes().getConceptMap().put(dt0.getKey(), dt0); + result = tst.validate(""); + assertTrue(result.isValid()); + + tst.setTopologyTemplate(null); + result = tst.validate(""); + assertTrue(result.isValid()); + + tst.setTopologyTemplate(new JpaToscaTopologyTemplate()); + result = tst.validate(""); + assertTrue(result.isValid()); + + tst.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); + result = tst.validate(""); + assertTrue(result.isValid()); + } + + private static void assertCloneAndCopies(PfConceptKey tstKey, JpaToscaServiceTemplate tst, + JpaToscaDataTypes dataTypes, JpaToscaPolicyTypes policyTypes, + JpaToscaTopologyTemplate ttt) { JpaToscaServiceTemplate tttClone0 = new JpaToscaServiceTemplate(tst); assertEquals(tst, tttClone0); assertEquals(0, tst.compareTo(tttClone0)); - JpaToscaServiceTemplate tttClone1 = new JpaToscaServiceTemplate(); - tst.copyTo(tttClone1); + JpaToscaServiceTemplate tttClone1 = new JpaToscaServiceTemplate(tst); assertEquals(tst, tttClone1); assertEquals(0, tst.compareTo(tttClone1)); assertEquals(-1, tst.compareTo(null)); assertEquals(0, tst.compareTo(tst)); - assertFalse(tst.compareTo(tst.getKey()) == 0); + assertNotEquals(0, tst.compareTo(tst.getKey())); PfConceptKey otherDtKey = new PfConceptKey("otherDt", VERSION_001); JpaToscaServiceTemplate otherDt = new JpaToscaServiceTemplate(otherDtKey); - assertFalse(tst.compareTo(otherDt) == 0); + assertNotEquals(0, tst.compareTo(otherDt)); otherDt.setKey(tstKey); - assertFalse(tst.compareTo(otherDt) == 0); + assertNotEquals(0, tst.compareTo(otherDt)); otherDt.setToscaDefinitionsVersion("Tosca Version"); - assertFalse(tst.compareTo(otherDt) == 0); + assertNotEquals(0, tst.compareTo(otherDt)); otherDt.setDataTypes(dataTypes); - assertFalse(tst.compareTo(otherDt) == 0); + assertNotEquals(0, tst.compareTo(otherDt)); otherDt.setPolicyTypes(policyTypes); - assertFalse(tst.compareTo(otherDt) == 0); + assertNotEquals(0, tst.compareTo(otherDt)); otherDt.setTopologyTemplate(ttt); assertEquals(0, tst.compareTo(otherDt)); - assertThatThrownBy(() -> tst.copyTo(null)).hasMessage("target is marked @NonNull but is null"); - assertEquals(6, tst.getKeys().size()); assertEquals(1, new JpaToscaServiceTemplate().getKeys().size()); new JpaToscaServiceTemplate().clean(); tst.clean(); assertEquals(tttClone0, tst); + } - assertTrue(new JpaToscaServiceTemplate().validate(new PfValidationResult()).isValid()); - assertTrue(tst.validate(new PfValidationResult()).isValid()); + private static void assertNoPolicyType(JpaToscaServiceTemplate tst, JpaToscaPolicyTypes policyTypes, + JpaToscaPolicyType pt0, JpaToscaDataType dt0) { + BeanValidationResult result; + JpaToscaPolicy pol0 = new JpaToscaPolicy(new PfConceptKey("pol0:0.0.1")); + tst.getTopologyTemplate().getPolicies().getConceptMap().put(pol0.getKey(), pol0); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains("type").contains(Validated.IS_A_NULL_KEY); - tst.setDescription(null); - assertTrue(tst.validate(new PfValidationResult()).isValid()); - tst.setDescription(""); - assertFalse(tst.validate(new PfValidationResult()).isValid()); - tst.setDescription("A Description"); - assertTrue(tst.validate(new PfValidationResult()).isValid()); + pol0.setType(new PfConceptKey("i.dont.Exist:0.0.1")); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains( + "no policy types are defined on the service template for the policies in the topology template"); + + tst.setPolicyTypes(policyTypes); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains("policy type").contains("i.dont.Exist:0.0.1") + .contains(Validated.NOT_FOUND); + + pol0.setType(dt0.getKey()); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains("policy type").contains("dt0:0.0.1").contains(Validated.NOT_FOUND); + + pol0.setType(pt0.getKey()); + result = tst.validate(""); + assertTrue(result.isValid()); + + tst.setPolicyTypes(null); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains( + "no policy types are defined on the service template for the policies in the topology template"); + + tst.setPolicyTypes(policyTypes); + pol0.setType(pt0.getKey()); + result = tst.validate(""); + assertTrue(result.isValid()); - assertThatThrownBy(() -> tst.validate(null)).hasMessage("resultIn is marked @NonNull but is null"); + tst.setPolicyTypes(new JpaToscaPolicyTypes()); + result = tst.validate(""); + assertFalse(result.isValid()); + assertThat(result.getResult()).contains( + "no policy types are defined on the service template for the policies in the topology template"); } }