[CORD-1502] [CORD-1516] Authenticating the user that is sending the
request and caching it's orm classes

Change-Id: I4754c1395d085ed0cf313c7fffebbd2d0b8c7fd4
diff --git a/test/test_grpc_models_accessor.py b/test/test_grpc_models_accessor.py
index 03e9285..b30011c 100644
--- a/test/test_grpc_models_accessor.py
+++ b/test/test_grpc_models_accessor.py
@@ -17,11 +17,28 @@
     pass
 
 mock_resources = {
-    'test-model': FakeResource
+    'username~pass': {
+        'test-model': FakeResource
+    }
 }
 
+USERNAME = 'username'
+PASSWORD = 'pass'
+
 class GRPCModelsAccessor_Create_or_update_Test(unittest.TestCase):
 
+    def test_unkown_user(self):
+        """
+        [GRPCModelsAccessor] get_model_from_classname: If a user does not have orm classes, raise
+        """
+        data = {
+            "name": "test"
+        }
+        with self.assertRaises(Exception) as e:
+            GRPCModelsAccessor.get_model_from_classname('i-do-not-exists', data, USERNAME, PASSWORD)
+        self.assertEqual(e.exception.message, "[XOS-TOSCA] User 'username' does not have ready resources")
+
+    @patch.dict(RESOURCES, mock_resources, clear=True)
     def test_unkown_module(self):
         """
         [GRPCModelsAccessor] get_model_from_classname: If a model is not know by the grpc api, raise
@@ -30,7 +47,7 @@
             "name": "test"
         }
         with self.assertRaises(Exception) as e:
-            GRPCModelsAccessor.get_model_from_classname('i-do-not-exists', data)
+            GRPCModelsAccessor.get_model_from_classname('i-do-not-exists', data, USERNAME, PASSWORD)
         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")
@@ -43,7 +60,7 @@
             "name": "test"
         }
         with patch.dict(RESOURCES, mock_resources, clear=True):
-            model = GRPCModelsAccessor.get_model_from_classname('test-model', data)
+            model = GRPCModelsAccessor.get_model_from_classname('test-model', data, USERNAME, PASSWORD)
             mock_filter.assert_called_with(name="test")
             self.assertEqual(model, FakeModel)
 
@@ -56,7 +73,7 @@
             "name": "test"
         }
         with patch.dict(RESOURCES, mock_resources, clear=True):
-            model = GRPCModelsAccessor.get_model_from_classname('test-model', data)
+            model = GRPCModelsAccessor.get_model_from_classname('test-model', data, USERNAME, PASSWORD)
             self.assertEqual(model, FakeExistingModel)
 
     @patch.object(FakeResource.objects, "filter", MagicMock(return_value=['a', 'b']))
@@ -69,12 +86,13 @@
         }
         with patch.dict(RESOURCES, mock_resources, clear=True):
             with self.assertRaises(Exception) as e:
-                GRPCModelsAccessor.get_model_from_classname('test-model', data)
+                GRPCModelsAccessor.get_model_from_classname('test-model', data, USERNAME, PASSWORD)
             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):
+    @patch.object(FakeResource.objects, "new")
+    def test_find_model_without_name_property(self, mock_new, mock_filter):
         """
         [GRPCModelsAccessor] get_model_from_classname: should lookup a model by the first property
         """
@@ -82,8 +100,9 @@
             'foo': 'bar',
             'something': 'else'
         }
-        GRPCModelsAccessor.get_model_from_classname('test-model', data)
+        GRPCModelsAccessor.get_model_from_classname('test-model', data, USERNAME, PASSWORD)
         mock_filter.assert_called_with(foo="bar")
+        mock_new.assert_called()
 
 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 4fb2f2b..a7e865e 100644
--- a/test/test_tosca_parser.py
+++ b/test/test_tosca_parser.py
@@ -95,7 +95,7 @@
         [TOSCA_Parser] compute_dependencies: augment the TOSCA nodetemplate with information on requirements (aka related models)
         """
 
-        parser = TOSCA_Parser('')
+        parser = TOSCA_Parser('', 'user', 'pass')
 
         class FakeNode:
             def __init__(self, name, requirements):
@@ -166,7 +166,7 @@
         """
         [TOSCA_Parser] save_recipe_to_tmp_file: should save a TOSCA recipe to a tmp file
         """
-        parser = TOSCA_Parser('')
+        parser = TOSCA_Parser('', 'user', 'pass')
         parser.recipe_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_tmp.yaml')
 
         parser.save_recipe_to_tmp_file('my tosca')
diff --git a/test/test_tosca_parser_e2e.py b/test/test_tosca_parser_e2e.py
index 5438c76..aceec43 100644
--- a/test/test_tosca_parser_e2e.py
+++ b/test/test_tosca_parser_e2e.py
@@ -20,7 +20,11 @@
 class FakeUser:
     objects = FakeObj
 
-mock_resources = {
+USERNAME = "username"
+PASSWORD = "pass"
+
+mock_resources = {}
+mock_resources["%s~%s" % (USERNAME, PASSWORD)] = {
     'XOSGuiExtension': FakeGuiExt,
     'Site': FakeSite,
     'User': FakeUser
@@ -54,7 +58,7 @@
         files: /spa/extensions/test/vendor.js, /spa/extensions/test/app.js
 """
 
-        parser = TOSCA_Parser(recipe)
+        parser = TOSCA_Parser(recipe, USERNAME, PASSWORD)
 
         parser.execute()
 
@@ -114,7 +118,7 @@
             relationship: tosca.relationships.BelongsToOne
 """
 
-        parser = TOSCA_Parser(recipe)
+        parser = TOSCA_Parser(recipe, USERNAME, PASSWORD)
 
         parser.execute()
 
@@ -158,7 +162,7 @@
                 must-exist: True
         """
 
-        parser = TOSCA_Parser(recipe)
+        parser = TOSCA_Parser(recipe, USERNAME, PASSWORD)
 
         with self.assertRaises(Exception) as e:
             parser.execute()