@@ -35,7 +35,7 @@ async def test_create_user(server_settings, session_manager, logger):
35
35
user = await user_service .read_by_id (user_id = USER_ID , conn = conn )
36
36
37
37
assert len (user .groups ) > 0
38
- assert user .has_grant ("test_grant" )
38
+ assert user .has_effective_grant ("test_grant" )
39
39
40
40
async with session_manager .session () as conn :
41
41
async with conn .begin ():
@@ -47,7 +47,7 @@ async def test_create_user(server_settings, session_manager, logger):
47
47
async with conn .begin ():
48
48
user = await user_service .read_by_id (user_id = USER_ID , conn = conn )
49
49
50
- assert not user .has_grant ("test_grant" )
50
+ assert not user .has_effective_grant ("test_grant" )
51
51
52
52
async with session_manager .session () as conn :
53
53
async with conn .begin ():
@@ -64,6 +64,52 @@ async def test_create_user(server_settings, session_manager, logger):
64
64
user = await user_service .read_by_name (user_name = USER_NAME , conn = conn )
65
65
66
66
67
+ @pytest .mark .asyncio (loop_scope = "session" )
68
+ async def test_user_effective_grants_with_group (server_settings , session_manager , logger ):
69
+ async with session_manager .session () as conn :
70
+ async with conn .begin ():
71
+ # Create a new user
72
+ user = await user_service .create (
73
+ user_name = "test_user" ,
74
+ email = "test_user@email.com" ,
75
+ full_name = "Test User Group Grants" ,
76
+ grants = "user_grant" ,
77
+ conn = conn ,
78
+ log = logger ,
79
+ )
80
+ USER_ID = user .user_id
81
+
82
+ # Create a new group with grants and add the user
83
+ group = await group_service .create (
84
+ group_name = "test_group_with_grants" ,
85
+ created_by_user_id = USER_ID ,
86
+ member_ids = [USER_ID ],
87
+ grants = "group_grant another_group_grant" ,
88
+ conn = conn ,
89
+ log = logger ,
90
+ )
91
+ GROUP_ID = group .group_id
92
+
93
+ async with session_manager .session () as conn :
94
+ async with conn .begin ():
95
+ # Read the user and check effective grants
96
+ user = await user_service .read_by_id (user_id = USER_ID , conn = conn )
97
+ effective_grants = user .get_effective_grants ()
98
+
99
+ assert "user_grant" in effective_grants
100
+ assert "group_grant" in effective_grants
101
+ assert "another_group_grant" in effective_grants
102
+ assert user .has_effective_grant ("user_grant" )
103
+ assert user .has_effective_grant ("group_grant" )
104
+ assert user .has_effective_grant ("another_group_grant" )
105
+ assert not user .has_effective_grant ("non_existent_grant" )
106
+
107
+ async with session_manager .session () as conn :
108
+ async with conn .begin ():
109
+ # Delete the group
110
+ await group_service .delete_group (group_id = GROUP_ID , conn = conn , log = logger )
111
+
112
+
67
113
@pytest .mark .asyncio (loop_scope = "session" )
68
114
async def test_user_with_no_groups (server_settings , session_manager , logger ):
69
115
async with session_manager .session () as conn :
0 commit comments