1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 10:58:33 +00:00
Files
seahub/tests/seahub/test_accounts.py

135 lines
4.3 KiB
Python

from mock import patch
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.utils.html import escape
from tests.common.utils import randstring
from seahub.base.accounts import RegistrationForm
from tests.common.common import USERNAME
LOGIN_URL = reverse('auth_login')
class LoginTest(TestCase):
def test_renders_correct_template(self):
resp = self.client.get(LOGIN_URL)
assert resp.status_code == 200
self.assertTemplateUsed(resp, 'registration/login.html')
def test_invalid_password(self):
# load it once for test cookie
self.client.get(LOGIN_URL)
resp = self.client.post(LOGIN_URL, {
'login': USERNAME,
'password': 'fakepasswd',
})
assert resp.status_code == 200
assert resp.context['form'].errors['__all__'] == [
u'Please enter a correct email/username and password. Note that both fields are case-sensitive.'
]
class TestRegistrationForm(TestCase):
@patch('seahub.base.accounts.user_number_over_limit')
def test_registration_form_is_valid(self, mock_user_number_over_limit):
mock_user_number_over_limit.return_value = False
user_info = {
'email':'%s@%s.com' % (randstring(10), randstring(10)) ,
'userid': randstring(40),
'password1':'password',
'password2':'password',
}
f = RegistrationForm(data = user_info)
self.assertTrue(f.is_valid())
@patch('seahub.base.accounts.user_number_over_limit')
def test_registration_form_email_invalid(self, mock_user_number_over_limit):
mock_user_number_over_limit.return_value = False
user_info = {
# invalid email without `@`
'email':'%s%s.com' % (randstring(10), randstring(10)) ,
'userid': randstring(40),
'password1':'password',
'password2':'password',
}
f = RegistrationForm(data = user_info)
assert 'Enter a valid email address.' in str(f['email'].errors)
@patch('seahub.base.accounts.user_number_over_limit')
def test_registration_form_email_invalid_for_exceed_limit(self, mock_user_number_over_limit):
mock_user_number_over_limit.return_value = True
user_info = {
'email':'%s@%s.com' % (randstring(10), randstring(10)) ,
'userid': randstring(40),
'password1':'password',
'password2':'password',
}
f = RegistrationForm(data = user_info)
assert 'The number of users exceeds the limit.' in str(f['email'].errors)
@patch('seahub.base.accounts.user_number_over_limit')
def test_registration_form_email_invalid_for_user_exist(self, mock_user_number_over_limit):
mock_user_number_over_limit.return_value = False
user_info = {
# invalid email
'email': USERNAME,
'userid': randstring(40),
'password1':'password',
'password2':'password',
}
f = RegistrationForm(data = user_info)
assert 'User %s already exists.' % USERNAME in str(f['email'].errors)
@patch('seahub.base.accounts.user_number_over_limit')
def test_registration_form_userid_invalid(self, mock_user_number_over_limit):
mock_user_number_over_limit.return_value = False
user_info = {
'email':'%s@%s.com' % (randstring(10), randstring(10)) ,
# invalid userid length < 40
'userid': randstring(10),
'password1':'password',
'password2':'password',
}
f = RegistrationForm(data = user_info)
assert 'Invalid user id.' in str(f['userid'].errors)
@patch('seahub.base.accounts.user_number_over_limit')
def test_registration_form_password_invalid(self, mock_user_number_over_limit):
mock_user_number_over_limit.return_value = False
user_info = {
'email':'%s@%s.com' % (randstring(10), randstring(10)) ,
'userid': randstring(40),
# invalid password
'password1':'password1',
'password2':'password2',
}
f = RegistrationForm(data = user_info)
# to escape `'`
assert escape("The two password fields didn't match.") in str(f['password2'].errors)