33import pytest
44
55from crudadmin import CRUDAdmin
6+ from crudadmin .session import backends as session_backends
67from tests .crud .test_admin import create_test_db_config
78
89
@@ -25,17 +26,23 @@ async def test_redis_url_configuration(self, async_session):
2526 try :
2627 # Test basic URL
2728 admin .use_redis_sessions (redis_url = "redis://localhost:6379/0" )
28- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
29+ assert isinstance (
30+ admin .session_manager .storage , session_backends .RedisSessionStorage
31+ )
2932
3033 # Test URL with password
3134 admin .use_redis_sessions (redis_url = "redis://user:pass@localhost:6379/1" )
32- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
35+ assert isinstance (
36+ admin .session_manager .storage , session_backends .RedisSessionStorage
37+ )
3338
3439 # Test complex URL
3540 admin .use_redis_sessions (
3641 redis_url = "redis://admin:[email protected] :6380/2" 3742 )
38- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
43+ assert isinstance (
44+ admin .session_manager .storage , session_backends .RedisSessionStorage
45+ )
3946
4047 except ImportError :
4148 pytest .skip ("Redis not available" )
@@ -56,23 +63,33 @@ async def test_redis_individual_parameters(self, async_session):
5663 try :
5764 # Test basic parameters
5865 admin .use_redis_sessions (host = "localhost" , port = 6379 , db = 0 )
59- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
66+ assert isinstance (
67+ admin .session_manager .storage , session_backends .RedisSessionStorage
68+ )
6069
6170 # Test with password
6271 admin .use_redis_sessions (
6372 host = "localhost" , port = 6379 , db = 1 , password = "secret"
6473 )
65- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
74+ assert isinstance (
75+ admin .session_manager .storage , session_backends .RedisSessionStorage
76+ )
6677
6778 # Test partial parameters (others should use defaults)
6879 admin .use_redis_sessions (host = "custom-host" )
69- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
80+ assert isinstance (
81+ admin .session_manager .storage , session_backends .RedisSessionStorage
82+ )
7083
7184 admin .use_redis_sessions (port = 6380 )
72- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
85+ assert isinstance (
86+ admin .session_manager .storage , session_backends .RedisSessionStorage
87+ )
7388
7489 admin .use_redis_sessions (db = 3 )
75- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
90+ assert isinstance (
91+ admin .session_manager .storage , session_backends .RedisSessionStorage
92+ )
7693
7794 except ImportError :
7895 pytest .skip ("Redis not available" )
@@ -92,7 +109,9 @@ async def test_redis_defaults(self, async_session):
92109
93110 try :
94111 admin .use_redis_sessions ()
95- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
112+ assert isinstance (
113+ admin .session_manager .storage , session_backends .RedisSessionStorage
114+ )
96115 except ImportError :
97116 pytest .skip ("Redis not available" )
98117
@@ -172,13 +191,18 @@ async def test_redis_additional_parameters(self, async_session):
172191 admin .use_redis_sessions (
173192 redis_url = "redis://localhost:6379/0" , pool_size = 20 , connect_timeout = 10
174193 )
175- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
194+
195+ assert isinstance (
196+ admin .session_manager .storage , session_backends .RedisSessionStorage
197+ )
176198
177199 # Test with additional parameters via individual params
178200 admin .use_redis_sessions (
179201 host = "localhost" , port = 6379 , db = 0 , pool_size = 15 , connect_timeout = 5
180202 )
181- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
203+ assert isinstance (
204+ admin .session_manager .storage , session_backends .RedisSessionStorage
205+ )
182206
183207 except ImportError :
184208 pytest .skip ("Redis not available" )
@@ -384,15 +408,21 @@ async def test_memcached_servers_configuration(self, async_session):
384408 try :
385409 # Test single server
386410 admin .use_memcached_sessions (servers = ["localhost:11211" ])
387- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
411+ assert isinstance (
412+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
413+ )
388414
389415 # Test multiple servers
390416 admin .use_memcached_sessions (servers = ["localhost:11211" , "server2:11211" ])
391- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
417+ assert isinstance (
418+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
419+ )
392420
393421 # Test custom ports
394422 admin .use_memcached_sessions (servers = ["localhost:11212" , "server2:11213" ])
395- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
423+ assert isinstance (
424+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
425+ )
396426
397427 except ImportError :
398428 pytest .skip ("Memcached not available" )
@@ -413,22 +443,32 @@ async def test_memcached_individual_parameters(self, async_session):
413443 try :
414444 # Test basic parameters
415445 admin .use_memcached_sessions (host = "localhost" , port = 11211 )
416- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
446+ assert isinstance (
447+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
448+ )
417449
418450 # Test custom host
419451 admin .use_memcached_sessions (host = "memcached.example.com" , port = 11211 )
420- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
452+ assert isinstance (
453+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
454+ )
421455
422456 # Test custom port
423457 admin .use_memcached_sessions (host = "localhost" , port = 11212 )
424- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
458+ assert isinstance (
459+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
460+ )
425461
426462 # Test partial parameters
427463 admin .use_memcached_sessions (host = "custom-host" )
428- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
464+ assert isinstance (
465+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
466+ )
429467
430468 admin .use_memcached_sessions (port = 11213 )
431- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
469+ assert isinstance (
470+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
471+ )
432472
433473 except ImportError :
434474 pytest .skip ("Memcached not available" )
@@ -448,7 +488,9 @@ async def test_memcached_defaults(self, async_session):
448488
449489 try :
450490 admin .use_memcached_sessions ()
451- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
491+ assert isinstance (
492+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
493+ )
452494 except ImportError :
453495 pytest .skip ("Memcached not available" )
454496
@@ -510,11 +552,15 @@ async def test_memcached_additional_parameters(self, async_session):
510552 try :
511553 # Test with additional parameters via servers
512554 admin .use_memcached_sessions (servers = ["localhost:11211" ], pool_size = 20 )
513- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
555+ assert isinstance (
556+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
557+ )
514558
515559 # Test with additional parameters via individual params
516560 admin .use_memcached_sessions (host = "localhost" , port = 11211 , pool_size = 15 )
517- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
561+ assert isinstance (
562+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
563+ )
518564
519565 except ImportError :
520566 pytest .skip ("Memcached not available" )
@@ -602,20 +648,27 @@ async def test_track_sessions_in_db_flag_management(self, async_session):
602648 # Switch to database sessions
603649 admin .use_database_sessions ()
604650 assert admin .track_sessions_in_db is True
605- assert "DatabaseSessionStorage" in str (type (admin .session_manager .storage ))
651+ assert isinstance (
652+ admin .session_manager .storage , session_backends .DatabaseSessionStorage
653+ )
606654
607655 # Switch to memory sessions (should reset flag)
608656 admin .use_memory_sessions ()
609657 assert admin .track_sessions_in_db is False
610- assert "MemorySessionStorage" in str (type (admin .session_manager .storage ))
658+ assert isinstance (
659+ admin .session_manager .storage , session_backends .MemorySessionStorage
660+ )
611661
612662 # Switch to Redis with explicit tracking
613663 try :
614664 admin .use_redis_sessions (host = "localhost" , track_sessions_in_db = True )
615665 assert admin .track_sessions_in_db is True
616666 # Should be HybridSessionStorage when Redis + DB tracking
617- storage_name = type (admin .session_manager .storage ).__name__
618- assert storage_name in ["HybridSessionStorage" , "RedisSessionStorage" ]
667+ storage_name = type (admin .session_manager .storage )
668+ assert storage_name in [
669+ session_backends .HybridSessionStorage ,
670+ session_backends .RedisSessionStorage ,
671+ ]
619672 except ImportError :
620673 pytest .skip ("Redis not available" )
621674
@@ -639,7 +692,9 @@ async def test_redis_positional_argument(self, async_session):
639692 try :
640693 # Old way should still work
641694 admin .use_redis_sessions ("redis://localhost:6379/0" )
642- assert "RedisSessionStorage" in str (type (admin .session_manager .storage ))
695+ assert isinstance (
696+ admin .session_manager .storage , session_backends .RedisSessionStorage
697+ )
643698 except ImportError :
644699 pytest .skip ("Redis not available" )
645700
@@ -659,7 +714,9 @@ async def test_memcached_positional_argument(self, async_session):
659714 try :
660715 # Old way should still work
661716 admin .use_memcached_sessions (["localhost:11211" ])
662- assert "MemcachedSessionStorage" in str (type (admin .session_manager .storage ))
717+ assert isinstance (
718+ admin .session_manager .storage , session_backends .MemcachedSessionStorage
719+ )
663720 except ImportError :
664721 pytest .skip ("Memcached not available" )
665722
0 commit comments