mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-09 03:18:44 +00:00
fix(mcp): add missing mock in test, show Approve for rejected, clear submission metadata, drop spurious Content-Type
This commit is contained in:
parent
8963a54f1a
commit
0b742d1f68
4 changed files with 33 additions and 19 deletions
|
|
@ -1026,9 +1026,12 @@ if MCP_AVAILABLE:
|
|||
|
||||
# TODO: audit log for create
|
||||
|
||||
# Admin-created servers are always active regardless of any lifecycle fields
|
||||
# in the payload — prevents an admin from accidentally creating a pending server.
|
||||
# Admin-created servers are always active — clear any submission lifecycle
|
||||
# fields the caller may have provided to prevent fake entries appearing in
|
||||
# the submissions queue.
|
||||
payload.approval_status = MCPApprovalStatus.active
|
||||
payload.submitted_by = None
|
||||
payload.submitted_at = None
|
||||
|
||||
# Attempt to create the mcp server
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -1739,6 +1739,9 @@ class TestMCPApprovalWorkflow:
|
|||
now_rejected = generate_mock_mcp_server_db_record()
|
||||
now_rejected.approval_status = MCPApprovalStatus.rejected
|
||||
|
||||
mock_manager = MagicMock()
|
||||
mock_manager.reload_servers_from_database = AsyncMock()
|
||||
|
||||
with (
|
||||
patch(
|
||||
"litellm.proxy.management_endpoints.mcp_management_endpoints.get_prisma_client_or_throw",
|
||||
|
|
@ -1752,6 +1755,10 @@ class TestMCPApprovalWorkflow:
|
|||
"litellm.proxy.management_endpoints.mcp_management_endpoints.reject_mcp_server",
|
||||
AsyncMock(return_value=now_rejected),
|
||||
),
|
||||
patch(
|
||||
"litellm.proxy.management_endpoints.mcp_management_endpoints.global_mcp_server_manager",
|
||||
mock_manager,
|
||||
),
|
||||
):
|
||||
result = await reject_mcp_server_submission(
|
||||
server_id=active_server.server_id,
|
||||
|
|
@ -1759,3 +1766,4 @@ class TestMCPApprovalWorkflow:
|
|||
user_api_key_dict=admin,
|
||||
)
|
||||
assert result is not None
|
||||
mock_manager.reload_servers_from_database.assert_awaited_once()
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe
|
|||
)}
|
||||
</div>
|
||||
{/* Approve/Reject when no checks panel (no rules configured) */}
|
||||
{checks.length === 0 && approvalStatus === "pending_review" && (
|
||||
{checks.length === 0 && (approvalStatus === "pending_review" || approvalStatus === "rejected") && (
|
||||
<div className="flex items-center gap-2 flex-shrink-0">
|
||||
<button
|
||||
type="button"
|
||||
|
|
@ -331,13 +331,15 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe
|
|||
>
|
||||
Approve
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={onReject}
|
||||
className="text-xs border border-red-300 text-red-600 hover:bg-red-50 px-3 py-1.5 rounded-md transition-colors font-medium"
|
||||
>
|
||||
Reject
|
||||
</button>
|
||||
{approvalStatus === "pending_review" && (
|
||||
<button
|
||||
type="button"
|
||||
onClick={onReject}
|
||||
className="text-xs border border-red-300 text-red-600 hover:bg-red-50 px-3 py-1.5 rounded-md transition-colors font-medium"
|
||||
>
|
||||
Reject
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
@ -375,7 +377,7 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe
|
|||
</div>
|
||||
</div>
|
||||
{/* Approve / Reject in header */}
|
||||
{approvalStatus === "pending_review" && (
|
||||
{(approvalStatus === "pending_review" || approvalStatus === "rejected") && (
|
||||
<div className="flex items-center gap-2 flex-shrink-0">
|
||||
<button
|
||||
type="button"
|
||||
|
|
@ -384,13 +386,15 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe
|
|||
>
|
||||
Approve
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={onReject}
|
||||
className="text-xs border border-red-300 text-red-600 hover:bg-red-50 bg-white px-3 py-1.5 rounded-md transition-colors font-medium"
|
||||
>
|
||||
Reject
|
||||
</button>
|
||||
{approvalStatus === "pending_review" && (
|
||||
<button
|
||||
type="button"
|
||||
onClick={onReject}
|
||||
className="text-xs border border-red-300 text-red-600 hover:bg-red-50 bg-white px-3 py-1.5 rounded-md transition-colors font-medium"
|
||||
>
|
||||
Reject
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6551,7 +6551,6 @@ export const approveMCPServer = async (accessToken: string, serverId: string) =>
|
|||
method: HTTP_REQUEST.PUT,
|
||||
headers: {
|
||||
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
if (!response.ok) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue