@@ -22,19 +22,71 @@ async def test_returns_40x_if_not_authenticated(self, test_db, client: AsyncClie
2222
2323 @pytest .mark .asyncio
2424 @pytest .mark .parametrize ("test_db" , ["sqlite" , "postgres" ], indirect = True )
25- async def test_returns_users (self , test_db , session : AsyncSession , client : AsyncClient ):
26- user = await create_user (
25+ async def test_admins_see_all_users (self , test_db , session : AsyncSession , client : AsyncClient ):
26+ admin = await create_user (
27+ session = session ,
28+ name = "admin" ,
29+ created_at = datetime (2023 , 1 , 2 , 3 , 4 , tzinfo = timezone .utc ),
30+ global_role = GlobalRole .ADMIN ,
31+ )
32+ other_user = await create_user (
33+ session = session ,
34+ name = "other_user" ,
35+ created_at = datetime (2023 , 1 , 2 , 3 , 4 , tzinfo = timezone .utc ),
36+ global_role = GlobalRole .USER ,
37+ )
38+ response = await client .post ("/api/users/list" , headers = get_auth_headers (admin .token ))
39+ assert response .status_code in [200 ]
40+ assert response .json () == [
41+ {
42+ "id" : str (admin .id ),
43+ "username" : admin .name ,
44+ "created_at" : "2023-01-02T03:04:00+00:00" ,
45+ "global_role" : admin .global_role ,
46+ "email" : None ,
47+ "active" : True ,
48+ "permissions" : {
49+ "can_create_projects" : True ,
50+ },
51+ },
52+ {
53+ "id" : str (other_user .id ),
54+ "username" : other_user .name ,
55+ "created_at" : "2023-01-02T03:04:00+00:00" ,
56+ "global_role" : other_user .global_role ,
57+ "email" : None ,
58+ "active" : True ,
59+ "permissions" : {
60+ "can_create_projects" : True ,
61+ },
62+ },
63+ ]
64+
65+ @pytest .mark .asyncio
66+ @pytest .mark .parametrize ("test_db" , ["sqlite" , "postgres" ], indirect = True )
67+ async def test_non_admins_see_only_themselves (
68+ self , test_db , session : AsyncSession , client : AsyncClient
69+ ):
70+ await create_user (
71+ session = session ,
72+ name = "admin" ,
73+ created_at = datetime (2023 , 1 , 2 , 3 , 4 , tzinfo = timezone .utc ),
74+ global_role = GlobalRole .ADMIN ,
75+ )
76+ other_user = await create_user (
2777 session = session ,
78+ name = "other_user" ,
2879 created_at = datetime (2023 , 1 , 2 , 3 , 4 , tzinfo = timezone .utc ),
80+ global_role = GlobalRole .USER ,
2981 )
30- response = await client .post ("/api/users/list" , headers = get_auth_headers (user .token ))
82+ response = await client .post ("/api/users/list" , headers = get_auth_headers (other_user .token ))
3183 assert response .status_code in [200 ]
3284 assert response .json () == [
3385 {
34- "id" : str (user .id ),
35- "username" : user .name ,
86+ "id" : str (other_user .id ),
87+ "username" : other_user .name ,
3688 "created_at" : "2023-01-02T03:04:00+00:00" ,
37- "global_role" : user .global_role ,
89+ "global_role" : other_user .global_role ,
3890 "email" : None ,
3991 "active" : True ,
4092 "permissions" : {
0 commit comments