+ public void testGetServiceTemplate() throws PfModelException {
+ assertThatThrownBy(() -> new SimpleToscaProvider().getServiceTemplate(pfDao))
+ .hasMessage("service template not found in database");
+ }
+
+ @Test
+ public void testAppendToServiceTemplate() throws PfModelException {
+ JpaToscaServiceTemplate serviceTemplateFragment = new JpaToscaServiceTemplate();
+ serviceTemplateFragment.setPolicyTypes(new JpaToscaPolicyTypes());
+ JpaToscaPolicyType badPt = new JpaToscaPolicyType();
+ serviceTemplateFragment.getPolicyTypes().getConceptMap().put(badPt.getKey(), badPt);
+
+ assertThatThrownBy(() -> new SimpleToscaProvider().appendToServiceTemplate(pfDao, serviceTemplateFragment))
+ .hasMessageContaining("key on concept entry").hasMessageContaining("NULL:0.0.0")
+ .hasMessageContaining(Validated.IS_A_NULL_KEY);
+ }
+
+ @Test
+ public void testGetDataTypesCornerCases() throws PfModelException {
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("service template not found in database");
+
+ JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
+ serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
+ JpaToscaPolicyType p0 = new JpaToscaPolicyType(new PfConceptKey("p0:0.0.1"));
+ serviceTemplate.getPolicyTypes().getConceptMap().put(p0.getKey(), p0);
+
+ new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("data types for hello:0.0.1 do not exist");
+
+ serviceTemplate.setDataTypes(new JpaToscaDataTypes());
+
+ JpaToscaDataType p01 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
+ serviceTemplate.getDataTypes().getConceptMap().put(p01.getKey(), p01);
+
+ new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
+
+ assertThatThrownBy(() -> {
+ new SimpleToscaProvider().getDataTypes(pfDao, "hello", "0.0.1");
+ }).hasMessageMatching("data types for hello:0.0.1 do not exist");
+
+ JpaToscaServiceTemplate gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), p01.getVersion());
+
+ assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
+ assertEquals(p01, gotSt.getDataTypes().get(p01.getName()));
+ assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), null));
+ assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
+ assertEquals(1, gotSt.getDataTypes().getAll(null).size());
+ assertEquals(1, gotSt.getDataTypes().getAll(null, null).size());
+ assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), null).size());
+ assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p01.getVersion()).size());
+
+ JpaToscaDataType p02 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.2"));
+ serviceTemplate.getDataTypes().getConceptMap().put(p02.getKey(), p02);
+
+ new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
+ gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), null);
+
+ assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
+ assertEquals(p02, gotSt.getDataTypes().get(p01.getName()));
+ assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), null));
+ assertEquals(p01, gotSt.getDataTypes().get(p01.getName(), p01.getVersion()));
+ assertEquals(p02, gotSt.getDataTypes().get(p01.getName(), p02.getVersion()));
+ assertEquals(2, gotSt.getDataTypes().getAll(null).size());
+ assertEquals(2, gotSt.getDataTypes().getAll(null, null).size());
+ assertEquals(2, gotSt.getDataTypes().getAll(p01.getName(), null).size());
+ assertEquals(1, gotSt.getDataTypes().getAll(p01.getName(), p02.getVersion()).size());
+ }
+
+ @Test
+ 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"));
+ 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"));
+ 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"));
+ 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"));
+ 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());
+ 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());
+ 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$");
+