88 lines
2.1 KiB
JavaScript
88 lines
2.1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const { JsonSchema } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/JsonSchema.sys.mjs"
|
|
);
|
|
|
|
add_task(function test_basicSchema() {
|
|
info("Testing validation of a basic schema");
|
|
const schema = {
|
|
type: "object",
|
|
properties: {
|
|
id: { type: "number" },
|
|
},
|
|
required: ["id"],
|
|
};
|
|
|
|
const validator = new JsonSchema.Validator(schema);
|
|
|
|
Assert.deepEqual(
|
|
JsonSchema.validate({ id: 123 }, schema),
|
|
{ valid: true, errors: [] },
|
|
"Validation of basic schemas with validate()"
|
|
);
|
|
|
|
Assert.deepEqual(
|
|
validator.validate({ id: 123 }, schema),
|
|
{ valid: true, errors: [] },
|
|
"Validation of basic schemas with Validator"
|
|
);
|
|
|
|
Assert.ok(
|
|
!JsonSchema.validate({}, schema).valid,
|
|
"Validation of basic schemas with validate()"
|
|
);
|
|
Assert.ok(
|
|
!validator.validate({}).valid,
|
|
"Validation of basic schemas with Validator"
|
|
);
|
|
});
|
|
|
|
add_task(function test_mozUrlFormat() {
|
|
info("Testing custom string format 'moz-url-format'");
|
|
const schema = {
|
|
type: "string",
|
|
format: "moz-url-format",
|
|
};
|
|
|
|
{
|
|
const obj = "https://www.mozilla.org/%LOCALE%/";
|
|
Assert.deepEqual(
|
|
JsonSchema.validate(obj, schema),
|
|
{ valid: true, errors: [] },
|
|
"Substitution of a valid variable validates"
|
|
);
|
|
}
|
|
|
|
{
|
|
const obj = "https://mozilla.org/%BOGUS%/";
|
|
|
|
Assert.equal(
|
|
Services.urlFormatter.formatURL(obj),
|
|
obj,
|
|
"BOGUS is an invalid variable for the URL formatter service"
|
|
);
|
|
|
|
Assert.ok(
|
|
!JsonSchema.validate(obj, { type: "string", format: "uri" }).valid,
|
|
"A moz-url-format string does not validate as a URI"
|
|
);
|
|
|
|
Assert.deepEqual(
|
|
JsonSchema.validate(obj, schema),
|
|
{
|
|
valid: false,
|
|
errors: [
|
|
{
|
|
instanceLocation: "#",
|
|
keyword: "format",
|
|
keywordLocation: "#/format",
|
|
error: `String does not match format "moz-url-format".`,
|
|
},
|
|
],
|
|
},
|
|
"Substitution of an invalid variable does not validate"
|
|
);
|
|
}
|
|
});
|