tests.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from django.test.client import Client
  2. from django.test import TestCase
  3. from django.core.handlers.wsgi import WSGIRequest
  4. from django.conf import settings
  5. from models import Error, ErrorBatch
  6. from middleware import DBLogMiddleware
  7. class RequestFactory(Client):
  8. # Used to generate request objects.
  9. def request(self, **request):
  10. environ = {
  11. 'HTTP_COOKIE': self.cookies,
  12. 'PATH_INFO': '/',
  13. 'QUERY_STRING': '',
  14. 'REQUEST_METHOD': 'GET',
  15. 'SCRIPT_NAME': '',
  16. 'SERVER_NAME': 'testserver',
  17. 'SERVER_PORT': 80,
  18. 'SERVER_PROTOCOL': 'HTTP/1.1',
  19. }
  20. environ.update(self.defaults)
  21. environ.update(request)
  22. return WSGIRequest(environ)
  23. RF = RequestFactory()
  24. class DBLogTestCase(TestCase):
  25. def testMiddleware(self):
  26. request = RF.get("/", REMOTE_ADDR="127.0.0.1:8000")
  27. ttl = (Error.objects.count(), ErrorBatch.objects.count())
  28. try:
  29. Error.objects.get(id=999999999)
  30. except Error.DoesNotExist, exc:
  31. DBLogMiddleware().process_exception(request, exc)
  32. else:
  33. self.fail('Unable to create `Error` entry.')
  34. cur = (Error.objects.count()-1, ErrorBatch.objects.count()-1)
  35. self.assertEquals(cur, ttl, 'Counts do not match. Assumed logs failed to save. %s != %s' % (cur, ttl))
  36. def testAPI(self):
  37. ttl = (Error.objects.count(), ErrorBatch.objects.count())
  38. try:
  39. Error.objects.get(id=999999999)
  40. except Error.DoesNotExist, exc:
  41. Error.objects.create_from_exception(exc)
  42. else:
  43. self.fail('Unable to create `Error` entry.')
  44. cur = (Error.objects.count()-1, ErrorBatch.objects.count()-1)
  45. self.assertEquals(cur, ttl, 'Counts do not match. Assumed logs failed to save. %s != %s' % (cur, ttl))
  46. def testAlternateDatabase(self):
  47. settings.DBLOG_DATABASE = dict(
  48. DATABASE_HOST=settings.DATABASE_HOST,
  49. DATABASE_PORT=settings.DATABASE_PORT,
  50. DATABASE_NAME=settings.DATABASE_NAME,
  51. DATABASE_USER=settings.DATABASE_USER,
  52. DATABASE_PASSWORD=settings.DATABASE_PASSWORD,
  53. DATABASE_OPTIONS=settings.DATABASE_OPTIONS,
  54. )
  55. ttl = (Error.objects.count(), ErrorBatch.objects.count())
  56. try:
  57. Error.objects.get(id=999999999)
  58. except Error.DoesNotExist, exc:
  59. Error.objects.create_from_exception(exc)
  60. else:
  61. self.fail('Unable to create `Error` entry.')
  62. cur = (Error.objects.count()-1, ErrorBatch.objects.count()-1)
  63. self.assertEquals(cur, ttl, 'Counts do not match. Assumed logs failed to save. %s != %s' % (cur, ttl))
  64. settings.DBLOG_DATABASE = None