77
88import time
99from unittest .mock import patch
10+ from uuid import uuid4
1011
1112import casbin
1213from ddt import data as ddt_data
@@ -839,19 +840,22 @@ def test_load_policy_if_needed_initializes_cache_timestamp(self, mock_toggle):
839840 """Test that load_policy_if_needed initializes cache timestamp on first call.
840841
841842 Expected result:
842- - On first call, cache invalidation key is set with current timestamp
843- - Policy is loaded since last load timestamp is None
843+ - On first call, cache invalidation model is initialized
844+ - Policy is loaded since last load version is None
844845 """
845846 mock_toggle .return_value = True
846847
847- AuthzEnforcer ._last_policy_load_timestamp = None # pylint: disable=protected-access
848-
848+ AuthzEnforcer ._last_policy_loaded_version = None # pylint: disable=protected-access
849849 # get_enforcer calls load_policy_if_needed internally
850850 AuthzEnforcer .get_enforcer ()
851851
852- cached_timestamp = PolicyCacheControl .get_last_modified_timestamp ()
853- self .assertIsNotNone (cached_timestamp )
854- self .assertIsNotNone (AuthzEnforcer ._last_policy_load_timestamp ) # pylint: disable=protected-access
852+ cached_version = PolicyCacheControl .get_version ()
853+ self .assertIsNotNone (cached_version )
854+ self .assertIsNotNone (AuthzEnforcer ._last_policy_loaded_version ) # pylint: disable=protected-access
855+ self .assertEqual (
856+ AuthzEnforcer ._last_policy_loaded_version , # pylint: disable=protected-access
857+ cached_version ,
858+ )
855859
856860 @patch ("openedx_authz.engine.enforcer.libraries_v2_enabled" )
857861 @override_settings (CASBIN_AUTO_LOAD_POLICY_INTERVAL = 0 )
@@ -860,25 +864,25 @@ def test_load_policy_if_needed_loads_when_stale(self, mock_toggle):
860864
861865 Expected result:
862866 - If policy is stale, it is reloaded
863- - _last_policy_load_timestamp is updated with new timestamp
867+ - _last_policy_loaded_version is updated with new version
864868 """
865869 mock_toggle .return_value = True
866870
867- now = time . time ()
868- stale_timestamp = now - 60 # 60 seconds ago
871+ stale_version = uuid4 ()
872+ current_version = uuid4 ()
869873
870- # Set last load timestamp to stale value
871- AuthzEnforcer ._last_policy_load_timestamp = stale_timestamp # pylint: disable=protected-access
872- # Set last cache invalidation to a more recent time
873- PolicyCacheControl .set_last_modified_timestamp ( now )
874+ # Set last loaded version to stale value
875+ AuthzEnforcer ._last_policy_loaded_version = stale_version # pylint: disable=protected-access
876+ # Set last cache invalidation current version
877+ PolicyCacheControl .set_version ( current_version )
874878
875879 # get_enforcer calls load_policy_if_needed internally
876880 AuthzEnforcer .get_enforcer ()
877881
878- self .assertIsNotNone (AuthzEnforcer ._last_policy_load_timestamp ) # pylint: disable=protected-access
879- self .assertGreater (
880- AuthzEnforcer ._last_policy_load_timestamp , # pylint: disable=protected-access
881- stale_timestamp ,
882+ self .assertIsNotNone (AuthzEnforcer ._last_policy_loaded_version ) # pylint: disable=protected-access
883+ self .assertEqual (
884+ AuthzEnforcer ._last_policy_loaded_version , # pylint: disable=protected-access
885+ current_version ,
882886 )
883887
884888 @patch ("openedx_authz.engine.enforcer.libraries_v2_enabled" )
@@ -888,41 +892,41 @@ def test_load_policy_if_needed_doesnt_reload_when_not_stale(self, mock_toggle):
888892
889893 Expected result:
890894 - If policy is not stale, it is not reloaded
891- - _last_policy_load_timestamp remains unchanged
895+ - _last_policy_loaded_version remains unchanged
892896 """
893897 mock_toggle .return_value = True
894898
895- now = time . time ()
899+ current_version = uuid4 ()
896900
897- # Set last load timestamp to current time
898- AuthzEnforcer ._last_policy_load_timestamp = now # pylint: disable=protected-access
899- # Set last cache invalidation to an earlier time
900- PolicyCacheControl .set_last_modified_timestamp ( now - 60 ) # 60 seconds ago
901+ # Set last loaded version to current version
902+ AuthzEnforcer ._last_policy_loaded_version = current_version # pylint: disable=protected-access
903+ # Set last cache invalidation to same version
904+ PolicyCacheControl .set_version ( current_version )
901905
902906 # get_enforcer calls load_policy_if_needed internally
903907 AuthzEnforcer .get_enforcer ()
904908
905909 self .assertEqual (
906- AuthzEnforcer ._last_policy_load_timestamp , # pylint: disable=protected-access
907- now ,
910+ AuthzEnforcer ._last_policy_loaded_version , # pylint: disable=protected-access
911+ current_version ,
908912 )
909913
910914 @patch ("openedx_authz.engine.enforcer.libraries_v2_enabled" )
911915 @override_settings (CASBIN_AUTO_LOAD_POLICY_INTERVAL = 0 )
912916 def test_invalidate_policy_cache (self , mock_toggle ):
913- """Test that invalidate_policy_cache updates the cache invalidation key .
917+ """Test that invalidate_policy_cache updates the cache invalidation model .
914918
915919 Expected result:
916- - Cache invalidation key is updated with current timestamp
920+ - Cache invalidation key is updated to a new version
917921 """
918922 mock_toggle .return_value = True
919923
920- AuthzEnforcer ._last_policy_load_timestamp = time . time () # pylint: disable=protected-access
921- old_cache_value = time . time () - 60 # 60 seconds ago
922- PolicyCacheControl .set_last_modified_timestamp (old_cache_value )
924+ AuthzEnforcer ._last_policy_loaded_version = uuid4 () # pylint: disable=protected-access
925+ old_cache_value = uuid4 ()
926+ PolicyCacheControl .set_version (old_cache_value )
923927
924928 AuthzEnforcer .invalidate_policy_cache ()
925929
926- new_cache_value = PolicyCacheControl .get_last_modified_timestamp ()
930+ new_cache_value = PolicyCacheControl .get_version ()
927931 self .assertIsNotNone (new_cache_value )
928- self .assertGreater (new_cache_value , old_cache_value )
932+ self .assertNotEqual (new_cache_value , old_cache_value )
0 commit comments