37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """authentik event models tests"""
 | |
| 
 | |
| from collections.abc import Callable
 | |
| 
 | |
| from django.db.models import Model
 | |
| from django.test import TestCase
 | |
| 
 | |
| from authentik.core.models import default_token_key
 | |
| from authentik.events.models import default_event_duration
 | |
| from authentik.lib.utils.reflection import get_apps
 | |
| 
 | |
| 
 | |
| class TestModels(TestCase):
 | |
|     """Test Models"""
 | |
| 
 | |
| 
 | |
| def model_tester_factory(test_model: type[Model]) -> Callable:
 | |
|     """Test models' __str__ and __repr__"""
 | |
| 
 | |
|     def tester(self: TestModels):
 | |
|         allowed = 0
 | |
|         # Token-like objects need to lookup the current tenant to get the default token length
 | |
|         for field in test_model._meta.fields:
 | |
|             if field.default in [default_token_key, default_event_duration]:
 | |
|                 allowed += 1
 | |
|         with self.assertNumQueries(allowed):
 | |
|             str(test_model())
 | |
|         with self.assertNumQueries(allowed):
 | |
|             repr(test_model())
 | |
| 
 | |
|     return tester
 | |
| 
 | |
| 
 | |
| for app in get_apps():
 | |
|     for model in app.get_models():
 | |
|         setattr(TestModels, f"test_{app.label}_{model.__name__}", model_tester_factory(model))
 | 
