test_api_views.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import json
  2. from django.contrib.auth import get_user_model
  3. from django.core.urlresolvers import reverse
  4. from django.test import TestCase
  5. class ValidationAPITests(TestCase):
  6. ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
  7. def test_validate_username(self):
  8. """test API for validating username"""
  9. response = self.client.get(reverse('misago:api_validate_username'))
  10. self.assertEqual(response.status_code, 405)
  11. response = self.client.post(reverse('misago:api_validate_username'),
  12. data={'username': 'Bob'},
  13. **self.ajax_header)
  14. self.assertEqual(response.status_code, 200)
  15. data = json.loads(response.content)
  16. self.assertEqual(data['has_error'], 0)
  17. self.assertIn('username', data['message'])
  18. User = get_user_model()
  19. user = User.objects.create_user("Bob", "bob@bob.com", "pass123")
  20. response = self.client.post(reverse('misago:api_validate_username'),
  21. data={'username': 'Bob'},
  22. **self.ajax_header)
  23. self.assertEqual(response.status_code, 200)
  24. data = json.loads(response.content)
  25. self.assertEqual(data['has_error'], 1)
  26. self.assertIn('not available', data['message'])
  27. test_url = reverse('misago:api_validate_username',
  28. kwargs={'user_id': user.pk})
  29. response = self.client.post(
  30. test_url, data={'username': 'Bob'}, **self.ajax_header)
  31. self.assertEqual(response.status_code, 200)
  32. data = json.loads(response.content)
  33. self.assertEqual(data['has_error'], 0)
  34. self.assertIn('username', data['message'])
  35. def test_validate_email(self):
  36. """test API for validating email"""
  37. response = self.client.get(reverse('misago:api_validate_email'))
  38. self.assertEqual(response.status_code, 405)
  39. response = self.client.post(reverse('misago:api_validate_email'),
  40. data={'email': 'bob@bob.com'},
  41. **self.ajax_header)
  42. self.assertEqual(response.status_code, 200)
  43. data = json.loads(response.content)
  44. self.assertEqual(data['has_error'], 0)
  45. self.assertIn('e-mail', data['message'])
  46. User = get_user_model()
  47. user = User.objects.create_user("Bob", "bob@bob.com", "pass123")
  48. response = self.client.post(reverse('misago:api_validate_email'),
  49. data={'email': 'bob@bob.com'},
  50. **self.ajax_header)
  51. self.assertEqual(response.status_code, 200)
  52. data = json.loads(response.content)
  53. self.assertEqual(data['has_error'], 1)
  54. self.assertIn('not available', data['message'])
  55. test_url = reverse('misago:api_validate_email',
  56. kwargs={'user_id': user.pk})
  57. response = self.client.post(
  58. test_url, data={'email': 'bob@bob.com'}, **self.ajax_header)
  59. self.assertEqual(response.status_code, 200)
  60. data = json.loads(response.content)
  61. self.assertEqual(data['has_error'], 0)
  62. self.assertIn('e-mail', data['message'])
  63. def test_validate_password(self):
  64. """test API for validating password"""
  65. response = self.client.get(reverse('misago:api_validate_password'))
  66. self.assertEqual(response.status_code, 405)
  67. response = self.client.post(reverse('misago:api_validate_password'),
  68. data={'password': 'pass123'},
  69. **self.ajax_header)
  70. self.assertEqual(response.status_code, 200)
  71. data = json.loads(response.content)
  72. self.assertEqual(data['has_error'], 0)
  73. self.assertIn('password', data['message'])
  74. response = self.client.post(reverse('misago:api_validate_password'),
  75. data={'password': 'p'},
  76. **self.ajax_header)
  77. self.assertEqual(response.status_code, 200)
  78. data = json.loads(response.content)
  79. self.assertEqual(data['has_error'], 1)
  80. self.assertIn('characters long', data['message'])