mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-07-15 19:05:28 +02:00
API key names longer than 32 characters were rejected by better-auth with a 400 that surfaced as an opaque INTERNAL_SERVER_ERROR (the generic "Failed to generate API key" toast). Add a shared name schema (min 1, max 32, matching better-auth's default maximumNameLength) used by both the tRPC input and the client form, and surface the limit on the Name field so users see it before submitting. Fixes #4798
27 lines
884 B
TypeScript
27 lines
884 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { API_KEY_NAME_MAX_LENGTH, apiKeyNameSchema } from "@/lib/api-keys";
|
|
|
|
describe("apiKeyNameSchema", () => {
|
|
it("rejects an empty name", () => {
|
|
const result = apiKeyNameSchema.safeParse("");
|
|
expect(result.success).toBe(false);
|
|
});
|
|
|
|
it("accepts a name at the maximum length", () => {
|
|
const name = "a".repeat(API_KEY_NAME_MAX_LENGTH);
|
|
const result = apiKeyNameSchema.safeParse(name);
|
|
expect(result.success).toBe(true);
|
|
});
|
|
|
|
it("rejects a name over the maximum length instead of passing it to better-auth", () => {
|
|
const name = "a".repeat(API_KEY_NAME_MAX_LENGTH + 1);
|
|
const result = apiKeyNameSchema.safeParse(name);
|
|
expect(result.success).toBe(false);
|
|
if (!result.success) {
|
|
expect(result.error.issues[0]?.message).toBe(
|
|
`Name must be at most ${API_KEY_NAME_MAX_LENGTH} characters`,
|
|
);
|
|
}
|
|
});
|
|
});
|