import json from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import TestCase class ValidationAPITests(TestCase): ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'} def test_validate_username(self): """test API for validating username""" response = self.client.get(reverse('misago:api_validate_username')) self.assertEqual(response.status_code, 405) response = self.client.post(reverse('misago:api_validate_username'), data={'username': 'Bob'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 0) self.assertIn('username', data['message']) User = get_user_model() user = User.objects.create_user("Bob", "bob@bob.com", "pass123") response = self.client.post(reverse('misago:api_validate_username'), data={'username': 'Bob'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 1) self.assertIn('not available', data['message']) test_url = reverse('misago:api_validate_username', kwargs={'user_id': user.pk}) response = self.client.post( test_url, data={'username': 'Bob'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 0) self.assertIn('username', data['message']) def test_validate_email(self): """test API for validating email""" response = self.client.get(reverse('misago:api_validate_email')) self.assertEqual(response.status_code, 405) response = self.client.post(reverse('misago:api_validate_email'), data={'email': 'bob@bob.com'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 0) self.assertIn('e-mail', data['message']) User = get_user_model() user = User.objects.create_user("Bob", "bob@bob.com", "pass123") response = self.client.post(reverse('misago:api_validate_email'), data={'email': 'bob@bob.com'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 1) self.assertIn('not available', data['message']) test_url = reverse('misago:api_validate_email', kwargs={'user_id': user.pk}) response = self.client.post( test_url, data={'email': 'bob@bob.com'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 0) self.assertIn('e-mail', data['message']) def test_validate_password(self): """test API for validating password""" response = self.client.get(reverse('misago:api_validate_password')) self.assertEqual(response.status_code, 405) response = self.client.post(reverse('misago:api_validate_password'), data={'password': 'pass123'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 0) self.assertIn('password', data['message']) response = self.client.post(reverse('misago:api_validate_password'), data={'password': 'p'}, **self.ajax_header) self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['has_error'], 1) self.assertIn('characters long', data['message'])