1515from fastapi_user_auth .auth .models import User
1616from tests .conftest import async_db , sync_db
1717
18-
19- @pytest .fixture (params = [async_db , sync_db ])
18+ @pytest .fixture (params = [async_db , sync_db ])
2019async def db (request ) -> Union [Database , AsyncDatabase ]:
2120 database = request .param
22- await database .async_run_sync (SQLModel .metadata .create_all , is_session = False )
21+ await database .async_run_sync (SQLModel .metadata .create_all , is_session = False )
2322 yield database
24- await database .async_run_sync (SQLModel .metadata .drop_all , is_session = False )
25-
23+ await database .async_run_sync (SQLModel .metadata .drop_all , is_session = False )
2624
2725app = FastAPI ()
2826# 创建auth实例
29- auth = Auth (db = async_db )
27+ auth = Auth (db = async_db )
3028# 注册auth基础路由
31- auth_router = AuthRouter (auth = auth )
29+ auth_router = AuthRouter (auth = auth )
3230app .include_router (auth_router .router )
3331
34-
3532class UserClient :
33+
3634 def __init__ (self , client : TestClient = None , user : User = None ) -> None :
3735 self .client : TestClient = client or TestClient (app )
3836 self .user : User = user
3937
40-
4138def get_login_client (username : str = None , password : str = None ) -> UserClient :
4239 client = TestClient (app )
4340 if not username or not password :
4441 return UserClient ()
45- response = client .post ('/auth/gettoken' ,
46- data = {'username' : username , 'password' : password },
47- headers = {"Content-Type" : "application/x-www-form-urlencoded" })
42+ response = client .post (
43+ '/auth/gettoken' ,
44+ data = {'username' : username , 'password' : password },
45+ headers = {"Content-Type" : "application/x-www-form-urlencoded" }
46+ )
4847 data = response .json ()
4948 assert data ['data' ]['access_token' ]
5049 user = User .parse_obj (data ['data' ])
5150 assert user .is_active
5251 assert user .username == username
53- return UserClient (client = client , user = user )
54-
52+ return UserClient (client = client , user = user )
5553
5654@pytest .fixture
5755def logins (request ) -> UserClient :
@@ -64,52 +62,54 @@ def logins(request) -> UserClient:
6462 user = user_data .get (request .param ) or {}
6563 return get_login_client (** user )
6664
67-
68- @pytest .fixture (scope = "session" )
65+ @pytest .fixture (scope = "session" )
6966async def prepare_database () -> AsyncGenerator [None , None ]:
70- await auth .db .async_run_sync (SQLModel .metadata .create_all , is_session = False )
67+ await auth .db .async_run_sync (SQLModel .metadata .create_all , is_session = False )
7168 yield
72- await auth .db .async_run_sync (SQLModel .metadata .drop_all , is_session = False )
73-
69+ await auth .db .async_run_sync (SQLModel .metadata .drop_all , is_session = False )
7470
75- @pytest .fixture (scope = "session" )
71+ @pytest .fixture (scope = "session" )
7672def event_loop ():
7773 loop = asyncio .get_event_loop_policy ().new_event_loop ()
7874 yield loop
7975 loop .close ()
8076
81-
82- @pytest_asyncio .fixture (scope = "session" , autouse = True )
77+ @pytest_asyncio .fixture (scope = "session" , autouse = True )
8378async def fake_users (prepare_database ):
8479 await auth .db .async_run_sync (create_fake_users )
8580
86-
8781# noinspection PyTypeChecker
8882def create_fake_users (session : Session ):
8983 # init permission
90- admin_perm = Permission (key = 'admin' , name = 'admin permission' )
91- vip_perm = Permission (key = 'vip' , name = 'vip permission' )
92- test_perm = Permission (key = 'test' , name = 'test permission' )
84+ admin_perm = Permission (key = 'admin' , name = 'admin permission' )
85+ vip_perm = Permission (key = 'vip' , name = 'vip permission' )
86+ test_perm = Permission (key = 'test' , name = 'test permission' )
9387 session .add_all ([admin_perm , vip_perm , test_perm ])
9488 session .flush ([admin_perm , vip_perm , test_perm ])
9589 # init role
96- admin_role = Role (key = 'admin' , name = 'admin role' , permissions = [admin_perm ])
97- vip_role = Role (key = 'vip' , name = 'vip role' , permissions = [vip_perm ])
98- test_role = Role (key = 'test' , name = 'test role' , permissions = [test_perm ])
90+ admin_role = Role (key = 'admin' , name = 'admin role' , permissions = [admin_perm ])
91+ vip_role = Role (key = 'vip' , name = 'vip role' , permissions = [vip_perm ])
92+ test_role = Role (key = 'test' , name = 'test role' , permissions = [test_perm ])
9993 session .add_all ([admin_role , vip_role , test_role ])
10094 session .flush ([admin_role , vip_role , test_role ])
10195 # init group
102- admin_group = Group (key = 'admin' , name = 'admin group' , roles = [admin_role ])
103- vip_group = Group (key = 'vip' , name = 'vip group' , roles = [vip_role ])
104- test_group = Group (key = 'test' , name = 'test group' , roles = [test_role ])
96+ admin_group = Group (key = 'admin' , name = 'admin group' , roles = [admin_role ])
97+ vip_group = Group (key = 'vip' , name = 'vip group' , roles = [vip_role ])
98+ test_group = Group (key = 'test' , name = 'test group' , roles = [test_role ])
10599 session .add_all ([admin_group , vip_group , test_group ])
106100 session .flush ([admin_group , vip_group , test_group ])
107101 # init user
108- admin_user = User (
username = 'admin' ,
password = auth .
pwd_context .
hash (
'admin' ),
email = '[email protected] ' ,
109- roles = [admin_role ], groups = [admin_group ])
110- vip_user = User (
username = 'vip' ,
password = auth .
pwd_context .
hash (
'vip' ),
email = '[email protected] ' ,
roles = [
vip_role ],
111- groups = [vip_group ])
112- test_user = User (
username = 'test' ,
password = auth .
pwd_context .
hash (
'test' ),
email = '[email protected] ' ,
roles = [
test_role ],
113- groups = [test_group ])
102+ admin_user = User (
103+ username = 'admin' ,
password = auth .
pwd_context .
hash (
'admin' ),
email = '[email protected] ' ,
104+ roles = [admin_role ], groups = [admin_group ]
105+ )
106+ vip_user = User (
107+ username = 'vip' ,
password = auth .
pwd_context .
hash (
'vip' ),
email = '[email protected] ' ,
roles = [
vip_role ],
108+ groups = [vip_group ]
109+ )
110+ test_user = User (
111+ username = 'test' ,
password = auth .
pwd_context .
hash (
'test' ),
email = '[email protected] ' ,
roles = [
test_role ],
112+ groups = [test_group ]
113+ )
114114 session .add_all ([admin_user , vip_user , test_user ])
115115 session .flush ([admin_user , vip_user , test_user ])
0 commit comments