1
0
Fork 0
firefox/toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/head.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

62 lines
1.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const { sinon } = ChromeUtils.importESModule(
"resource://testing-common/Sinon.sys.mjs"
);
const { JsonSchema } = ChromeUtils.importESModule(
"resource://gre/modules/JsonSchema.sys.mjs"
);
ChromeUtils.defineESModuleGetters(this, {
SpecialMessageActions:
"resource://messaging-system/lib/SpecialMessageActions.sys.mjs",
});
ChromeUtils.defineLazyGetter(this, "fetchSMASchema", async () => {
const response = await fetch(
"resource://testing-common/SpecialMessageActionSchemas.json"
);
const schema = await response.json();
if (!schema) {
throw new Error("Failed to load SpecialMessageActionSchemas");
}
return schema;
});
const EXAMPLE_URL = "https://example.com/";
const SMATestUtils = {
/**
* Checks if an action is valid acording to existing schemas
* @param {SpecialMessageAction} action
*/
async validateAction(action) {
const schema = await fetchSMASchema;
const result = JsonSchema.validate(action, schema);
if (result.errors.length) {
throw new Error(
`Action with type ${
action.type
} was not valid. Errors: ${JSON.stringify(result.errors, undefined, 2)}`
);
}
is(
result.errors.length,
0,
`Should be a valid action of type ${action.type}`
);
},
/**
* Executes a Special Message Action after validating it
* @param {SpecialMessageAction} action
* @param {Browser} browser
*/
async executeAndValidateAction(action, browser = gBrowser) {
await SMATestUtils.validateAction(action);
await SpecialMessageActions.handleAction(action, browser);
},
};