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