@@ -126,10 +126,40 @@ def check_hierarchical_access(user, resource, action):
126126 " user" : {** user, " role_level" : role_hierarchy.get(user[" role" ], 0 )},
127127 " resource" : resource,
128128 " action" : action,
129- " required_level" : 1 # Minimum level to access system
129+ " required_level" : 0 # Minimum level to access system
130130 }
131131
132132 return evaluate(policy, context)
133+
134+ # Test the hierarchical access control
135+ guest_user = {" role" : " guest" , " id" : " guest1" }
136+ user_account = {" role" : " user" , " id" : " user1" }
137+ manager_account = {" role" : " manager" , " id" : " mgr1" }
138+
139+ public_resource = {" public" : True , " owner" : " admin" , " collaborators" : []}
140+ private_resource = {" public" : False , " owner" : " user1" , " collaborators" : [" guest1" ]}
141+
142+ # Test 1: Guest accessing public resource
143+ result = check_hierarchical_access(guest_user, public_resource, " read" )
144+ assert result == True , " Guest should access public resource"
145+
146+ # Test 2: Guest accessing private resource (denied)
147+ result = check_hierarchical_access(guest_user, private_resource, " write" )
148+ assert result == False , " Guest should not write to private resource"
149+
150+ # Test 3: User accessing owned resource
151+ result = check_hierarchical_access(user_account, private_resource, " write" )
152+ assert result == True , " User should access owned resource"
153+
154+ # Test 4: Manager can delete (role_level >= 3)
155+ result = check_hierarchical_access(manager_account, private_resource, " delete" )
156+ assert result == True , " Manager should delete any resource"
157+
158+ # Test 5: Guest as collaborator can read
159+ result = check_hierarchical_access(guest_user, private_resource, " read" )
160+ assert result == True , " Guest collaborator should read resource"
161+
162+ print (" ✓ Hierarchical access control working correctly" )
133163```
134164
135165### Time-Based Access
@@ -162,6 +192,33 @@ def check_time_based_access(user, resource, action, current_time=None):
162192 }
163193
164194 return evaluate(policy, context)
195+
196+ # Test time-based access control
197+ standard_user = {" role" : " user" , " schedule" : " standard" }
198+ flexible_user = {" role" : " user" , " schedule" : " flexible" }
199+ admin_user = {" role" : " admin" , " schedule" : " standard" }
200+ test_resource = {" id" : " test_doc" }
201+
202+ # Test 1: Standard user during business hours
203+ business_time = datetime.now().replace(hour = 14 ) # 2 PM
204+ result = check_time_based_access(standard_user, test_resource, " read" , business_time)
205+ assert result == True , " Standard user should access during business hours"
206+
207+ # Test 2: Standard user after hours (denied)
208+ after_hours = datetime.now().replace(hour = 22 ) # 10 PM
209+ result = check_time_based_access(standard_user, test_resource, " read" , after_hours)
210+ assert result == False , " Standard user should be denied after hours"
211+
212+ # Test 3: Flexible user during extended hours
213+ result = check_time_based_access(flexible_user, test_resource, " read" , after_hours)
214+ assert result == True , " Flexible user should access during extended hours"
215+
216+ # Test 4: Admin always has access
217+ early_morning = datetime.now().replace(hour = 5 ) # 5 AM
218+ result = check_time_based_access(admin_user, test_resource, " read" , early_morning)
219+ assert result == True , " Admin should always have access"
220+
221+ print (" ✓ Time-based access control working correctly" )
165222```
166223
167224### Resource-Specific Policies
@@ -200,6 +257,42 @@ def check_resource_specific_access(user, resource, action):
200257 }
201258
202259 return evaluate(policy, context)
260+
261+ # Test resource-specific access control
262+ developer = {" role" : " developer" , " id" : " dev1" }
263+ analyst = {" role" : " analyst" , " id" : " analyst1" }
264+ operator = {" role" : " operator" , " id" : " ops1" }
265+
266+ document_resource = {" type" : " document" , " owner" : " dev1" , " public" : False , " collaborators" : [" analyst1" ]}
267+ database_resource = {" type" : " database" , " name" : " prod_db" }
268+ system_resource = {" type" : " system" , " name" : " web_server" }
269+
270+ # Test 1: Developer with database (can read/write)
271+ result = check_resource_specific_access(developer, database_resource, " write" )
272+ assert result == True , " Developer should write to database"
273+
274+ result = check_resource_specific_access(developer, database_resource, " read" )
275+ assert result == True , " Developer should read database"
276+
277+ # Test 2: Analyst with database (read-only)
278+ result = check_resource_specific_access(analyst, database_resource, " read" )
279+ assert result == True , " Analyst should read database"
280+
281+ result = check_resource_specific_access(analyst, database_resource, " write" )
282+ assert result == False , " Analyst should not write to database"
283+
284+ # Test 3: Operator with system (can read/restart)
285+ result = check_resource_specific_access(operator, system_resource, " restart" )
286+ assert result == True , " Operator should restart system"
287+
288+ # Test 4: Analyst as document collaborator
289+ result = check_resource_specific_access(analyst, document_resource, " read" )
290+ assert result == True , " Analyst collaborator should read document"
291+
292+ result = check_resource_specific_access(analyst, document_resource, " write" )
293+ assert result == False , " Analyst collaborator should not write document"
294+
295+ print (" ✓ Resource-specific access control working correctly" )
203296```
204297
205298## Kubernetes Validation Rules
0 commit comments