diff --git a/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/Modals/DeleteSSOSettingsModal.test.tsx b/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/Modals/DeleteSSOSettingsModal.test.tsx index ef6ec6c7055..7d8a35b7f44 100644 --- a/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/Modals/DeleteSSOSettingsModal.test.tsx +++ b/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/Modals/DeleteSSOSettingsModal.test.tsx @@ -1,20 +1,60 @@ +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { render, screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import DeleteSSOSettingsModal from "./DeleteSSOSettingsModal"; +vi.mock("@/app/(dashboard)/hooks/sso/useSSOSettings", () => ({ + useSSOSettings: vi.fn(() => ({ + data: { + values: { + google_client_id: "test-client-id", + }, + }, + })), +})); + +vi.mock("@/app/(dashboard)/hooks/sso/useEditSSOSettings", () => ({ + useEditSSOSettings: vi.fn(() => ({ + mutateAsync: vi.fn(), + isPending: false, + })), +})); + +vi.mock("@/app/(dashboard)/hooks/useAuthorized", () => ({ + default: vi.fn(() => ({ + accessToken: "test-token", + userId: "test-user-id", + userRole: "proxy_admin", + })), +})); + +const createQueryClient = () => + new QueryClient({ + defaultOptions: { + queries: { + retry: false, + gcTime: 0, + }, + }, + }); + describe("DeleteSSOSettingsModal", () => { it("should render", () => { const onCancel = vi.fn(); const onSuccess = vi.fn(); + const queryClient = createQueryClient(); render( - , + + + , ); expect(screen.getByText("Confirm Clear SSO Settings")).toBeInTheDocument(); expect( - screen.getByText("Are you sure you want to clear all SSO settings? This action cannot be undone."), + screen.getByText( + "Are you sure you want to clear all SSO settings? Users will no longer be able to login using SSO after this change.", + ), ).toBeInTheDocument(); - expect(screen.getByText("Users will no longer be able to login using SSO after this change.")).toBeInTheDocument(); }); }); diff --git a/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.test.ts b/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.test.ts index 1c878d7b7b3..718302d35fe 100644 --- a/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.test.ts +++ b/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.test.ts @@ -55,6 +55,7 @@ describe("processSSOSettingsPayload", () => { default_role: "proxy_admin", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", other_field: "value", }; @@ -83,6 +84,7 @@ describe("processSSOSettingsPayload", () => { default_role: "internal_user", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -100,6 +102,7 @@ describe("processSSOSettingsPayload", () => { default_role: "internal_user_viewer", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -121,6 +124,7 @@ describe("processSSOSettingsPayload", () => { default_role: "proxy_admin_viewer", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -142,6 +146,7 @@ describe("processSSOSettingsPayload", () => { default_role: "internal_user", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -160,6 +165,7 @@ describe("processSSOSettingsPayload", () => { default_role: "internal_user", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -174,6 +180,7 @@ describe("processSSOSettingsPayload", () => { default_role: "internal_user_viewer", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -186,6 +193,7 @@ describe("processSSOSettingsPayload", () => { default_role: "internal_user", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -198,6 +206,7 @@ describe("processSSOSettingsPayload", () => { default_role: "proxy_admin_viewer", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -210,6 +219,7 @@ describe("processSSOSettingsPayload", () => { default_role: "proxy_admin", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -222,6 +232,7 @@ describe("processSSOSettingsPayload", () => { default_role: "unknown_role", group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); @@ -233,6 +244,7 @@ describe("processSSOSettingsPayload", () => { const formValues = { group_claim: "groups", use_role_mappings: true, + sso_provider: "generic", }; const result = processSSOSettingsPayload(formValues); diff --git a/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.ts b/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.ts index cd1884ff038..c199048df3e 100644 --- a/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.ts +++ b/ui/litellm-dashboard/src/components/Settings/AdminSettings/SSOSettings/utils.ts @@ -13,7 +13,6 @@ export const processSSOSettingsPayload = (formValues: Record): Reco default_role, group_claim, use_role_mappings, - sso_provider, ...rest } = formValues; @@ -22,8 +21,7 @@ export const processSSOSettingsPayload = (formValues: Record): Reco }; // Add role mappings only if use_role_mappings is checked AND provider supports role mappings - const supportsRoleMappings = sso_provider === "okta" || sso_provider === "generic"; - if (use_role_mappings && supportsRoleMappings) { + if (use_role_mappings) { // Helper function to split comma-separated string into array const splitTeams = (teams: string | undefined): string[] => { if (!teams || teams.trim() === "") return [];