better-auth-feature-flags
Version:
Ship features safely with feature flags, A/B testing, and progressive rollouts - Better Auth plugin for modern release management
91 lines (75 loc) • 2.52 kB
text/typescript
// SPDX-FileCopyrightText: 2025-present Kriasoft
// SPDX-License-Identifier: MIT
import { describe, expect, it } from "bun:test";
import { z } from "zod";
describe("Admin: environments schema validation", () => {
const listQuerySchema = z
.object({
organizationId: z.string().optional(),
cursor: z.string().optional(),
limit: z.number().min(1).max(100).optional(),
})
.optional();
const createBodySchema = z.object({
name: z.string(),
key: z
.string()
.refine((val) => /^[a-z0-9-_]+$/i.test(val), {
message:
"Key must contain only alphanumeric characters, hyphens, and underscores",
})
.optional(),
description: z.string().optional(),
organizationId: z.string().optional(),
config: z.record(z.string(), z.any()).optional(),
});
it("environments list accepts unified query parameters", () => {
const validQuery = {
organizationId: "org-123",
cursor: "cursor-abc",
limit: 50,
};
const result = listQuerySchema.safeParse(validQuery);
expect(result.success).toBe(true);
});
it("environments list rejects invalid limit values", () => {
const invalidQuery = {
limit: 0, // Too small
};
const result = listQuerySchema.safeParse(invalidQuery);
expect(result.success).toBe(false);
});
it("environments create accepts name and optional key", () => {
const validBody = {
name: "Production Environment",
key: "production",
description: "Production deployment environment",
};
const result = createBodySchema.safeParse(validBody);
expect(result.success).toBe(true);
});
it("environments create accepts name without key", () => {
const validBody = {
name: "Staging Environment",
description: "Staging deployment environment",
};
const result = createBodySchema.safeParse(validBody);
expect(result.success).toBe(true);
});
it("environments create rejects invalid key format", () => {
const invalidBody = {
name: "Test Environment",
key: "test environment!", // Invalid characters
};
const result = createBodySchema.safeParse(invalidBody);
expect(result.success).toBe(false);
});
it("environments create accepts valid key with hyphens and underscores", () => {
const validBody = {
name: "Dev Environment",
key: "dev-test_env-01",
};
const result = createBodySchema.safeParse(validBody);
expect(result.success).toBe(true);
});
});