From 799382cb21c8fc5a7f1af3813f866b243e400c44 Mon Sep 17 00:00:00 2001
From: Kenzo-Hugo Hillion <kenzo-hugo.hillion1@pasteur.fr>
Date: Fri, 6 Dec 2019 14:30:47 +0100
Subject: [PATCH] refacto base for tests as admin

---
 .../api/catalog/views/test_bulk_viewset.py    | 16 ++++----------
 .../metagenedb/api/catalog/views/test_gene.py | 18 ---------------
 .../metagenedb/common/utils/tests/__init__.py |  0
 .../common/utils/tests/apitestbase.py         | 22 +++++++++++++++++++
 4 files changed, 26 insertions(+), 30 deletions(-)
 create mode 100644 backend/metagenedb/common/utils/tests/__init__.py
 create mode 100644 backend/metagenedb/common/utils/tests/apitestbase.py

diff --git a/backend/metagenedb/api/catalog/views/test_bulk_viewset.py b/backend/metagenedb/api/catalog/views/test_bulk_viewset.py
index 8dc6fc1..3e5445c 100644
--- a/backend/metagenedb/api/catalog/views/test_bulk_viewset.py
+++ b/backend/metagenedb/api/catalog/views/test_bulk_viewset.py
@@ -1,10 +1,9 @@
-from django.contrib.auth.models import User
 from requests.exceptions import HTTPError
 from rest_framework.test import APITestCase
-from rest_framework_jwt.settings import api_settings
 
 from metagenedb.apps.catalog.factory import FunctionFactory
 from metagenedb.common.utils.mocks.metagenedb import MetageneDBCatalogFunctionAPIMock
+from metagenedb.common.utils.tests.apitestbase import AdminUserBasedTest
 
 
 class TestOperationsBulkViewSetNoCredentials(APITestCase):
@@ -32,7 +31,7 @@ class TestOperationsBulkViewSetNoCredentials(APITestCase):
             self.function_api.put(data, function.function_id)
 
 
-class TestOperationsBulkViewSet(APITestCase):
+class TestOperationsBulkViewSet(AdminUserBasedTest):
     """
     We are testing the different functions through the API directly through the mock redirecting
     requests to the test database.
@@ -41,15 +40,8 @@ class TestOperationsBulkViewSet(APITestCase):
     """
 
     def setUp(self):
-        jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
-        jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
-        user = User.objects.create_user(username='user_admin', email='user@admin.com', password='pass')
-        user.is_active = True
-        user.is_staff = True
-        user.save()
-        payload = jwt_payload_handler(user)
-        jwt_token = jwt_encode_handler(payload)
-        self.function_api = MetageneDBCatalogFunctionAPIMock(self.client, jwt_token=jwt_token)
+        super().setUp()
+        self.function_api = MetageneDBCatalogFunctionAPIMock(self.client, jwt_token=self.jwt_token)
 
     def test_create_function(self):
         data = {
diff --git a/backend/metagenedb/api/catalog/views/test_gene.py b/backend/metagenedb/api/catalog/views/test_gene.py
index e2e4421..32c1a6b 100644
--- a/backend/metagenedb/api/catalog/views/test_gene.py
+++ b/backend/metagenedb/api/catalog/views/test_gene.py
@@ -20,24 +20,6 @@ class TestGenes(TestCase):
         resp = self.client.get(url)
         self.assertEqual(resp.status_code, status.HTTP_200_OK)
 
-    def test_get_genes_auth(self):
-        """
-        Authenticated users should be able to access genes
-        """
-
-        jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
-        jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
-
-        user = User.objects.create_user(username='user', email='user@foo.com', password='pass')
-        user.is_active = True
-        user.save()
-        payload = jwt_payload_handler(user)
-        token = jwt_encode_handler(payload)
-
-        url = reverse('api:catalog:v1:genes-list')
-        resp = self.client.get(url, format='json', HTTP_AUTHORIZATION=f"JWT {token}")
-        self.assertEqual(resp.status_code, status.HTTP_200_OK)
-
 
 class TestCountWindowsAPI(APITestCase):
 
diff --git a/backend/metagenedb/common/utils/tests/__init__.py b/backend/metagenedb/common/utils/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/backend/metagenedb/common/utils/tests/apitestbase.py b/backend/metagenedb/common/utils/tests/apitestbase.py
new file mode 100644
index 0000000..b695a93
--- /dev/null
+++ b/backend/metagenedb/common/utils/tests/apitestbase.py
@@ -0,0 +1,22 @@
+from django.contrib.auth.models import User
+from rest_framework.test import APITestCase
+from rest_framework_jwt.settings import api_settings
+
+
+class AdminUserBasedTest(APITestCase):
+    """
+    We are testing the different functions through the API directly through the mock redirecting
+    requests to the test database.
+
+    The extent is a bit more than a unittest since it is not just involving concerned methods.
+    """
+
+    def setUp(self):
+        jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
+        jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
+        user = User.objects.create_user(username='user_admin', email='user@admin.com', password='pass')
+        user.is_active = True
+        user.is_staff = True
+        user.save()
+        payload = jwt_payload_handler(user)
+        self.jwt_token = jwt_encode_handler(payload)
-- 
GitLab