~ubuntu-branches/debian/sid/python-django/sid

« back to all changes in this revision

Viewing changes to django/contrib/auth/tests/signals.py

  • Committer: Package Import Robot
  • Author(s): Luke Faraone
  • Date: 2013-11-07 15:33:49 UTC
  • mfrom: (1.3.12)
  • Revision ID: package-import@ubuntu.com-20131107153349-e31sc149l2szs3jb
Tags: 1.6-1
* New upstream version. Closes: #557474, #724637.
* python-django now also suggests the installation of ipython,
  bpython, python-django-doc, and libgdal1.
  Closes: #636511, #686333, #704203
* Set package maintainer to Debian Python Modules Team.
* Bump standards version to 3.9.5, no changes needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from django.contrib.auth import signals
2
 
from django.contrib.auth.models import User
3
 
from django.contrib.auth.tests.utils import skipIfCustomUser
4
 
from django.test import TestCase
5
 
from django.test.client import RequestFactory
6
 
from django.test.utils import override_settings
7
 
 
8
 
 
9
 
@skipIfCustomUser
10
 
@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
11
 
class SignalTestCase(TestCase):
12
 
    urls = 'django.contrib.auth.tests.urls'
13
 
    fixtures = ['authtestdata.json']
14
 
 
15
 
    def listener_login(self, user, **kwargs):
16
 
        self.logged_in.append(user)
17
 
 
18
 
    def listener_logout(self, user, **kwargs):
19
 
        self.logged_out.append(user)
20
 
 
21
 
    def listener_login_failed(self, sender, credentials, **kwargs):
22
 
        self.login_failed.append(credentials)
23
 
 
24
 
    def setUp(self):
25
 
        """Set up the listeners and reset the logged in/logged out counters"""
26
 
        self.logged_in = []
27
 
        self.logged_out = []
28
 
        self.login_failed = []
29
 
        signals.user_logged_in.connect(self.listener_login)
30
 
        signals.user_logged_out.connect(self.listener_logout)
31
 
        signals.user_login_failed.connect(self.listener_login_failed)
32
 
 
33
 
    def tearDown(self):
34
 
        """Disconnect the listeners"""
35
 
        signals.user_logged_in.disconnect(self.listener_login)
36
 
        signals.user_logged_out.disconnect(self.listener_logout)
37
 
        signals.user_login_failed.disconnect(self.listener_login_failed)
38
 
 
39
 
    def test_login(self):
40
 
        # Only a successful login will trigger the success signal.
41
 
        self.client.login(username='testclient', password='bad')
42
 
        self.assertEqual(len(self.logged_in), 0)
43
 
        self.assertEqual(len(self.login_failed), 1)
44
 
        self.assertEqual(self.login_failed[0]['username'], 'testclient')
45
 
        # verify the password is cleansed
46
 
        self.assertTrue('***' in self.login_failed[0]['password'])
47
 
 
48
 
        # Like this:
49
 
        self.client.login(username='testclient', password='password')
50
 
        self.assertEqual(len(self.logged_in), 1)
51
 
        self.assertEqual(self.logged_in[0].username, 'testclient')
52
 
 
53
 
        # Ensure there were no more failures.
54
 
        self.assertEqual(len(self.login_failed), 1)
55
 
 
56
 
    def test_logout_anonymous(self):
57
 
        # The log_out function will still trigger the signal for anonymous
58
 
        # users.
59
 
        self.client.get('/logout/next_page/')
60
 
        self.assertEqual(len(self.logged_out), 1)
61
 
        self.assertEqual(self.logged_out[0], None)
62
 
 
63
 
    def test_logout(self):
64
 
        self.client.login(username='testclient', password='password')
65
 
        self.client.get('/logout/next_page/')
66
 
        self.assertEqual(len(self.logged_out), 1)
67
 
        self.assertEqual(self.logged_out[0].username, 'testclient')
68
 
 
69
 
    def test_update_last_login(self):
70
 
        """Ensure that only `last_login` is updated in `update_last_login`"""
71
 
        user = User.objects.get(pk=3)
72
 
        old_last_login = user.last_login
73
 
 
74
 
        user.username = "This username shouldn't get saved"
75
 
        request = RequestFactory().get('/login')
76
 
        signals.user_logged_in.send(sender=user.__class__, request=request,
77
 
            user=user)
78
 
        user = User.objects.get(pk=3)
79
 
        self.assertEqual(user.username, 'staff')
80
 
        self.assertNotEqual(user.last_login, old_last_login)