Policy DB contents removed on DB deadlock
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / simple / provider / SimpleToscaProviderTest.java
index f2da23c..e216bea 100644 (file)
@@ -24,6 +24,7 @@ package org.onap.policy.models.tosca.simple.provider;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
 import java.util.Properties;
 
@@ -41,6 +42,7 @@ import org.onap.policy.models.dao.DaoParameters;
 import org.onap.policy.models.dao.PfDao;
 import org.onap.policy.models.dao.PfDaoFactory;
 import org.onap.policy.models.dao.impl.DefaultPfDao;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider;
 import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
@@ -181,8 +183,8 @@ public class SimpleToscaProviderTest {
 
         deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey());
 
-        assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key));
-        assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
+        assertEquals(dataType0v2, deletedServiceTemplate.getDataTypes().get(dataType0v2.getKey()));
+        assertNull(deletedServiceTemplate.getDataTypes().get(dataType0v2.getKey()).getDescription());
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
             .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
@@ -281,6 +283,10 @@ public class SimpleToscaProviderTest {
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
             .hasMessage("no policy types found");
+
+        JpaToscaServiceTemplate newServiceTemplate =
+            new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
+        assertEquals(serviceTemplate, newServiceTemplate);
     }
 
     @Test
@@ -372,6 +378,66 @@ public class SimpleToscaProviderTest {
             createdServiceTemplate.getTopologyTemplate().getPolicies());
     }
 
+    @Test
+    public void testPolicyCreateTypeAndVersion() throws Exception {
+        ToscaServiceTemplate toscaServiceTemplate =
+            standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
+
+        createPolicyTypes();
+
+        ToscaPolicy toscaPolicy =
+            toscaServiceTemplate.getToscaTopologyTemplate().getPoliciesAsMap().values().iterator().next();
+
+        JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
+
+        final String originalPolicyType = toscaPolicy.getType();
+        final String originalPolicyTypeVersion = toscaPolicy.getTypeVersion();
+        toscaPolicy.setType(null);
+        toscaPolicy.setTypeVersion(null);
+
+        assertThatThrownBy(() -> {
+            originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
+        }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be "
+            + "specified in the type field");
+
+        toscaPolicy.setType("IDontExist");
+        assertThatThrownBy(() -> {
+            originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
+        }).hasMessage("PolicyType version not specified, the version of the PolicyType for this policy must be "
+            + "specified in the type_version field");
+
+        toscaPolicy.setTypeVersion("hello");
+        assertThatThrownBy(() -> {
+            originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
+        }).hasMessageContaining("value \"hello\", does not match regular expression");
+
+        toscaPolicy.setTypeVersion("99.100.101");
+        originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
+
+        assertThatThrownBy(() -> {
+            new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
+        }).hasMessageContaining("policy type IDontExist:99.100.101 referenced in policy not found");
+
+        toscaPolicy.setType("IDontExist");
+        originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
+
+        toscaPolicy.setType(null);
+
+        assertThatThrownBy(() -> {
+            originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
+        }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be "
+            + "specified in the type field");
+
+        toscaPolicy.setType(originalPolicyType);
+        toscaPolicy.setTypeVersion(originalPolicyTypeVersion);
+
+        originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
+        JpaToscaServiceTemplate createdServiceTemplate =
+            new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
+        assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
+            createdServiceTemplate.getTopologyTemplate().getPolicies());
+    }
+
     @Test
     public void testPolicyUpdate() throws Exception {
         ToscaServiceTemplate toscaServiceTemplate =
@@ -421,6 +487,8 @@ public class SimpleToscaProviderTest {
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, policyKey))
             .hasMessage("no policies found");
+
+        new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
     }
 
     @Test