53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import "../setup.ts";
|
|
import { assert, assertEquals, assertFalse } from "@std/assert";
|
|
import {
|
|
isLoginUserRequest,
|
|
isUpdateUserRequest,
|
|
validateRegisterUserRequest,
|
|
} from "../../validators/user.ts";
|
|
|
|
Deno.test("isLoginUserRequest", () => {
|
|
assert(isLoginUserRequest({ username: "a", password: "b" }));
|
|
assertFalse(isLoginUserRequest({ username: "a" }));
|
|
assertFalse(isLoginUserRequest({ username: 1, password: "b" }));
|
|
assertFalse(isLoginUserRequest(null));
|
|
});
|
|
|
|
Deno.test("validateRegisterUserRequest", () => {
|
|
const ok = {
|
|
username: "a_b_1",
|
|
password: "12345678",
|
|
email: "a@b.co",
|
|
inviteToken: "t",
|
|
};
|
|
assertEquals(validateRegisterUserRequest(ok), null);
|
|
assertEquals(
|
|
validateRegisterUserRequest({ ...ok, email: "a@b" }),
|
|
"Invalid email address",
|
|
);
|
|
assert(
|
|
validateRegisterUserRequest({ ...ok, username: "" })?.startsWith(
|
|
"Username",
|
|
),
|
|
);
|
|
assert(
|
|
validateRegisterUserRequest({ ...ok, username: "é" })?.startsWith(
|
|
"Username",
|
|
),
|
|
);
|
|
assertEquals(validateRegisterUserRequest({}), "Invalid request");
|
|
});
|
|
|
|
Deno.test("isUpdateUserRequest", () => {
|
|
assert(isUpdateUserRequest({}));
|
|
assert(isUpdateUserRequest({ description: null }));
|
|
assert(isUpdateUserRequest({ description: "hi", email: "a@b.co" }));
|
|
assertFalse(isUpdateUserRequest({ description: "x".repeat(2001) }));
|
|
assertFalse(isUpdateUserRequest({ email: "nope" }));
|
|
// A name changes only through a moderator's PATCH /api/users/:key/username.
|
|
assertFalse(isUpdateUserRequest({ username: "well_formed" }));
|
|
assertFalse(isUpdateUserRequest({ password: "short" }));
|
|
assertFalse(isUpdateUserRequest({ role: "root" }));
|
|
assertFalse(isUpdateUserRequest("string"));
|
|
});
|