58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """policy engine tests"""
 | |
| from django.core.cache import cache
 | |
| from django.test import TestCase
 | |
| 
 | |
| from passbook.core.models import DebugPolicy, Policy, User
 | |
| from passbook.policies.engine import PolicyEngine
 | |
| 
 | |
| 
 | |
| class PolicyTestEngine(TestCase):
 | |
|     """PolicyEngine tests"""
 | |
| 
 | |
|     def setUp(self):
 | |
|         cache.clear()
 | |
|         self.user = User.objects.create_user(username="policyuser")
 | |
|         self.policy_false = DebugPolicy.objects.create(
 | |
|             result=False, wait_min=0, wait_max=1
 | |
|         )
 | |
|         self.policy_true = DebugPolicy.objects.create(
 | |
|             result=True, wait_min=0, wait_max=1
 | |
|         )
 | |
|         self.policy_negate = DebugPolicy.objects.create(
 | |
|             negate=True, result=True, wait_min=0, wait_max=1
 | |
|         )
 | |
|         self.policy_raises = Policy.objects.create(name="raises")
 | |
| 
 | |
|     def test_engine_empty(self):
 | |
|         """Ensure empty policy list passes"""
 | |
|         engine = PolicyEngine([], self.user)
 | |
|         self.assertEqual(engine.build().passing, True)
 | |
| 
 | |
|     def test_engine(self):
 | |
|         """Ensure all policies passes (Mix of false and true -> false)"""
 | |
|         engine = PolicyEngine(
 | |
|             DebugPolicy.objects.filter(negate__exact=False), self.user
 | |
|         )
 | |
|         self.assertEqual(engine.build().passing, False)
 | |
| 
 | |
|     def test_engine_negate(self):
 | |
|         """Test negate flag"""
 | |
|         engine = PolicyEngine(DebugPolicy.objects.filter(negate__exact=True), self.user)
 | |
|         self.assertEqual(engine.build().passing, False)
 | |
| 
 | |
|     def test_engine_policy_error(self):
 | |
|         """Test negate flag"""
 | |
|         engine = PolicyEngine(Policy.objects.filter(name="raises"), self.user)
 | |
|         self.assertEqual(engine.build().passing, False)
 | |
| 
 | |
|     def test_engine_cache(self):
 | |
|         """Ensure empty policy list passes"""
 | |
|         engine = PolicyEngine(
 | |
|             DebugPolicy.objects.filter(negate__exact=False), self.user
 | |
|         )
 | |
|         self.assertEqual(len(cache.keys("policy_*")), 0)
 | |
|         self.assertEqual(engine.build().passing, False)
 | |
|         self.assertEqual(len(cache.keys("policy_*")), 2)
 | |
|         self.assertEqual(engine.build().passing, False)
 | |
|         self.assertEqual(len(cache.keys("policy_*")), 2)
 | 
