test_acl_algebra.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from django.test import TestCase
  2. from misago.acl import algebra
  3. class ComparisionsTests(TestCase):
  4. def test_greater(self):
  5. """greater permission wins test"""
  6. self.assertEqual(algebra.greater(1, 3), 3)
  7. self.assertEqual(algebra.greater(4, 2), 4)
  8. self.assertEqual(algebra.greater(2, 2), 2)
  9. self.assertEqual(algebra.greater(True, False), True)
  10. def test_greater_or_zero(self):
  11. """greater or zero permission wins test"""
  12. self.assertEqual(algebra.greater_or_zero(1, 3), 3)
  13. self.assertEqual(algebra.greater_or_zero(4, 2), 4)
  14. self.assertEqual(algebra.greater_or_zero(2, 2), 2)
  15. self.assertEqual(algebra.greater_or_zero(True, False), False)
  16. self.assertEqual(algebra.greater_or_zero(2, 0), 0)
  17. self.assertEqual(algebra.greater_or_zero(0, 0), 0)
  18. self.assertEqual(algebra.greater_or_zero(0, 120), 0)
  19. def test_lower(self):
  20. """lower permission wins test"""
  21. self.assertEqual(algebra.lower(1, 3), 1)
  22. self.assertEqual(algebra.lower(4, 2), 2)
  23. self.assertEqual(algebra.lower(2, 2), 2)
  24. self.assertEqual(algebra.lower(True, False), False)
  25. def test_lower_non_zero(self):
  26. """lower non-zero wins test"""
  27. self.assertEqual(algebra.lower_non_zero(1, 3), 1)
  28. self.assertEqual(algebra.lower_non_zero(0, 2), 2)
  29. self.assertEqual(algebra.lower_non_zero(1, 2), 1)
  30. self.assertEqual(algebra.lower_non_zero(0, 0), 0)
  31. class SumACLTests(TestCase):
  32. def test_sum_acls(self):
  33. """acls are summed"""
  34. test_acls = [
  35. {
  36. 'can_see': 0,
  37. 'can_hear': 0,
  38. 'max_speed': 10,
  39. 'min_age': 16,
  40. 'speed_limit': 50,
  41. },
  42. {
  43. 'can_see': 1,
  44. 'can_hear': 0,
  45. 'max_speed': 40,
  46. 'min_age': 20,
  47. 'speed_limit': 0,
  48. },
  49. {
  50. 'can_see': 0,
  51. 'can_hear': 1,
  52. 'max_speed': 80,
  53. 'min_age': 18,
  54. 'speed_limit': 40,
  55. },
  56. ]
  57. defaults = {
  58. 'can_see': 0,
  59. 'can_hear': 0,
  60. 'max_speed': 30,
  61. 'min_age': 18,
  62. 'speed_limit': 60,
  63. }
  64. acl = algebra.sum_acls(
  65. defaults, acls=test_acls,
  66. can_see=algebra.greater,
  67. can_hear=algebra.greater,
  68. max_speed=algebra.greater,
  69. min_age=algebra.lower,
  70. speed_limit=algebra.greater_or_zero
  71. )
  72. self.assertEqual(acl['can_see'], 1)
  73. self.assertEqual(acl['can_hear'], 1)
  74. self.assertEqual(acl['max_speed'], 80)
  75. self.assertEqual(acl['min_age'], 16)
  76. self.assertEqual(acl['speed_limit'], 0)