From 40765cbcdd94ab00deafc204b2d2ac99a4a914c4 Mon Sep 17 00:00:00 2001
From: Kenzo-Hugo Hillion <kenzo-hugo.hillion1@pasteur.fr>
Date: Wed, 19 Jun 2019 15:31:07 +0200
Subject: [PATCH] add more tests

try desesperate move for CI
---
 .gitlab-ci.yml                                |  2 +-
 .../apps/accounts/{test_auth.py => tests.py}  | 20 +++++++++++
 .../apps/catalog/models/test_views.py         | 36 +++++++++++++++++++
 backend/metagenedb/apps/catalog/urls.py       |  2 +-
 4 files changed, 58 insertions(+), 2 deletions(-)
 rename backend/metagenedb/apps/accounts/{test_auth.py => tests.py} (58%)
 create mode 100644 backend/metagenedb/apps/catalog/models/test_views.py

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e831c7b..e3df1a0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,7 +21,7 @@ cache:
 before_script:
   - cd backend
   - pip install -r requirements_dev.txt
-  - pip install .
+  - pip install -e .
 
 test-backend:
   stage: lint_test_coverage_backend
diff --git a/backend/metagenedb/apps/accounts/test_auth.py b/backend/metagenedb/apps/accounts/tests.py
similarity index 58%
rename from backend/metagenedb/apps/accounts/test_auth.py
rename to backend/metagenedb/apps/accounts/tests.py
index fc240e3..39171ec 100644
--- a/backend/metagenedb/apps/accounts/test_auth.py
+++ b/backend/metagenedb/apps/accounts/tests.py
@@ -4,6 +4,7 @@ from rest_framework import status
 
 
 from django.contrib.auth.models import User
+from rest_framework_jwt.settings import api_settings
 
 
 class TestAccounts(APITestCase):
@@ -26,3 +27,22 @@ class TestAccounts(APITestCase):
         resp = self.client.post(url, {'username': 'user', 'password': 'pass'}, format='json')
         self.assertEqual(resp.status_code, status.HTTP_200_OK)
         self.assertTrue('token' in resp.data)
+
+    def test_verify_jwt(self):
+
+        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)
+
+        verify_url = reverse('api-jwt-verify')
+        credentials = {
+            'token': token
+        }
+
+        resp = self.client.post(verify_url, credentials, format='json')
+        self.assertEqual(resp.status_code, status.HTTP_200_OK)
diff --git a/backend/metagenedb/apps/catalog/models/test_views.py b/backend/metagenedb/apps/catalog/models/test_views.py
new file mode 100644
index 0000000..56394e9
--- /dev/null
+++ b/backend/metagenedb/apps/catalog/models/test_views.py
@@ -0,0 +1,36 @@
+from django.contrib.auth.models import User
+from django.test import TestCase
+from django.urls import reverse
+
+from rest_framework import status
+from rest_framework_jwt.settings import api_settings
+
+
+class TestGenes(TestCase):
+    """Post Tests"""
+
+    def test_get_genes_no_auth(self):
+        """
+        Unauthenticated users should not be able to access genes via APIListView
+        """
+        url = reverse('genes')
+        resp = self.client.get(url)
+        self.assertEqual(resp.status_code, status.HTTP_401_UNAUTHORIZED)
+
+    def test_get_genes_auth(self):
+        """
+        Authenticated users should be able to access genes via APIListView
+        """
+
+        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('genes')
+        resp = self.client.get(url, format='json', HTTP_AUTHORIZATION=f"JWT {token}")
+        self.assertEqual(resp.status_code, status.HTTP_200_OK)
diff --git a/backend/metagenedb/apps/catalog/urls.py b/backend/metagenedb/apps/catalog/urls.py
index 5ffcf0a..a25b56c 100644
--- a/backend/metagenedb/apps/catalog/urls.py
+++ b/backend/metagenedb/apps/catalog/urls.py
@@ -4,6 +4,6 @@ from . import views
 
 urlpatterns = [
     path('', views.index, name='index'),
-    re_path(r'^api/genes/$', views.gene_list),
+    re_path(r'^api/genes$', views.gene_list, name='genes'),
     re_path(r'^api/genes/(?P<gene_id>.*)$', views.gene_detail),
 ]
-- 
GitLab