From 71ebe913092919d84c6d46f7b5e71571106f9121 Mon Sep 17 00:00:00 2001
From: vagrant <vagrant@vagrant.vm>
Date: Thu, 8 Oct 2020 05:17:07 +0000
Subject: [PATCH 1/4] change test remove \n

---
 app/tests.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/tests.py b/app/tests.py
index cf10ccb..ea61464 100644
--- a/app/tests.py
+++ b/app/tests.py
@@ -1066,7 +1066,7 @@ class GenerateDummyCommandTest(TestCase):
         for num_of_materi in self.material_numbers:
             call_command("generatedummy", num_of_materi, stdout=self.stdout)
             self.assertIn(
-                f"Successfully created {num_of_materi} materi\n",
+                f"Successfully created {num_of_materi} materi",
                 self.stdout.getvalue()
             )
 
@@ -1090,7 +1090,7 @@ class RemoveDummyCommandTest(TestCase):
 
         call_command("removedummy", stdout=stdout)
 
-        self.assertEqual("Successfully remove all dummy object\n", stdout.getvalue())
+        self.assertEqual("Successfully remove all dummy object", stdout.getvalue())
         self.assertEqual(User.objects.count(), 0)
         self.assertEqual(Category.objects.count(), 0)
         self.assertEqual(Materi.objects.count(), 0)
-- 
GitLab


From 731c1a2a4f97306f26b588fdd29c68f04630e750 Mon Sep 17 00:00:00 2001
From: vagrant <vagrant@vagrant.vm>
Date: Thu, 8 Oct 2020 05:32:51 +0000
Subject: [PATCH 2/4] [RED] add redirect after auth test

---
 authentication/tests.py | 45 ++++++++++++++++++++++++++++++++---------
 1 file changed, 36 insertions(+), 9 deletions(-)

diff --git a/authentication/tests.py b/authentication/tests.py
index 54d5cf9..c63f6f9 100644
--- a/authentication/tests.py
+++ b/authentication/tests.py
@@ -74,7 +74,7 @@ class UserModelTest(TestCase):
 class LoginPageContributorTest(TestCase):
     def setUp(self):
         self.client = Client()
-        self.admin = User.objects.create_contributor(email="kontributor@gov.id",
+        self.kontributor = User.objects.create_contributor(email="kontributor@gov.id",
                                                      password="kontributor")
         self.url = "/login/"
         self.view = Login
@@ -86,34 +86,34 @@ class LoginPageContributorTest(TestCase):
             "wrong_email_or_password": "Email atau Password anda salah.",
         }
 
-    def test_login_admin_view(self):
+    def test_login_kontributor_view(self):
         found = resolve(self.url)
         self.assertEqual(found.func.__name__, self.view.as_view().__name__)
 
-    def test_login_admin_template(self):
+    def test_login_kontributor_template(self):
         # Test
         response = self.client.get(self.url)
         self.assertTemplateUsed(response, self.template_name)
 
-    def test_login_admin_url(self):
+    def test_login_kontributor_url(self):
         # Test
         response = self.client.get(self.url)
         self.assertEqual(response.status_code, 200)
 
-    def test_login_admin_title(self):
+    def test_login_kontributor_title(self):
         response = self.client.get(self.url)
 
         # Positive tests
         self.assertContains(response, "Halo, kontributor")
 
-    def test_login_admin_form_field(self):
+    def test_login_kontributor_form_field(self):
         response = self.client.get(self.url)
 
         # Positive tests
         self.assertContains(response, "Email")
         self.assertContains(response, "Kata Sandi")
 
-    def test_admin_login_missing_email_or_password(self):
+    def test_kontributor_login_missing_email_or_password(self):
         response = self.client.post(self.url, {"email": "kontributor@gov.id"})
         self.assertIn("error_message", response.context_data)
         self.assertIn(self.error_message["empty_email_or_password"],
@@ -123,7 +123,7 @@ class LoginPageContributorTest(TestCase):
         self.assertIn(self.error_message["empty_email_or_password"],
                       response.context_data["error_message"])
 
-    def test_admin_login_wrong_email_or_password(self):
+    def test_kontributor_login_wrong_email_or_password(self):
         # Wrong password
         response = self.client.post(
             self.url, {"email": "kontributor@gov.id", "pass": "kontributor1"})
@@ -143,7 +143,7 @@ class LoginPageContributorTest(TestCase):
         self.assertIn(self.error_message["wrong_email_or_password"],
                       response.context_data["error_message"])
 
-    def test_admin_login(self):
+    def test_kontributor_login(self):
         # 302 meaning successful login and redirected
         expected_redirect_url = "/sukses-kontributor/"
         response = self.client.post(
@@ -151,6 +151,19 @@ class LoginPageContributorTest(TestCase):
         self.assertEqual(302, response.status_code)
         self.assertEqual(response.url, expected_redirect_url)
 
+    def test_kontributor_visit_login_after_auth(self):
+        # 302 meaning successful login and redirected
+        expected_redirect_url = "/sukses-kontributor/"
+        response = self.client.post(
+            self.url, self.login_credential)
+        self.assertEqual(302, response.status_code)
+        self.assertEqual(response.url, expected_redirect_url)
+        response = self.client.get(
+            self.url
+        )
+        self.assertEqual(302, response.status_code)
+        self.assertEqual(response.url, expected_redirect_url)
+
 
 class LoginPageAdminTest(TestCase):
     def setUp(self):
@@ -230,3 +243,17 @@ class LoginPageAdminTest(TestCase):
             self.url, self.login_credential)
         self.assertEqual(302, response.status_code)
         self.assertEqual(response.url, expected_redirect_url)
+
+
+    def test_admin_visit_login_after_auth(self):
+        # 302 meaning successful login and redirected
+        expected_redirect_url = "/sukses-admin/"
+        response = self.client.post(
+            self.url, self.login_credential)
+        self.assertEqual(302, response.status_code)
+        self.assertEqual(response.url, expected_redirect_url)
+        response = self.client.get(
+            self.url
+        )
+        self.assertEqual(302, response.status_code)
+        self.assertEqual(response.url, expected_redirect_url)
-- 
GitLab


From e881c7dcf8e7d7a9d112deb5b4efa3f53c0d07c9 Mon Sep 17 00:00:00 2001
From: vagrant <vagrant@vagrant.vm>
Date: Thu, 8 Oct 2020 05:33:24 +0000
Subject: [PATCH 3/4] [GREEN] add implementation

---
 authentication/views.py | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/authentication/views.py b/authentication/views.py
index 6f67ccb..f5e7d82 100644
--- a/authentication/views.py
+++ b/authentication/views.py
@@ -4,6 +4,16 @@ from django.views.generic import TemplateView
 
 
 class Login(TemplateView):
+    
+    def dispatch(self, request, *args, **kwargs):
+        if request.user.is_authenticated:
+            if request.user.is_admin:
+                redirect_to = "/sukses-admin/"
+            elif request.user.is_contributor:
+                redirect_to = "/sukses-kontributor/"
+            return HttpResponseRedirect(redirect_to)
+        return super(Login, self).dispatch(request, *args, **kwargs)
+
     def get_template_names(self):
         if self.request.path == "/login_admin/":
             template_name = "login_admin.html"
-- 
GitLab


From 570986f1c8bd691bb65e24df80617d9cdd97d5b1 Mon Sep 17 00:00:00 2001
From: vagrant <vagrant@vagrant.vm>
Date: Thu, 8 Oct 2020 05:42:54 +0000
Subject: [PATCH 4/4] change test because some terminal uses xterm-256

---
 app/tests.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/tests.py b/app/tests.py
index ea61464..465349e 100644
--- a/app/tests.py
+++ b/app/tests.py
@@ -1090,7 +1090,7 @@ class RemoveDummyCommandTest(TestCase):
 
         call_command("removedummy", stdout=stdout)
 
-        self.assertEqual("Successfully remove all dummy object", stdout.getvalue())
+        self.assertIn("Successfully remove all dummy object", stdout.getvalue())
         self.assertEqual(User.objects.count(), 0)
         self.assertEqual(Category.objects.count(), 0)
         self.assertEqual(Materi.objects.count(), 0)
-- 
GitLab