test_acl_algebra.py 2.6 KB

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