@@ -59,40 +59,47 @@ async def test_get_team_permissions_list_success(mock_db_client, mock_admin_auth
59
59
Test successful retrieval of team member permissions.
60
60
"""
61
61
test_team_id = "test-team-123"
62
+ permissions = ["/key/generate" , "/key/update" ]
62
63
mock_team_data = {
63
64
"team_id" : test_team_id ,
64
65
"team_alias" : "Test Team" ,
65
- "team_member_permissions" : [ "/key/generate" , "/key/update" ] ,
66
+ "team_member_permissions" : permissions ,
66
67
"spend" : 0.0 ,
67
68
}
68
69
mock_team_row = MagicMock ()
69
70
mock_team_row .model_dump .return_value = mock_team_data
70
- mock_db_client .db .litellm_teamtable .find_unique = AsyncMock (
71
- return_value = mock_team_row
72
- )
73
-
74
- # Override the dependency for this test
75
- app .dependency_overrides [user_api_key_auth ] = lambda : mock_admin_auth
76
-
77
- response = client .get (f"/team/permissions_list?team_id={ test_team_id } " )
78
-
79
- assert response .status_code == 200
80
- response_data = response .json ()
81
- assert response_data ["team_id" ] == test_team_id
82
- assert (
83
- response_data ["team_member_permissions" ]
84
- == mock_team_data ["team_member_permissions" ]
85
- )
86
- assert (
87
- response_data ["all_available_permissions" ]
88
- == TeamMemberPermissionChecks .get_all_available_team_member_permissions ()
89
- )
90
- mock_db_client .db .litellm_teamtable .find_unique .assert_awaited_once_with (
91
- where = {"team_id" : test_team_id }
92
- )
93
-
94
- # Clean up dependency override
95
- app .dependency_overrides = {}
71
+
72
+ # Set attributes directly on the mock object
73
+ mock_team_row .team_id = test_team_id
74
+ mock_team_row .team_alias = "Test Team"
75
+ mock_team_row .team_member_permissions = permissions
76
+ mock_team_row .spend = 0.0
77
+
78
+ # Mock the get_team_object function used in the endpoint
79
+ with patch (
80
+ "litellm.proxy.management_endpoints.team_endpoints.get_team_object" ,
81
+ new_callable = AsyncMock ,
82
+ return_value = mock_team_row ,
83
+ ):
84
+ # Override the dependency for this test
85
+ app .dependency_overrides [user_api_key_auth ] = lambda : mock_admin_auth
86
+
87
+ response = client .get (f"/team/permissions_list?team_id={ test_team_id } " )
88
+
89
+ assert response .status_code == 200
90
+ response_data = response .json ()
91
+ assert response_data ["team_id" ] == test_team_id
92
+ assert (
93
+ response_data ["team_member_permissions" ]
94
+ == mock_team_data ["team_member_permissions" ]
95
+ )
96
+ assert (
97
+ response_data ["all_available_permissions" ]
98
+ == TeamMemberPermissionChecks .get_all_available_team_member_permissions ()
99
+ )
100
+
101
+ # Clean up dependency override
102
+ app .dependency_overrides = {}
96
103
97
104
98
105
# Test for /team/permissions_update endpoint (POST)
@@ -102,15 +109,17 @@ async def test_update_team_permissions_success(mock_db_client, mock_admin_auth):
102
109
Test successful update of team member permissions by an admin.
103
110
"""
104
111
test_team_id = "test-team-456"
112
+ update_permissions = ["/key/generate" , "/key/update" ]
105
113
update_payload = {
106
114
"team_id" : test_team_id ,
107
- "team_member_permissions" : [ "/key/generate" , "/key/update" ] ,
115
+ "team_member_permissions" : update_permissions ,
108
116
}
109
117
118
+ existing_permissions = ["/key/list" ]
110
119
mock_existing_team_data = {
111
120
"team_id" : test_team_id ,
112
121
"team_alias" : "Existing Team" ,
113
- "team_member_permissions" : [ "/key/list" ] ,
122
+ "team_member_permissions" : existing_permissions ,
114
123
"spend" : 0.0 ,
115
124
"models" : [],
116
125
}
@@ -121,41 +130,50 @@ async def test_update_team_permissions_success(mock_db_client, mock_admin_auth):
121
130
122
131
mock_existing_team_row = MagicMock (spec = LiteLLM_TeamTable )
123
132
mock_existing_team_row .model_dump .return_value = mock_existing_team_data
124
- # Set attributes directly if model_dump isn't enough for LiteLLM_TeamTable usage
125
- for key , value in mock_existing_team_data .items ():
126
- setattr (mock_existing_team_row , key , value )
133
+
134
+ # Set attributes directly on the existing team mock
135
+ mock_existing_team_row .team_id = test_team_id
136
+ mock_existing_team_row .team_alias = "Existing Team"
137
+ mock_existing_team_row .team_member_permissions = existing_permissions
138
+ mock_existing_team_row .spend = 0.0
139
+ mock_existing_team_row .models = []
127
140
128
141
mock_updated_team_row = MagicMock (spec = LiteLLM_TeamTable )
129
142
mock_updated_team_row .model_dump .return_value = mock_updated_team_data
130
- # Set attributes directly if model_dump isn't enough for LiteLLM_TeamTable usage
131
- for key , value in mock_updated_team_data .items ():
132
- setattr (mock_updated_team_row , key , value )
133
-
134
- mock_db_client .db .litellm_teamtable .find_unique = AsyncMock (
135
- return_value = mock_existing_team_row
136
- )
137
- mock_db_client .db .litellm_teamtable .update = AsyncMock (
138
- return_value = mock_updated_team_row
139
- )
140
-
141
- # Override the dependency for this test
142
- app .dependency_overrides [user_api_key_auth ] = lambda : mock_admin_auth
143
-
144
- response = client .post ("/team/permissions_update" , json = update_payload )
145
-
146
- assert response .status_code == 200
147
- response_data = response .json ()
148
-
149
- # Use model_dump for comparison if the endpoint returns the Prisma model directly
150
- assert response_data == mock_updated_team_row .model_dump ()
151
-
152
- mock_db_client .db .litellm_teamtable .find_unique .assert_awaited_once_with (
153
- where = {"team_id" : test_team_id }
154
- )
155
- mock_db_client .db .litellm_teamtable .update .assert_awaited_once_with (
156
- where = {"team_id" : test_team_id },
157
- data = {"team_member_permissions" : update_payload ["team_member_permissions" ]},
158
- )
159
-
160
- # Clean up dependency override
161
- app .dependency_overrides = {}
143
+
144
+ # Set attributes directly on the updated team mock
145
+ mock_updated_team_row .team_id = test_team_id
146
+ mock_updated_team_row .team_alias = "Existing Team"
147
+ mock_updated_team_row .team_member_permissions = update_permissions
148
+ mock_updated_team_row .spend = 0.0
149
+ mock_updated_team_row .models = []
150
+
151
+ # Mock the get_team_object function used in the endpoint
152
+ with patch (
153
+ "litellm.proxy.management_endpoints.team_endpoints.get_team_object" ,
154
+ new_callable = AsyncMock ,
155
+ return_value = mock_existing_team_row ,
156
+ ):
157
+ # Mock the database update function
158
+ mock_db_client .db .litellm_teamtable .update = AsyncMock (
159
+ return_value = mock_updated_team_row
160
+ )
161
+
162
+ # Override the dependency for this test
163
+ app .dependency_overrides [user_api_key_auth ] = lambda : mock_admin_auth
164
+
165
+ response = client .post ("/team/permissions_update" , json = update_payload )
166
+
167
+ assert response .status_code == 200
168
+ response_data = response .json ()
169
+
170
+ # Use model_dump for comparison if the endpoint returns the Prisma model directly
171
+ assert response_data == mock_updated_team_row .model_dump ()
172
+
173
+ mock_db_client .db .litellm_teamtable .update .assert_awaited_once_with (
174
+ where = {"team_id" : test_team_id },
175
+ data = {"team_member_permissions" : update_payload ["team_member_permissions" ]},
176
+ )
177
+
178
+ # Clean up dependency override
179
+ app .dependency_overrides = {}
0 commit comments