mirror of
https://github.com/wassname/talk.git
synced 2026-09-11 12:51:33 +08:00
feat: improved user creation
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`throws an error for missing fields 1`] = `"child \\"d\\" fails because [\\"d\\" is required]"`;
|
||||
@@ -0,0 +1,32 @@
|
||||
import Joi from "joi";
|
||||
|
||||
import { validate } from "talk-server/app/request/body";
|
||||
|
||||
it("strips out unknown fields", () => {
|
||||
const payload = { a: 1, b: 2, c: 3 };
|
||||
const schema = Joi.object().keys({});
|
||||
|
||||
expect(validate(schema, payload)).toEqual({});
|
||||
});
|
||||
|
||||
it("allows valid fields", () => {
|
||||
const payload = { a: 1, b: 2, c: 3 };
|
||||
const schema = Joi.object().keys({ a: Joi.number() });
|
||||
|
||||
expect(validate(schema, payload)).toEqual({ a: 1 });
|
||||
});
|
||||
|
||||
it("allows valid fields from extended schema", () => {
|
||||
const payload = { a: 1, b: 2, c: 3 };
|
||||
const schema = Joi.object().keys({ a: Joi.number() });
|
||||
const extendedSchema = schema.keys({ b: Joi.number() });
|
||||
|
||||
expect(validate(extendedSchema, payload)).toEqual({ a: 1, b: 2 });
|
||||
});
|
||||
|
||||
it("throws an error for missing fields", () => {
|
||||
const payload = { a: 1, b: 2, c: 3 };
|
||||
const schema = Joi.object().keys({ d: Joi.number() });
|
||||
|
||||
expect(() => validate(schema, payload)).toThrowErrorMatchingSnapshot();
|
||||
});
|
||||
@@ -12,11 +12,12 @@ export const validate = (schema: Joi.SchemaLike, body: any) => {
|
||||
const { value, error: err } = Joi.validate(body, schema, {
|
||||
stripUnknown: true,
|
||||
presence: "required",
|
||||
abortEarly: false,
|
||||
});
|
||||
|
||||
if (err) {
|
||||
// TODO: return better error.
|
||||
throw new Error("Validation Error");
|
||||
// TODO: wrap error?
|
||||
throw err;
|
||||
}
|
||||
|
||||
return value;
|
||||
|
||||
Reference in New Issue
Block a user