-
Notifications
You must be signed in to change notification settings - Fork 41
/
test_accounts.py
70 lines (54 loc) · 2.24 KB
/
test_accounts.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import re
from django.conf import settings
from django.core import mail
from django_webtest import WebTest
from core import models
from django.test.client import Client
from django.contrib.auth.models import User
class AccountTest(WebTest):
def setUp(self):
pass
def test_create_account(self):
app = self.app
# go to home page, go to login page, go to new account page
res = (
app
.get( '/' )
.click(description='login', index=1)
.click( description='Need an account' )
)
# TODO - allow better usernames.
#
# Django (since 1.2) has allowed more chars in usernames but the
# registration app has lagged behind:
# https://bitbucket.org/ubernostrum/django-registration/issue/80/username-regex-shouldnt-be-more
# create an account
form = res.forms[1]
form['username'] = 'test_user'
form['email'] = 'test@example.com'
form['password1'] = 's3cr3t'
form['password2'] = 's3cr3t'
res = form.submit()
# check that user created but not active
user = User.objects.get(username='test_user')
self.assertFalse( user.is_active )
# check that an email has been sent
self.assertEqual(len(mail.outbox), 1)
confirm_url = re.search( r'/accounts/activate/\S+', mail.outbox[0].body ).group()
res = app.get( confirm_url, auto_follow=True )
self.assertContains( res, 'activation complete' )
# check that user now active
user = User.objects.get(username='test_user')
self.assertTrue( user.is_active )
# check that the user con login
res = res.click(description='login', index=2)
form = res.forms[1]
form['username'] = 'test_user'
form['password'] = 's3cr3t'
res = form.submit().follow()
# check that we are back on homepage and logged in
self.assertEqual('/', res.request.path, 'back on home page')
self.assertContains( res, 'test_user' )
# logout
res = res.click( description='logout', index=1 )
self.assertEqual('/accounts/logout/', res.request.path)