diff --git a/test/test_grpc_models_accessor.py b/test/test_grpc_models_accessor.py
new file mode 100644
index 0000000..707b5ef
--- /dev/null
+++ b/test/test_grpc_models_accessor.py
@@ -0,0 +1,89 @@
+import unittest
+from mock import patch, MagicMock
+from grpc_client.models_accessor import GRPCModelsAccessor
+from grpc_client.resources import RESOURCES
+
+class FakeObj:
+    new = None
+    filter = None
+
+class FakeResource:
+    objects = FakeObj
+
+class FakeModel:
+    pass
+
+class FakeExistingModel:
+    pass
+
+mock_resources = {
+    'test-model': FakeResource
+}
+
+class GRPCModelsAccessor_Create_or_update_Test(unittest.TestCase):
+
+    def test_unkown_module(self):
+        """
+        [GRPCModelsAccessor] get_model_from_classname: If a model is not know by the grpc api, raise
+        """
+        data = {
+            "name": "test"
+        }
+        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")
+
+    @patch.object(FakeResource.objects, "filter")
+    @patch.object(FakeResource.objects, "new", MagicMock(return_value=FakeModel))
+    def test_new_model(self, mock_filter):
+        """
+        [GRPCModelsAccessor] get_model_from_classname: should create a new model
+        """
+        data = {
+            "name": "test"
+        }
+        with patch.dict(RESOURCES, mock_resources, clear=True):
+            model = GRPCModelsAccessor.get_model_from_classname('test-model', data)
+            mock_filter.assert_called_with(name="test")
+            self.assertEqual(model, FakeModel)
+
+    @patch.object(FakeResource.objects, "filter", MagicMock(return_value=[FakeExistingModel]))
+    def test_existing_model(self):
+        """
+        [GRPCModelsAccessor] get_model_from_classname: should update an existing model
+        """
+        data = {
+            "name": "test"
+        }
+        with patch.dict(RESOURCES, mock_resources, clear=True):
+            model = GRPCModelsAccessor.get_model_from_classname('test-model', data)
+            self.assertEqual(model, FakeExistingModel)
+
+    @patch.object(FakeResource.objects, "filter", MagicMock(return_value=['a', 'b']))
+    def test_multiple_models(self):
+        """
+        [GRPCModelsAccessor] get_model_from_classname: should raise an exception if multiple instances are found
+        """
+        data = {
+            "name": "test"
+        }
+        with patch.dict(RESOURCES, mock_resources, clear=True):
+            with self.assertRaises(Exception) as e:
+                GRPCModelsAccessor.get_model_from_classname('test-model', data)
+            self.assertEqual(e.exception.message, "[XOS-Tosca] Model test has multiple instances, I can't handle it")
+
+    @patch.dict(RESOURCES, mock_resources, clear=True)
+    @patch.object(FakeResource.objects, "filter")
+    def _test_find_model_without_name_property(self, mock_filter):
+        """
+        [GRPCModelsAccessor] get_model_from_classname: should lookup a model by the first property
+        """
+        data = {
+            'foo': 'bar',
+            'something': 'else'
+        }
+        GRPCModelsAccessor.get_model_from_classname('test-model', data)
+        mock_filter.assert_called_with(foo="bar")
+
+if __name__ == '__main__':
+    unittest.main()
\ No newline at end of file
diff --git a/test/test_tosca_parser.py b/test/test_tosca_parser.py
index eb31ed1..9a369fe 100644
--- a/test/test_tosca_parser.py
+++ b/test/test_tosca_parser.py
@@ -1,74 +1,24 @@
-import sys, os
 import unittest
-from mock import patch, MagicMock
 from tosca.parser import TOSCA_Parser
 
-class FakeObj:
-    new = None
-    filter = None
+class TOSCA_Parser_Test(unittest.TestCase):
 
-class FakeResource:
-    objects = FakeObj
-
-class FakeModel:
-    save = None
-
-class TOSCA_Parser_Create_or_update_Test(unittest.TestCase):
-
-    @patch.object(FakeResource.objects, "filter")
-    @patch.object(FakeResource.objects, "new", MagicMock(return_value=FakeModel))
-    @patch.object(FakeModel, "save")
-    def test_new_model(self, mock_save, mock_filter):
+    def test_get_tosca_models_by_name(self):
         """
-        [TOSCA_Parser] create_or_update: should create a new model
+        [TOSCA_Parser] get_tosca_models_by_name: should extract models from the TOSCA recipe and store them in a dict
         """
-        data = {
-            "name": "test"
-        }
+        class FakeNode:
+            def __init__(self, name):
+                self.name = name
 
-        TOSCA_Parser.creat_or_update(FakeResource, data)
-        mock_filter.assert_called_with(name="test")
-        mock_save.assert_called_once()
+        class FakeTemplate:
+            nodetemplates = [
+                FakeNode('model1'),
+                FakeNode('model2')
+            ]
+            pass
 
-    @patch.object(FakeResource.objects, "filter", MagicMock(return_value=[FakeModel]))
-    @patch.object(FakeModel, "save")
-    def test_existing_model(self, mock_save):
-        """
-        [TOSCA_Parser] create_or_update: should update an existing model
-        """
-        data = {
-            "name": "test"
-        }
 
-        TOSCA_Parser.creat_or_update(FakeResource, data)
-        mock_save.assert_called_once()
-
-    @patch.object(FakeResource.objects, "filter", MagicMock(return_value=['a', 'b']))
-    def test_multiple_models(self):
-        """
-        [TOSCA_Parser] create_or_update: should raise an exception if multiple instances are found
-        """
-        data = {
-            "name": "test"
-        }
-        with self.assertRaises(Exception) as e:
-            TOSCA_Parser.creat_or_update(FakeResource, data)
-        self.assertEqual(e.exception.message, "[XOS-Tosca] Model test has multiple instances, I can't handle it")
-
-    @patch.object(FakeResource.objects, "new", MagicMock(return_value=FakeModel))
-    @patch.object(FakeResource.objects, "filter")
-    @patch.object(FakeModel, "save")
-    def test_find_model_without_name_property(self, mock_save, mock_filter):
-        """
-        [TOSCA_Parser] create_or_update: should lookup a model by the first property
-        """
-        data = {
-            'foo': 'bar',
-            'something': 'else'
-        }
-        TOSCA_Parser.creat_or_update(FakeResource, data)
-        mock_filter.assert_called_with(foo="bar")
-        mock_save.assert_called_once()
-
-if __name__ == '__main__':
-    unittest.main()
\ No newline at end of file
+        res = TOSCA_Parser.get_tosca_models_by_name(FakeTemplate)
+        self.assertIsInstance(res['model1'], FakeNode)
+        self.assertIsInstance(res['model2'], FakeNode)
\ No newline at end of file
diff --git a/test/tosca/test.yaml b/test/tosca/test.yaml
index 5f5d6e6..e5b9fbd 100644
--- a/test/tosca/test.yaml
+++ b/test/tosca/test.yaml
@@ -4,6 +4,7 @@
 
 imports:
    - custom_types/user.yaml
+   - custom_types/site.yaml
    - custom_types/xosguiextension.yaml
 
 topology_template:
@@ -16,14 +17,23 @@
         name: test
         files: /spa/extensions/test/vendor.js, /spa/extensions/test/app.js
 
-    xosadmin@opencord.org:
+    # Site
+    onlab:
+      type: tosca.nodes.Site
+      properties:
+        name: Open Networking Lab
+        site_url: http://onlab.us/
+        hosts_nodes: True
+
+    # User
+    test@opencord.org:
       type: tosca.nodes.User
       properties:
-        password: rk1UYDHZXbu6KVCMkhmV
-        firstname: XOS
-        lastname: Admin
-#        is_admin: True
-#      requirements:
-#        - site:
-#            node: some
-#            relationship: tosca.relationships.MemberOfSite
\ No newline at end of file
+        password: mypwd
+        firstname: User
+        lastname: Test
+        is_admin: True
+      requirements:
+        - site:
+            node: onlab
+            relationship: tosca.relationships.BelongsToOne
\ No newline at end of file
