From a13b1f2119d7987e25352079c534dafe81df0e2c Mon Sep 17 00:00:00 2001
From: Thibaud Duquennoy <thibaud@duquennoy.fr>
Date: Thu, 31 Jan 2019 12:58:31 +0100
Subject: [PATCH] WIP: add test for permission
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Test for djangoldp-joboffer’s permissions
---
 djangoldp/tests/runner.py |  1 +
 djangoldp/tests/tests.py  | 75 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)
 create mode 100644 djangoldp/tests/tests.py

diff --git a/djangoldp/tests/runner.py b/djangoldp/tests/runner.py
index 4e3bcd04..af9839c8 100644
--- a/djangoldp/tests/runner.py
+++ b/djangoldp/tests/runner.py
@@ -27,6 +27,7 @@ test_runner = DiscoverRunner(verbosity=1)
 failures = test_runner.run_tests([
     'djangoldp.tests.tests_ldp_model',
     'djangoldp.tests.tests_save',
+    'djangoldp.tests.tests',
     'djangoldp.tests.tests_update'])
 if failures:
     sys.exit(failures)
diff --git a/djangoldp/tests/tests.py b/djangoldp/tests/tests.py
new file mode 100644
index 00000000..53644644
--- /dev/null
+++ b/djangoldp/tests/tests.py
@@ -0,0 +1,75 @@
+from django.test import TestCase, Client, RequestFactory
+from djangoldp.views import LDPViewSet
+from djangoldp.permissions import AnonymousReadOnly
+
+from django.contrib.auth.models import AnonymousUser, User
+from djangoldp_joboffer.models import JobOffer
+
+
+class TestUserPermissions (TestCase):
+    def setUp(self):
+        self.factory = RequestFactory()
+#        self.c = Client()
+        self.user = User.objects.create_user(username='john', email='jlennon@beatles.com', password='glass onion')
+
+    def tearDown(self):
+        self.user.delete()
+
+    def test_get_with_user(self):
+        request = self.factory.get('/job-offers/')
+        request.user = self.user
+        my_view = LDPViewSet.as_view({'get': 'list'}, model=JobOffer, nested_fields=["skills"], permission_classes=[AnonymousReadOnly])
+        response = my_view(request)
+        self.assertEqual(response.status_code, 200)
+
+    def test_request_options_create_with_user(self):
+        request = self.factory.options('/job-offers/')
+        request.user = self.user
+        my_view = LDPViewSet.as_view({'options': 'create'}, model=JobOffer, nested_fields=["skills"], permission_classes=[AnonymousReadOnly])
+        response = my_view(request)
+        self.assertEqual(response.status_code, 201)
+
+    def test_request_options_update_with_user(self):
+        request = self.factory.options('/job-offers/')
+        request.user = self.user
+        my_view = LDPViewSet.as_view({'options': 'update'}, model=JobOffer, nested_fields=["skills"], permission_classes=[AnonymousReadOnly])
+        response = my_view(request)
+        self.assertEqual(response.status_code, 201)
+
+class TestAnonymousUserPermissions (TestCase):
+    def setUp(self):
+        self.factory = RequestFactory()
+#        self.c = Client()
+        self.user = AnonymousUser
+
+    def test_get_request_with_anonymousUser(self):
+        request = self.factory.get("/job-offers/")
+        request.user = self.user
+        my_view = LDPViewSet.as_view({'get': 'list'},
+                                     model=JobOffer,
+                                     nested_fields=["skills"],
+                                     permission_classes=[AnonymousReadOnly])
+        response = my_view(request)
+        self.assertEqual(response.status_code, 200)
+
+    def test_request_options_create_with_anonymousUser(self):
+        request = self.factory.options("/job-offers/")
+        request.user = self.user
+        my_view = LDPViewSet.as_view({'options': 'create'},
+                                     model=JobOffer,
+                                     nested_fields=["skills"],
+                                     permission_classes=[AnonymousReadOnly])
+        response = my_view(request)
+        self.assertEqual(response.status_code, 403)
+
+    def test_request_options_update_with_anonymousUser(self):
+        request = self.factory.options("/job-offers/")
+        request.user = self.user
+        my_view = LDPViewSet.as_view({'options': 'update'},
+                                     model=JobOffer,
+                                     nested_fields=["skills"],
+                                     permission_classes=[AnonymousReadOnly])
+        response = my_view(request)
+        self.assertEqual(response.status_code, 403)
+
+
-- 
GitLab