+ public void testGetPolicyTypesCornerCases() throws PfModelException {
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("service template not found in database");
+
+ JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
+ serviceTemplate.setDataTypes(new JpaToscaDataTypes());
+ JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
+ serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
+
+ new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
+
+ serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
+
+ JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
+ pt01.setMetadata(new TreeMap<String, String>());
+ pt01.setProperties(new LinkedHashMap<String, JpaToscaProperty>());
+ pt01.setTargets(new ArrayList<PfConceptKey>());
+ pt01.setTriggers(new ArrayList<JpaToscaTrigger>());
+ serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
+
+ new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getPolicyTypes(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
+
+ JpaToscaServiceTemplate gotSt =
+ new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
+
+ assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
+ assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName()));
+ assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), null));
+ assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
+ assertEquals(1, gotSt.getPolicyTypes().getAll(null).size());
+ assertEquals(1, gotSt.getPolicyTypes().getAll(null, null).size());
+ assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
+ assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt01.getVersion()).size());
+
+ JpaToscaPolicyType pt02 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.2"));
+ pt02.setMetadata(new TreeMap<String, String>());
+ pt02.setProperties(new LinkedHashMap<String, JpaToscaProperty>());
+ pt02.setTargets(new ArrayList<PfConceptKey>());
+ pt02.setTriggers(new ArrayList<JpaToscaTrigger>());
+ serviceTemplate.getPolicyTypes().getConceptMap().put(pt02.getKey(), pt02);
+
+ new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
+ gotSt = new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), null);
+
+ assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
+ assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName()));
+ assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), null));
+ assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName(), pt01.getVersion()));
+ assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName(), pt02.getVersion()));
+ assertEquals(2, gotSt.getPolicyTypes().getAll(null).size());
+ assertEquals(2, gotSt.getPolicyTypes().getAll(null, null).size());
+ assertEquals(2, gotSt.getPolicyTypes().getAll(pt01.getName(), null).size());
+ assertEquals(1, gotSt.getPolicyTypes().getAll(pt01.getName(), pt02.getVersion()).size());
+ }
+
+ @Test
+ public void testGetPoliciesCornerCases() throws PfModelException {
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("service template not found in database");
+
+ JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
+ serviceTemplate.setDataTypes(new JpaToscaDataTypes());
+ JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
+ dt0.setConstraints(new ArrayList<JpaToscaConstraint>());
+ dt0.setMetadata(new TreeMap<String, String>());
+ dt0.setProperties(new LinkedHashMap<String, JpaToscaProperty>());
+ serviceTemplate.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
+
+ new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("policies for hello:0.0.1 do not exist");
+
+ serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
+
+ JpaToscaPolicyType pt01 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
+ pt01.setMetadata(new TreeMap<String, String>());
+ pt01.setProperties(new LinkedHashMap<String, JpaToscaProperty>());
+ pt01.setTargets(new ArrayList<PfConceptKey>());
+ pt01.setTriggers(new ArrayList<JpaToscaTrigger>());
+ serviceTemplate.getPolicyTypes().getConceptMap().put(pt01.getKey(), pt01);
+
+ serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
+ serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
+
+ JpaToscaPolicy p01 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.1"));
+ p01.setType(pt01.getKey());
+ p01.setMetadata(new TreeMap<String, String>());
+ p01.setProperties(new LinkedHashMap<String, String>());
+ p01.setTargets(new ArrayList<PfConceptKey>());
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p01.getKey(), p01);
+
+ new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getPolicies(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("policies for hello:0.0.1 do not exist");
+
+ JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), p01.getVersion());
+
+ assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getKey())));
+ assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName())));
+ assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null)));
+ assertEquals(0, p01.compareTo(gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion())));
+ assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
+ assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
+ assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
+ assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p01.getVersion()).size());
+
+ JpaToscaPolicy p02 = new JpaToscaPolicy(new PfConceptKey("p0:0.0.2"));
+ p02.setType(pt01.getKey());
+ p02.setType(pt01.getKey());
+ p02.setMetadata(new TreeMap<String, String>());
+ p02.setProperties(new LinkedHashMap<String, String>());
+ p02.setTargets(new ArrayList<PfConceptKey>());
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p02.getKey(), p02);
+
+ new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
+ gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), null);
+
+ assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getKey()));
+ assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName()));
+ assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), null));
+ assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p01.getVersion()));
+ assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName(), p02.getVersion()));
+ assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null).size());
+ assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(null, null).size());
+ assertEquals(2, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), null).size());
+ assertEquals(1, gotSt.getTopologyTemplate().getPolicies().getAll(p01.getName(), p02.getVersion()).size());
+ }
+
+ @Test
+ public void testNonNullsDataType() {
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getServiceTemplate(null);
+ }).hasMessageMatching(DAO_IS_NULL);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().appendToServiceTemplate(null, null);
+ }).hasMessageMatching(DAO_IS_NULL);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().appendToServiceTemplate(null, new JpaToscaServiceTemplate());
+ }).hasMessageMatching(DAO_IS_NULL);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().appendToServiceTemplate(pfDao, null);
+ }).hasMessageMatching("^incomingServiceTemplateFragment is marked .*on.*ull but is null$");
+