12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- from unittest import mock
- from django.conf import settings
- from sentry.testutils import TestCase
- from sentry.utils.settings import ConfigurationError, import_string, validate_settings
- DEPENDENCY_TEST_DATA = {
- "postgresql": (
- "DATABASES",
- "psycopg2.extensions",
- "database engine",
- "django.db.backends.postgresql_psycopg2",
- {
- "default": {
- "ENGINE": "django.db.backends.postgresql_psycopg2",
- "NAME": "test",
- "USER": "root",
- "PASSWORD": "",
- "HOST": "127.0.0.1",
- "PORT": "",
- }
- },
- ),
- "memcache": (
- "CACHES",
- "memcache",
- "caching backend",
- "django.core.cache.backends.memcached.MemcachedCache",
- {
- "default": {
- "BACKEND": "django.core.cache.backends.memcached.MemcachedCache",
- "LOCATION": "127.0.0.1:11211",
- }
- },
- ),
- "pylibmc": (
- "CACHES",
- "pylibmc",
- "caching backend",
- "django.core.cache.backends.memcached.PyLibMCCache",
- {
- "default": {
- "BACKEND": "django.core.cache.backends.memcached.PyLibMCCache",
- "LOCATION": "127.0.0.1:11211",
- }
- },
- ),
- }
- class DependencyTest(TestCase):
- def raise_import_error(self, package):
- def callable(package_name):
- if package_name != package:
- return import_string(package_name)
- raise ImportError(f"No module named {package}")
- return callable
- @mock.patch("django.conf.settings", mock.Mock())
- @mock.patch("sentry.utils.settings.import_string")
- def validate_dependency(
- self, key, package, dependency_type, dependency, setting_value, import_string
- ):
- import_string.side_effect = self.raise_import_error(package)
- with self.settings(**{key: setting_value}):
- with self.assertRaises(ConfigurationError):
- validate_settings(settings)
- def test_validate_fails_on_postgres(self):
- self.validate_dependency(*DEPENDENCY_TEST_DATA["postgresql"])
- def test_validate_fails_on_memcache(self):
- self.validate_dependency(*DEPENDENCY_TEST_DATA["memcache"])
- def test_validate_fails_on_pylibmc(self):
- self.validate_dependency(*DEPENDENCY_TEST_DATA["pylibmc"])
|