/*- * ============LICENSE_START======================================================= * Copyright (C) 2020 Nordix Foundation. * ================================================================================ * 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. * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.models.tosca.utils; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; import java.util.Iterator; import org.junit.Test; import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType; import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes; import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies; import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy; import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType; import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes; import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate; /** * Import the {@link ToscaServiceTemplateUtilsTest} class. * * @author Liam Fallon (liam.fallon@est.tech) */ public class ToscaServiceTemplateUtilsTest { @Test public void testAddFragmentNulls() { assertThatThrownBy(() -> { ToscaServiceTemplateUtils.addFragment(null, null); }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null"); assertThatThrownBy(() -> { ToscaServiceTemplateUtils.addFragment(null, new JpaToscaServiceTemplate()); }).hasMessageMatching("originalTemplate is marked .*on.*ull but is null"); assertThatThrownBy(() -> { ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), null); }).hasMessageMatching("fragmentTemplate is marked .*on.*ull but is null"); assertEquals(new JpaToscaServiceTemplate(), ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), new JpaToscaServiceTemplate())); } @Test public void testAddFragment() { JpaToscaServiceTemplate originalTemplate = new JpaToscaServiceTemplate(); JpaToscaServiceTemplate fragmentTemplate00 = new JpaToscaServiceTemplate(); assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate)); assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00)); assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate)); assertEquals(originalTemplate, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00)); assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, originalTemplate)); assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00)); assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, originalTemplate)); assertEquals(fragmentTemplate00, ToscaServiceTemplateUtils.addFragment(fragmentTemplate00, fragmentTemplate00)); fragmentTemplate00.setDataTypes(new JpaToscaDataTypes()); fragmentTemplate00.setPolicyTypes(new JpaToscaPolicyTypes()); JpaToscaServiceTemplate compositeTemplate00 = ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate00); assertEquals(compositeTemplate00, ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate00)); assertEquals(compositeTemplate00, ToscaServiceTemplateUtils.addFragment(compositeTemplate00, new JpaToscaServiceTemplate())); assertEquals(compositeTemplate00, ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate00)); JpaToscaDataType dt0 = new JpaToscaDataType(); dt0.setKey(new PfConceptKey("dt0", "0.0.1")); dt0.setDescription("dt0 description"); JpaToscaServiceTemplate fragmentTemplate01 = new JpaToscaServiceTemplate(); fragmentTemplate01.setDataTypes(new JpaToscaDataTypes()); fragmentTemplate01.getDataTypes().getConceptMap().put(dt0.getKey(), dt0); JpaToscaServiceTemplate compositeTemplate01 = ToscaServiceTemplateUtils.addFragment(originalTemplate, fragmentTemplate01); assertEquals(compositeTemplate01, ToscaServiceTemplateUtils.addFragment(compositeTemplate01, fragmentTemplate01)); assertEquals(compositeTemplate01, ToscaServiceTemplateUtils.addFragment(compositeTemplate01, new JpaToscaServiceTemplate())); assertEquals(compositeTemplate01, ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate01)); JpaToscaServiceTemplate compositeTemplate02 = ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate01); assertEquals(compositeTemplate02, ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate01)); assertEquals(compositeTemplate02, ToscaServiceTemplateUtils.addFragment(compositeTemplate02, new JpaToscaServiceTemplate())); assertEquals(compositeTemplate02, ToscaServiceTemplateUtils.addFragment(new JpaToscaServiceTemplate(), compositeTemplate02)); JpaToscaDataType otherDt0 = new JpaToscaDataType(); otherDt0.setKey(new PfConceptKey("dt0", "0.0.1")); otherDt0.setDescription("dt0 description"); JpaToscaServiceTemplate fragmentTemplate02 = new JpaToscaServiceTemplate(); fragmentTemplate02.setDataTypes(new JpaToscaDataTypes()); fragmentTemplate02.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0); compositeTemplate00 = ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02); assertEquals(compositeTemplate00, ToscaServiceTemplateUtils.addFragment(compositeTemplate00, fragmentTemplate02)); JpaToscaDataType badOtherDt0 = new JpaToscaDataType(); badOtherDt0.setKey(new PfConceptKey("dt0", "0.0.1")); badOtherDt0.setDescription("dt0 bad description"); JpaToscaServiceTemplate fragmentTemplate03 = new JpaToscaServiceTemplate(); fragmentTemplate03.setDataTypes(new JpaToscaDataTypes()); fragmentTemplate03.getDataTypes().getConceptMap().put(otherDt0.getKey(), otherDt0); fragmentTemplate03.getDataTypes().getConceptMap().put(badOtherDt0.getKey(), badOtherDt0); final JpaToscaServiceTemplate compositeTestTemplate = new JpaToscaServiceTemplate(compositeTemplate00); assertThatThrownBy(() -> { ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate03); }).hasMessageContaining("entity in incoming fragment does not equal existing entity"); JpaToscaServiceTemplate fragmentTemplate04 = new JpaToscaServiceTemplate(); fragmentTemplate04.setDescription("Another service template"); assertThatThrownBy(() -> { ToscaServiceTemplateUtils.addFragment(compositeTestTemplate, fragmentTemplate04); }).hasMessageContaining("service template in incoming fragment does not equal existing service template"); JpaToscaServiceTemplate fragmentTemplate05 = new JpaToscaServiceTemplate(); fragmentTemplate05.setTopologyTemplate(new JpaToscaTopologyTemplate()); fragmentTemplate05.getTopologyTemplate().setDescription("topology template description"); JpaToscaServiceTemplate compositeTemplate03 = ToscaServiceTemplateUtils.addFragment(compositeTemplate02, fragmentTemplate05); assertEquals(fragmentTemplate05.getTopologyTemplate(), compositeTemplate03.getTopologyTemplate()); JpaToscaServiceTemplate fragmentTemplate06 = new JpaToscaServiceTemplate(); fragmentTemplate06.setTopologyTemplate(new JpaToscaTopologyTemplate()); fragmentTemplate06.getTopologyTemplate().setDescription("topology template description"); JpaToscaServiceTemplate compositeTemplate04 = ToscaServiceTemplateUtils.addFragment(compositeTemplate03, fragmentTemplate06); assertEquals(fragmentTemplate06.getTopologyTemplate(), compositeTemplate04.getTopologyTemplate()); JpaToscaServiceTemplate fragmentTemplate07 = new JpaToscaServiceTemplate(); fragmentTemplate07.setTopologyTemplate(new JpaToscaTopologyTemplate()); fragmentTemplate07.getTopologyTemplate().setDescription("topology template other description"); assertThatThrownBy(() -> { ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate07); }).hasMessageContaining("topology template in incoming fragment does not equal existing topology template"); JpaToscaDataType dt1 = new JpaToscaDataType(); dt1.setKey(new PfConceptKey("dt1", "0.0.1")); dt1.setDescription("dt1 description"); JpaToscaPolicyType pt0 = new JpaToscaPolicyType(); pt0.setKey(new PfConceptKey("pt0", "0.0.1")); pt0.setDescription("pt0 description"); JpaToscaPolicy p0 = new JpaToscaPolicy(); p0.setKey(new PfConceptKey("p0", "0.0.1")); p0.setDescription("pt0 description"); JpaToscaServiceTemplate fragmentTemplate08 = new JpaToscaServiceTemplate(); fragmentTemplate08.setDataTypes(new JpaToscaDataTypes()); fragmentTemplate08.getDataTypes().getConceptMap().put(dt1.getKey(), dt1); fragmentTemplate08.setPolicyTypes(new JpaToscaPolicyTypes()); fragmentTemplate08.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0); fragmentTemplate08.setTopologyTemplate(new JpaToscaTopologyTemplate()); fragmentTemplate08.getTopologyTemplate().setDescription("topology template description"); fragmentTemplate08.getTopologyTemplate().setPolicies(new JpaToscaPolicies()); fragmentTemplate08.getTopologyTemplate().getPolicies().getConceptMap().put(p0.getKey(), p0); assertThatThrownBy(() -> { ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08); }).hasMessageContaining("JpaToscaPolicy:INVALID:type is null or a null key"); p0.setType(pt0.getKey()); JpaToscaServiceTemplate compositeTemplate05 = ToscaServiceTemplateUtils.addFragment(compositeTemplate04, fragmentTemplate08); Iterator dtIterator = compositeTemplate05.getDataTypes().getAll(null).iterator(); assertEquals(dt0, dtIterator.next()); assertEquals(dt1, dtIterator.next()); assertEquals(pt0, compositeTemplate05.getPolicyTypes().getAll(null).iterator().next()); assertEquals(p0, compositeTemplate05.getTopologyTemplate().getPolicies().getAll(null).iterator().next()); } }