[CORD-1528] Allow to reference models already created
Change-Id: Icf1cab69e0939d84f7f9c01d774f4399df51a7a4
diff --git a/test/test_grpc_models_accessor.py b/test/test_grpc_models_accessor.py
index 707b5ef..03e9285 100644
--- a/test/test_grpc_models_accessor.py
+++ b/test/test_grpc_models_accessor.py
@@ -31,7 +31,7 @@
}
with self.assertRaises(Exception) as e:
GRPCModelsAccessor.get_model_from_classname('i-do-not-exists', data)
- self.assertEqual(e.exception.message, "[XOS-TOSCA] The model your tring to create (name: test, class: i-do-not-exists) is not know by xos-core")
+ self.assertEqual(e.exception.message, "[XOS-TOSCA] The model you are trying to create (name: test, class: i-do-not-exists) is not know by xos-core")
@patch.object(FakeResource.objects, "filter")
@patch.object(FakeResource.objects, "new", MagicMock(return_value=FakeModel))
diff --git a/test/test_tosca_parser_e2e.py b/test/test_tosca_parser_e2e.py
index 78276f2..5438c76 100644
--- a/test/test_tosca_parser_e2e.py
+++ b/test/test_tosca_parser_e2e.py
@@ -130,4 +130,37 @@
saved_user = parser.saved_model_by_name['user_test']
self.assertEqual(saved_user.firstname, 'User')
- self.assertEqual(saved_user.site_id, 1)
\ No newline at end of file
+ self.assertEqual(saved_user.site_id, 1)
+
+ @patch.dict(RESOURCES, mock_resources, clear=True)
+ @patch.object(FakeSite.objects, 'filter', MagicMock(return_value=[]))
+ def test_must_exist_fail(self):
+ """
+ [TOSCA_Parser] Should throw an error if an object with 'must_exist' does not exist
+ """
+ recipe = """
+ tosca_definitions_version: tosca_simple_yaml_1_0
+
+ description: Create a new site with one user
+
+ imports:
+ - custom_types/user.yaml
+ - custom_types/site.yaml
+
+ topology_template:
+ node_templates:
+
+ # Site
+ site_onlab:
+ type: tosca.nodes.Site
+ properties:
+ name: Open Networking Lab
+ must-exist: True
+ """
+
+ parser = TOSCA_Parser(recipe)
+
+ with self.assertRaises(Exception) as e:
+ parser.execute()
+
+ self.assertEqual(e.exception.message, "[XOS-TOSCA] Model Site:Open Networking Lab has property 'must-exist' but cannot be found")
diff --git a/test/tosca/must_exist.yaml b/test/tosca/must_exist.yaml
new file mode 100644
index 0000000..a6a720c
--- /dev/null
+++ b/test/tosca/must_exist.yaml
@@ -0,0 +1,33 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Persist xos-sample-gui-extension
+
+imports:
+ - custom_types/user.yaml
+ - custom_types/site.yaml
+ - custom_types/xosguiextension.yaml
+
+topology_template:
+ node_templates:
+
+ # Site
+ site_onlab:
+ type: tosca.nodes.Site
+ properties:
+ name: Open Networking Lab
+ must-exist: True
+
+ # User
+ user_test:
+ type: tosca.nodes.User
+ properties:
+ username: test@opencord.org
+ email: test@opencord.org
+ password: mypwd
+ firstname: User
+ lastname: Test
+ is_admin: True
+ requirements:
+ - site:
+ node: site_onlab
+ relationship: tosca.relationships.BelongsToOne
\ No newline at end of file