1
# -*- coding: utf-8 -*-
3
# Copyright 2010 Canonical Ltd. This software is licensed under the
4
# GNU Affero General Public License version 3 (see the file LICENSE).
6
from django.conf import settings
7
from identityprovider.models.account import Account
8
from identityprovider.forms import EditAccountForm, ResetPasswordForm
9
from identityprovider.webservice import forms
10
from identityprovider.webservice.forms import WebserviceCreateAccountForm
11
from utils import BasicAccountTestCase, SQLCachedTestCase
14
class EditAccountFormTest(BasicAccountTestCase):
16
def test_initial_displayname(self):
17
account = Account.objects.get(openid_identifier='name12_oid')
18
form = EditAccountForm(account=account)
19
self.assertEqual(form.initial.get('displayname', ''), "Sample Person")
21
def test_nonascii_password(self):
22
account = Account.objects.get(openid_identifier='name12_oid')
23
data = {'newpassword': 'changüí'}
24
form = EditAccountForm(account=account, data=data)
25
self.assertFalse(form.is_valid())
26
self.assertEqual(form.errors['newpassword'][0],
27
'Invalid characters in password')
29
def test_no_preferredemail(self):
30
# replace preferredemail property
31
_preferredemail = Account.preferredemail
32
Account.preferredemail = None
34
account = Account.objects.get(openid_identifier='name12_oid')
35
form = EditAccountForm(account=account)
36
self.assertEqual(form.initial.get('displayname', ''), "Sample Person")
38
Account.preferredemail = _preferredemail
40
def test_displayname_validation(self):
41
account = Account.objects.get(openid_identifier='name12_oid')
42
form = EditAccountForm(account=account, data={'displayname': ' '})
43
self.assertFalse(form.is_valid())
44
self.assertTrue(form.errors['displayname'] == [u'Required field'])
45
form = EditAccountForm(account=account,
46
data={'displayname': 'Sample Person'})
47
self.assertFalse(form.is_valid())
48
self.assertFalse('displayname' in form.errors)
51
class WebServiceCreateAccountFormTest(SQLCachedTestCase):
54
settings.DISABLE_CAPTCHA_VERIFICATION = True
56
class Request(object):
59
self.form = {'captcha_id': None, 'captcha_solution': None}
60
self.old_get_request = forms.get_current_browser_request
61
forms.get_current_browser_request = lambda: Request()
64
forms.get_current_browser_request = self.old_get_request
66
def test_nonascii_password(self):
67
data = {'password': 'Curuzú Cuatiá'}
68
form = WebserviceCreateAccountForm(data=data)
69
self.assertFalse(form.is_valid())
70
self.assertEqual(form.errors['password'][0],
71
'Invalid characters in password')
74
class ResetPasswordFormTest(SQLCachedTestCase):
76
def test_nonascii_password(self):
77
data = {'password': 'Ñandú'}
78
form = ResetPasswordForm(data=data)
79
self.assertFalse(form.is_valid())
80
self.assertEqual(form.errors['password'][0],
81
'Invalid characters in password')