From 41722463588e023ec90bdd96060e9c9cc84457f1 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 28 Jul 2014 03:18:45 -0400 Subject: [PATCH] Add username and email login tests --- mayan/apps/common/tests.py | 73 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 mayan/apps/common/tests.py diff --git a/mayan/apps/common/tests.py b/mayan/apps/common/tests.py new file mode 100644 index 0000000000..c55ce0f017 --- /dev/null +++ b/mayan/apps/common/tests.py @@ -0,0 +1,73 @@ +from __future__ import absolute_import + +from json import loads +import os + +from django.conf import settings +from django.contrib.auth.models import User +from django.core.files.base import File +from django.core.urlresolvers import reverse +from django.test.client import Client +from django.test import TestCase + +import common + +TEST_ADMIN_EMAIL = 'admin@admin.com' +TEST_ADMIN_PASSWORD = 'test_admin_password' +TEST_ADMIN_USERNAME = 'test_admin' + + +class UserLoginTestCase(TestCase): + """ + Test that users can login via the supported authentication methods + """ + + def setUp(self): + self.admin_user = User.objects.create_superuser(username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD) + self.client = Client() + + def test_normal_behaviour(self): + setattr(common.views, 'LOGIN_METHOD', 'username') + response = self.client.get(reverse('document_list')) + self.assertRedirects(response, str(settings.LOGIN_URL)) + + def test_username_login(self): + setattr(common.views, 'LOGIN_METHOD', 'username') + logged_in = self.client.login(username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD) + self.assertTrue(logged_in) + response = self.client.get(reverse('document_list')) + # We didn't get redirected to the login URL + self.assertEqual(response.status_code, 200) + + def test_email_login(self): + with self.settings(COMMON_LOGIN_METHOD='email', AUTHENTICATION_BACKENDS=('common.auth.email_auth_backend.EmailAuthBackend',)): + setattr(common.views, 'LOGIN_METHOD', 'email') + logged_in = self.client.login(username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD) + self.assertFalse(logged_in) + + logged_in = self.client.login(email=TEST_ADMIN_EMAIL, password=TEST_ADMIN_PASSWORD) + self.assertTrue(logged_in) + + response = self.client.get(reverse('document_list')) + # We didn't get redirected to the login URL + self.assertEqual(response.status_code, 200) + + def test_username_login_via_views(self): + setattr(common.views, 'LOGIN_METHOD', 'username') + response = self.client.get(reverse('document_list')) + self.assertRedirects(response, str(settings.LOGIN_URL)) + + response = self.client.post(settings.LOGIN_URL, {'username': TEST_ADMIN_USERNAME, 'password': TEST_ADMIN_PASSWORD}, follow=True) + response = self.client.get(reverse('document_list')) + # We didn't get redirected to the login URL + self.assertEqual(response.status_code, 200) + + def test_email_login_via_views(self): + with self.settings(COMMON_LOGIN_METHOD='email', AUTHENTICATION_BACKENDS=('common.auth.email_auth_backend.EmailAuthBackend',)): + setattr(common.views, 'LOGIN_METHOD', 'email') + response = self.client.get(reverse('document_list')) + self.assertRedirects(response, str(settings.LOGIN_URL)) + + response = self.client.post(settings.LOGIN_URL, {'email': TEST_ADMIN_EMAIL, 'password': TEST_ADMIN_PASSWORD}, follow=True) + response = self.client.get(reverse('document_list')) + self.assertEqual(response.status_code, 200)