test_acl_algebra.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. class SumACLTests(TestCase):
  26. def test_sum_acls(self):
  27. """acls are summed"""
  28. test_acls = [
  29. {
  30. 'can_see': 0,
  31. 'can_hear': 0,
  32. 'max_speed': 10,
  33. 'min_age': 16,
  34. 'speed_limit': 50,
  35. },
  36. {
  37. 'can_see': 1,
  38. 'can_hear': 0,
  39. 'max_speed': 40,
  40. 'min_age': 20,
  41. 'speed_limit': 0,
  42. },
  43. {
  44. 'can_see': 0,
  45. 'can_hear': 1,
  46. 'max_speed': 80,
  47. 'min_age': 18,
  48. 'speed_limit': 40,
  49. },
  50. ]
  51. defaults = {
  52. 'can_see': 0,
  53. 'can_hear': 0,
  54. 'max_speed': 30,
  55. 'min_age': 18,
  56. 'speed_limit': 60,
  57. }
  58. acl = algebra.sum_acls(
  59. defaults, acls=test_acls,
  60. can_see=algebra.greater,
  61. can_hear=algebra.greater,
  62. max_speed=algebra.greater,
  63. min_age=algebra.lower,
  64. speed_limit=algebra.greater_or_zero
  65. )
  66. self.assertEqual(acl['can_see'], 1)
  67. self.assertEqual(acl['can_hear'], 1)
  68. self.assertEqual(acl['max_speed'], 80)
  69. self.assertEqual(acl['min_age'], 16)
  70. self.assertEqual(acl['speed_limit'], 0)