/
opt
/
canhelp
/
node_modules
/
better-auth
/
node_modules
/
zod
/
src
/
v3
/
tests
/
/opt/canhelp/node_modules/better-auth/node_modules/zod/src/v3/tests
mkdir
upload
Name
Size
Mode
Actions
all-errors.test.ts
4753
0644
edit
dl
rm
anyunknown.test.ts
673
0644
edit
dl
rm
array.test.ts
1939
0644
edit
dl
rm
async-parsing.test.ts
12639
0644
edit
dl
rm
async-refinements.test.ts
1603
0644
edit
dl
rm
base.test.ts
782
0644
edit
dl
rm
bigint.test.ts
1977
0644
edit
dl
rm
branded.test.ts
1734
0644
edit
dl
rm
catch.test.ts
6550
0644
edit
dl
rm
coerce.test.ts
6650
0644
edit
dl
rm
complex.test.ts
2497
0644
edit
dl
rm
custom.test.ts
950
0644
edit
dl
rm
date.test.ts
983
0644
edit
dl
rm
deepmasking.test.ts
5215
0644
edit
dl
rm
default.test.ts
3527
0644
edit
dl
rm
description.test.ts
1323
0644
edit
dl
rm
discriminated-unions.test.ts
8537
0644
edit
dl
rm
enum.test.ts
2737
0644
edit
dl
rm
error.test.ts
16812
0644
edit
dl
rm
firstparty.test.ts
2391
0644
edit
dl
rm
firstpartyschematypes.test.ts
788
0644
edit
dl
rm
function.test.ts
6734
0644
edit
dl
rm
generics.test.ts
1523
0644
edit
dl
rm
instanceof.test.ts
1154
0644
edit
dl
rm
intersection.test.ts
3091
0644
edit
dl
rm
language-server.source.ts
1275
0644
edit
dl
rm
language-server.test.ts
8318
0644
edit
dl
rm
literal.test.ts
1063
0644
edit
dl
rm
map.test.ts
3545
0644
edit
dl
rm
masking.test.ts
85
0644
edit
dl
rm
mocker.test.ts
389
0644
edit
dl
rm
Mocker.ts
1341
0644
edit
dl
rm
nan.test.ts
708
0644
edit
dl
rm
nativeEnum.test.ts
2344
0644
edit
dl
rm
nullable.test.ts
1172
0644
edit
dl
rm
number.test.ts
6373
0644
edit
dl
rm
object-augmentation.test.ts
569
0644
edit
dl
rm
object-in-es5-env.test.ts
778
0644
edit
dl
rm
object.test.ts
11760
0644
edit
dl
rm
optional.test.ts
1222
0644
edit
dl
rm
parser.test.ts
1125
0644
edit
dl
rm
parseUtil.test.ts
869
0644
edit
dl
rm
partials.test.ts
6996
0644
edit
dl
rm
pickomit.test.ts
3622
0644
edit
dl
rm
pipeline.test.ts
823
0644
edit
dl
rm
preprocess.test.ts
4530
0644
edit
dl
rm
primitive.test.ts
12215
0644
edit
dl
rm
promise.test.ts
2490
0644
edit
dl
rm
readonly.test.ts
7339
0644
edit
dl
rm
record.test.ts
3735
0644
edit
dl
rm
recursive.test.ts
3946
0644
edit
dl
rm
refine.test.ts
8172
0644
edit
dl
rm
safeparse.test.ts
628
0644
edit
dl
rm
set.test.ts
4788
0644
edit
dl
rm
standard-schema.test.ts
2587
0644
edit
dl
rm
string.test.ts
65633
0644
edit
dl
rm
transformer.test.ts
5687
0644
edit
dl
rm
tuple.test.ts
2691
0644
edit
dl
rm
unions.test.ts
1540
0644
edit
dl
rm
validations.test.ts
3826
0644
edit
dl
rm
void.test.ts
349
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/better-auth/node_modules/zod/src/v3/tests/async-parsing.test.ts
(12639B)
// @ts-ignore TS6133 import { expect, test } from "vitest"; import * as z from "zod/v3"; /// string const stringSchema = z.string(); test("string async parse", async () => { const goodData = "XXX"; const badData = 12; const goodResult = await stringSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await stringSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// number const numberSchema = z.number(); test("number async parse", async () => { const goodData = 1234.2353; const badData = "1234"; const goodResult = await numberSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await numberSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// bigInt const bigIntSchema = z.bigint(); test("bigInt async parse", async () => { const goodData = BigInt(145); const badData = 134; const goodResult = await bigIntSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await bigIntSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// boolean const booleanSchema = z.boolean(); test("boolean async parse", async () => { const goodData = true; const badData = 1; const goodResult = await booleanSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await booleanSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// date const dateSchema = z.date(); test("date async parse", async () => { const goodData = new Date(); const badData = new Date().toISOString(); const goodResult = await dateSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await dateSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// undefined const undefinedSchema = z.undefined(); test("undefined async parse", async () => { const goodData = undefined; const badData = "XXX"; const goodResult = await undefinedSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(undefined); const badResult = await undefinedSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// null const nullSchema = z.null(); test("null async parse", async () => { const goodData = null; const badData = undefined; const goodResult = await nullSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await nullSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// any const anySchema = z.any(); test("any async parse", async () => { const goodData = [{}]; // const badData = 'XXX'; const goodResult = await anySchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); // const badResult = await anySchema.safeParseAsync(badData); // expect(badResult.success).toBe(false); // if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// unknown const unknownSchema = z.unknown(); test("unknown async parse", async () => { const goodData = ["asdf", 124, () => {}]; // const badData = 'XXX'; const goodResult = await unknownSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); // const badResult = await unknownSchema.safeParseAsync(badData); // expect(badResult.success).toBe(false); // if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// void const voidSchema = z.void(); test("void async parse", async () => { const goodData = undefined; const badData = 0; const goodResult = await voidSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await voidSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// array const arraySchema = z.array(z.string()); test("array async parse", async () => { const goodData = ["XXX"]; const badData = "XXX"; const goodResult = await arraySchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await arraySchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// object const objectSchema = z.object({ string: z.string() }); test("object async parse", async () => { const goodData = { string: "XXX" }; const badData = { string: 12 }; const goodResult = await objectSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await objectSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// union const unionSchema = z.union([z.string(), z.undefined()]); test("union async parse", async () => { const goodData = undefined; const badData = null; const goodResult = await unionSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await unionSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// record const recordSchema = z.record(z.object({})); test("record async parse", async () => { const goodData = { adsf: {}, asdf: {} }; const badData = [{}]; const goodResult = await recordSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await recordSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// function const functionSchema = z.function(); test("function async parse", async () => { const goodData = () => {}; const badData = "XXX"; const goodResult = await functionSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(typeof goodResult.data).toEqual("function"); const badResult = await functionSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// literal const literalSchema = z.literal("asdf"); test("literal async parse", async () => { const goodData = "asdf"; const badData = "asdff"; const goodResult = await literalSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await literalSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// enum const enumSchema = z.enum(["fish", "whale"]); test("enum async parse", async () => { const goodData = "whale"; const badData = "leopard"; const goodResult = await enumSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await enumSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// nativeEnum enum nativeEnumTest { asdf = "qwer", } // @ts-ignore const nativeEnumSchema = z.nativeEnum(nativeEnumTest); test("nativeEnum async parse", async () => { const goodData = nativeEnumTest.asdf; const badData = "asdf"; const goodResult = await nativeEnumSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) expect(goodResult.data).toEqual(goodData); const badResult = await nativeEnumSchema.safeParseAsync(badData); expect(badResult.success).toBe(false); if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); }); /// promise const promiseSchema = z.promise(z.number()); test("promise async parse good", async () => { const goodData = Promise.resolve(123); const goodResult = await promiseSchema.safeParseAsync(goodData); expect(goodResult.success).toBe(true); if (goodResult.success) { expect(goodResult.data).toBeInstanceOf(Promise); const data = await goodResult.data; expect(data).toEqual(123); // expect(goodResult.data).resolves.toEqual(124); // return goodResult.data; } else { throw new Error("success should be true"); } }); test("promise async parse bad", async () => { const badData = Promise.resolve("XXX"); const badResult = await promiseSchema.safeParseAsync(badData); expect(badResult.success).toBe(true); if (badResult.success) { await expect(badResult.data).rejects.toBeInstanceOf(z.ZodError); } else { throw new Error("success should be true"); } }); test("async validation non-empty strings", async () => { const base = z.object({ hello: z.string().refine((x) => x && x.length > 0), foo: z.string().refine((x) => x && x.length > 0), }); const testval = { hello: "", foo: "" }; const result1 = base.safeParse(testval); const result2 = base.safeParseAsync(testval); const r1 = result1; await result2.then((r2) => { if (r1.success === false && r2.success === false) expect(r1.error.issues.length).toBe(r2.error.issues.length); // <--- r1 has length 2, r2 has length 1 }); }); test("async validation multiple errors 1", async () => { const base = z.object({ hello: z.string(), foo: z.number(), }); const testval = { hello: 3, foo: "hello" }; const result1 = base.safeParse(testval); const result2 = base.safeParseAsync(testval); const r1 = result1; await result2.then((r2) => { if (r1.success === false && r2.success === false) expect(r2.error.issues.length).toBe(r1.error.issues.length); }); }); test("async validation multiple errors 2", async () => { const base = (is_async?: boolean) => z.object({ hello: z.string(), foo: z.object({ bar: z.number().refine(is_async ? async () => false : () => false), }), }); const testval = { hello: 3, foo: { bar: 4 } }; const result1 = base().safeParse(testval); const result2 = base(true).safeParseAsync(testval); const r1 = result1; await result2.then((r2) => { if (r1.success === false && r2.success === false) expect(r2.error.issues.length).toBe(r1.error.issues.length); }); }); test("ensure early async failure prevents follow-up refinement checks", async () => { let count = 0; const base = z.object({ hello: z.string(), foo: z .number() .refine(async () => { count++; return true; }) .refine(async () => { count++; return true; }, "Good"), }); const testval = { hello: "bye", foo: 3 }; const result = await base.safeParseAsync(testval); if (result.success === false) { expect(result.error.issues.length).toBe(1); expect(count).toBe(1); } // await result.then((r) => { // if (r.success === false) expect(r.error.issues.length).toBe(1); // expect(count).toBe(2); // }); });
Save
cmd:
run