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