tests.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, print_function
  3. from sentry.utils.compat import mock
  4. from django.conf import settings
  5. from sentry.testutils import TestCase
  6. from sentry.utils.settings import validate_settings, ConfigurationError, import_string
  7. DEPENDENCY_TEST_DATA = {
  8. "postgresql": (
  9. "DATABASES",
  10. "psycopg2.extensions",
  11. "database engine",
  12. "django.db.backends.postgresql_psycopg2",
  13. {
  14. "default": {
  15. "ENGINE": "django.db.backends.postgresql_psycopg2",
  16. "NAME": "test",
  17. "USER": "root",
  18. "PASSWORD": "",
  19. "HOST": "127.0.0.1",
  20. "PORT": "",
  21. }
  22. },
  23. ),
  24. "memcache": (
  25. "CACHES",
  26. "memcache",
  27. "caching backend",
  28. "django.core.cache.backends.memcached.MemcachedCache",
  29. {
  30. "default": {
  31. "BACKEND": "django.core.cache.backends.memcached.MemcachedCache",
  32. "LOCATION": "127.0.0.1:11211",
  33. }
  34. },
  35. ),
  36. "pylibmc": (
  37. "CACHES",
  38. "pylibmc",
  39. "caching backend",
  40. "django.core.cache.backends.memcached.PyLibMCCache",
  41. {
  42. "default": {
  43. "BACKEND": "django.core.cache.backends.memcached.PyLibMCCache",
  44. "LOCATION": "127.0.0.1:11211",
  45. }
  46. },
  47. ),
  48. }
  49. class DependencyTest(TestCase):
  50. def raise_import_error(self, package):
  51. def callable(package_name):
  52. if package_name != package:
  53. return import_string(package_name)
  54. raise ImportError("No module named %s" % (package,))
  55. return callable
  56. @mock.patch("django.conf.settings", mock.Mock())
  57. @mock.patch("sentry.utils.settings.import_string")
  58. def validate_dependency(
  59. self, key, package, dependency_type, dependency, setting_value, import_string
  60. ):
  61. import_string.side_effect = self.raise_import_error(package)
  62. with self.settings(**{key: setting_value}):
  63. with self.assertRaises(ConfigurationError):
  64. validate_settings(settings)
  65. def test_validate_fails_on_postgres(self):
  66. self.validate_dependency(*DEPENDENCY_TEST_DATA["postgresql"])
  67. def test_validate_fails_on_memcache(self):
  68. self.validate_dependency(*DEPENDENCY_TEST_DATA["memcache"])
  69. def test_validate_fails_on_pylibmc(self):
  70. self.validate_dependency(*DEPENDENCY_TEST_DATA["pylibmc"])