test_default_hashing_algorithm.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import sys
  2. from types import ModuleType
  3. from django.conf import (
  4. DEFAULT_HASHING_ALGORITHM_DEPRECATED_MSG, Settings, settings,
  5. )
  6. from django.core.checks.security import base as security_base
  7. from django.test import TestCase, ignore_warnings
  8. from django.utils.deprecation import RemovedInDjango40Warning
  9. class DefaultHashingAlgorithmDeprecationTests(TestCase):
  10. msg = DEFAULT_HASHING_ALGORITHM_DEPRECATED_MSG
  11. def test_override_settings_warning(self):
  12. with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg):
  13. with self.settings(DEFAULT_HASHING_ALGORITHM='sha1'):
  14. pass
  15. def test_settings_init_warning(self):
  16. settings_module = ModuleType('fake_settings_module')
  17. settings_module.SECRET_KEY = 'foo'
  18. settings_module.DEFAULT_HASHING_ALGORITHM = 'sha1'
  19. sys.modules['fake_settings_module'] = settings_module
  20. try:
  21. with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg):
  22. Settings('fake_settings_module')
  23. finally:
  24. del sys.modules['fake_settings_module']
  25. def test_access(self):
  26. # Warning is not raised on access.
  27. self.assertEqual(settings.DEFAULT_HASHING_ALGORITHM, 'sha256')
  28. @ignore_warnings(category=RemovedInDjango40Warning)
  29. def test_system_check_invalid_value(self):
  30. tests = [
  31. None,
  32. 256,
  33. 'invalid',
  34. 'md5',
  35. 'sha512',
  36. ]
  37. for value in tests:
  38. with self.subTest(value=value), self.settings(DEFAULT_HASHING_ALGORITHM=value):
  39. self.assertEqual(
  40. security_base.check_default_hashing_algorithm(None),
  41. [security_base.E100],
  42. )
  43. @ignore_warnings(category=RemovedInDjango40Warning)
  44. def test_system_check_valid_value(self):
  45. for value in ['sha1', 'sha256']:
  46. with self.subTest(value=value), self.settings(DEFAULT_HASHING_ALGORITHM=value):
  47. self.assertEqual(security_base.check_default_hashing_algorithm(None), [])