Source code for django_pam.accounts.tests.test_accounts_forms

# -*- coding: utf-8 -*-
#
# django_pam/accounts/tests/test_accounts_forms.py
#

from django.test import RequestFactory
from django.contrib.auth.models import AnonymousUser
from django.http import QueryDict
from django_pam.auth.tests.base_test import BaseDjangoPAM

from ..forms import AuthenticationForm


[docs] class TestAuthenticationForm(BaseDjangoPAM): def __init__(self, name): super().__init__(name) self.factory = None
[docs] def setUp(self): self.factory = RequestFactory()
[docs] def test_user_created(self): """ Test that the form created a user. Form constructor signature: .. code-block:: php __init__(self, request=None, *args, **kwargs) """ #self.skipTest("Temporarily skipped") # Get user's credentials. user, username, password, email = self._create_user() # Setup request request = self.factory.get('django-pam:login') request.user = AnonymousUser() kwargs = {} data = kwargs.setdefault('data', QueryDict(mutable=True)) data.appendlist('username', username) data.appendlist('password', password) data.appendlist('email', email) form = AuthenticationForm(**kwargs) msg = "kwargs: {}, errors: {}".format(kwargs, form.errors.as_data()) self.assertTrue(form.is_valid(), msg) self.assertEqual(form.user_cache.username, username, msg) self.assertTrue(form.user_cache.check_password(password), msg) self.assertEqual(form.user_cache.email, email, msg)
[docs] def test_missing_credentials(self): """ Test for missing credentials. """ #self.skipTest("Temporarily skipped") # Get user's credentials. username, password, email = self._prompt(need_email=True) # Setup request request = self.factory.get('django-pam:login') request.user = AnonymousUser() kwargs = {} data = kwargs.setdefault('data', QueryDict(mutable=True)) data.appendlist('username', username) data.appendlist('password', '') data.appendlist('email', email) form = AuthenticationForm(**kwargs) msg = "kwargs: {}, errors: {}".format(kwargs, form.errors.as_data()) self.assertFalse(form.is_valid(), msg) # Check that we have a password and __all__ error messages. self.assertTrue('password' in form.errors.as_data(), msg) self.assertTrue('__all__' in form.errors.as_data(), msg)
[docs] def test_invalid_credentials(self): """ Test for invalid credentials. """ #self.skipTest("Temporarily skipped") username, password, email = "somebody", "password", "bad@email.net" request = self.factory.get('django-pam:login') request.user = AnonymousUser() kwargs = {} data = kwargs.setdefault('data', QueryDict(mutable=True)) data.appendlist('username', username) data.appendlist('password', password) data.appendlist('email', email) form = AuthenticationForm(**kwargs) msg = "kwargs: {}, errors: {}".format(kwargs, form.errors.as_data()) self.assertFalse(form.is_valid(), msg) self.assertTrue('__all__' in form.errors.as_data(), msg)