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 [];