~ubuntuone-pqm-team/canonical-identity-provider/trunk

« back to all changes in this revision

Viewing changes to identityprovider/tests/test_forms.py

  • Committer: Danny Tamez
  • Date: 2010-04-21 15:29:24 UTC
  • Revision ID: danny.tamez@canonical.com-20100421152924-lq1m92tstk2iz75a
Canonical SSO Provider (Open Source) - Initial Commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
 
 
3
# Copyright 2010 Canonical Ltd.  This software is licensed under the
 
4
# GNU Affero General Public License version 3 (see the file LICENSE).
 
5
 
 
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
 
12
 
 
13
 
 
14
class EditAccountFormTest(BasicAccountTestCase):
 
15
 
 
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")
 
20
 
 
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')
 
28
 
 
29
    def test_no_preferredemail(self):
 
30
        # replace preferredemail property
 
31
        _preferredemail = Account.preferredemail
 
32
        Account.preferredemail = None
 
33
 
 
34
        account = Account.objects.get(openid_identifier='name12_oid')
 
35
        form = EditAccountForm(account=account)
 
36
        self.assertEqual(form.initial.get('displayname', ''), "Sample Person")
 
37
 
 
38
        Account.preferredemail = _preferredemail
 
39
 
 
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)
 
49
 
 
50
 
 
51
class WebServiceCreateAccountFormTest(SQLCachedTestCase):
 
52
 
 
53
    def setUp(self):
 
54
        settings.DISABLE_CAPTCHA_VERIFICATION = True
 
55
 
 
56
        class Request(object):
 
57
            def __init__(self):
 
58
                self.environment = {}
 
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()
 
62
 
 
63
    def tearDown(self):
 
64
        forms.get_current_browser_request = self.old_get_request
 
65
 
 
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')
 
72
 
 
73
 
 
74
class ResetPasswordFormTest(SQLCachedTestCase):
 
75
 
 
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')