from django.test import TestCase, Client from interface import models class RegisterTestCase(TestCase): def setUp(self): self.client = Client() @staticmethod def setUpTestData(): e1 = models.Ensemble.objects.create(name='The Be Sharps', code="1234", passphrase='Homer') e1.projects.create(name='Baby on Board') e2 = models.Ensemble.objects.create(name='Lisa and the Bleeding Gums', code="2345", passphrase="Maggie") e2.projects.create(name='Baker St') def test_redirect(self): response = self.client.get('/') self.assertRedirects(response, '/register?') def test_redirect_project(self): response = self.client.get('/projects/1') self.assertRedirects(response, '/register?') def test_redirect_with_code(self): response = self.client.get('/?code=123-456-789') self.assertRedirects(response, '/register?code=123-456-789') def test_register(self): response = self.client.post('/register', {'code': '123-456-789', }) self.assertFormError(response, 'form', 'passphrase', 'This field is required.') response = self.client.post('/register', {'code': '123-456-789', 'passphrase': 'Foo'}) self.assertFormError(response, 'form', None, 'Incorrect code or passphrase') response = self.client.post('/register', {'code': '12-34', 'passphrase': 'Homer'}) self.assertRedirects(response, '/') response = self.client.get(response.url) self.assertEqual(response.context['object'].pk, 1) # revisting original url get redirected back to homepage response = self.client.get('/?code=12-34') response = self.client.get(response.url) response = self.client.get(response.url) self.assertEqual(response.context['object'].pk, 1) # providing a new code response = self.client.get('/?code=23-45') self.assertRedirects(response, '/register?code=23-45') response = self.client.get(response.url) self.assertQuerysetEqual(response.context['current'], ['']) #self.assertEqual(response.context['form'].code.initial, 'foo') response = self.client.post('/register', {'code': '23-45', 'passphrase': 'maggie'}) self.assertRedirects(response, '/') response = self.client.get('/') self.assertEqual(response.context['object'].pk, 2) # can use previous link to switch back without passphrase response = self.client.get('/?code=12-34') response = self.client.get(response.url) response = self.client.get(response.url) self.assertEqual(response.context['object'].pk, 1)