52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
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()
|
|
|
|
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, '/')
|