You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

__init__.py 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import httplib
  2. from django.test import TestCase
  3. from django.test.client import Client
  4. from django.contrib.auth.models import User
  5. from django.core.urlresolvers import reverse
  6. from django_webtest import WebTest
  7. from purl import URL
  8. class ClientTestCase(TestCase):
  9. username = 'dummyuser'
  10. email = 'dummyuser@example.com'
  11. password = 'staffpassword'
  12. is_anonymous = False
  13. is_staff = False
  14. is_superuser = False
  15. def setUp(self):
  16. self.client = Client()
  17. if not self.is_anonymous:
  18. self.login()
  19. def login(self):
  20. self.user = self.create_user()
  21. self.client.login(username=self.username,
  22. password=self.password)
  23. def create_user(self):
  24. user = User.objects.create_user(self.username,
  25. self.email,
  26. self.password)
  27. user.is_staff = self.is_staff
  28. user.is_superuser = self.is_superuser
  29. user.save()
  30. return user
  31. def assertIsRedirect(self, response, expected_url=None):
  32. self.assertTrue(response.status_code in (httplib.FOUND,
  33. httplib.MOVED_PERMANENTLY))
  34. if expected_url:
  35. location = URL.from_string(response['Location'])
  36. self.assertEqual(expected_url, location.path())
  37. def assertRedirectUrlName(self, response, name, kwargs=None):
  38. self.assertIsRedirect(response)
  39. location = response['Location'].replace('http://testserver', '')
  40. self.assertEqual(location, reverse(name, kwargs=kwargs))
  41. def assertIsOk(self, response):
  42. self.assertEqual(httplib.OK, response.status_code)
  43. def assertInContext(self, response, key):
  44. self.assertTrue(key in response.context,
  45. "Context should contain a variable '%s'" % key)
  46. class WebTestCase(WebTest):
  47. is_staff = False
  48. is_anonymous = True
  49. username = 'testuser'
  50. email = 'testuser@buymore.com'
  51. password = 'somefancypassword'
  52. def setUp(self):
  53. self.user = None
  54. if not self.is_anonymous or self.is_staff:
  55. self.user = User.objects.create_user(self.username, self.email,
  56. self.password)
  57. self.user.is_staff = self.is_staff
  58. self.user.save()
  59. def get(self, url, **kwargs):
  60. kwargs.setdefault('user', self.user)
  61. return self.app.get(url, **kwargs)
  62. def post(self, url, **kwargs):
  63. kwargs.setdefault('user', self.user)
  64. return self.app.post(url, **kwargs)
  65. def assertRedirectsTo(self, response, url_name):
  66. self.assertTrue(str(response.status_code).startswith('3'))
  67. location = response.headers['Location']
  68. redirect_path = location.replace('http://localhost:80', '')
  69. self.assertEqual(reverse(url_name), redirect_path)