2015-01-12 15:51:54 +00:00
|
|
|
from django.test import TestCase, Client
|
|
|
|
from django_webtest import WebTest
|
|
|
|
from django.contrib.auth.models import User
|
|
|
|
from django.contrib.auth.forms import UserCreationForm
|
|
|
|
|
|
|
|
class FrontTest(TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.client = Client()
|
|
|
|
|
2014-12-17 12:30:58 +00:00
|
|
|
self.admin = User.objects.create_user(
|
|
|
|
username = 'admin',
|
|
|
|
password = 'password')
|
|
|
|
self.admin.save()
|
|
|
|
|
|
|
|
def test_login_page(self):
|
|
|
|
response = self.client.get('/accounts/login')
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
|
|
def test_login(self):
|
|
|
|
response = self.client.post('/accounts/login', {
|
|
|
|
'next': '/',
|
|
|
|
'username': 'admin',
|
|
|
|
'password': 'password'})
|
|
|
|
|
|
|
|
self.assertRedirects(response, '/')
|
|
|
|
|
|
|
|
def test_logout(self):
|
|
|
|
self.client.login(username = 'admin', password = 'aeou')
|
|
|
|
|
|
|
|
response = self.client.get('/accounts/logout')
|
|
|
|
self.assertRedirects(response, '/')
|
|
|
|
|
2015-01-12 15:51:54 +00:00
|
|
|
def test_registration_page(self):
|
|
|
|
response = self.client.get('/accounts/register')
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
|
|
class RegFormTest(WebTest):
|
|
|
|
def test_valid_data(self):
|
|
|
|
form_data = {
|
|
|
|
'username': 'test',
|
|
|
|
'password1': 'password',
|
|
|
|
'password2': 'password'
|
|
|
|
}
|
|
|
|
|
|
|
|
form = UserCreationForm(form_data)
|
|
|
|
self.assertTrue(form.is_valid())
|
|
|
|
|
|
|
|
user = form.save()
|
|
|
|
self.assertEqual(user.username, 'test')
|
|
|
|
# The password must be encrypted by now
|
|
|
|
self.assertNotEqual(user.password, 'password')
|
|
|
|
|
|
|
|
def test_empty(self):
|
|
|
|
form_data = {}
|
|
|
|
form = UserCreationForm(form_data)
|
|
|
|
self.assertFalse(form.is_valid())
|
|
|
|
self.assertEqual(form.errors, {
|
|
|
|
'username': ['This field is required.'],
|
|
|
|
'password1': ['This field is required.'],
|
|
|
|
'password2': ['This field is required.'],
|
|
|
|
})
|
|
|
|
|
|
|
|
def test_form_error(self):
|
|
|
|
page = self.app.get('/accounts/register')
|
|
|
|
page = page.form.submit()
|
|
|
|
self.assertContains(page, "This field is required.")
|
|
|
|
|
|
|
|
def test_form_success(self):
|
|
|
|
page = self.app.get('/accounts/register')
|
|
|
|
page.form['username'] = 'test'
|
|
|
|
page.form['password1'] = 'password'
|
|
|
|
page.form['password2'] = 'password'
|
|
|
|
page = page.form.submit()
|
|
|
|
self.assertRedirects(page, '/')
|