keycloak-scim/src/util.test.ts

102 lines
2.4 KiB
TypeScript

import { convertFormValuesToObject, convertToFormValues } from "./util";
jest.mock("react");
describe("Tests the form convert util functions", () => {
it("convert to form values", () => {
const given = {
name: "client",
other: { one: "1", two: "2" },
attributes: { one: ["1"] },
};
const values: { [index: string]: any } = {};
const spy = (name: string, value: any) => (values[name] = value);
//when
convertToFormValues(given, spy);
//then
expect(values).toEqual({
name: "client",
other: { one: "1", two: "2" },
attributes: [
{ key: "one", value: "1" },
{ key: "", value: "" },
],
});
});
it("convert save values", () => {
const given = {
name: "client",
attributes: [{ key: "one", value: "1" }],
config: { one: { two: "3" } },
};
//when
const values = convertFormValuesToObject(given);
//then
expect(values).toEqual({
name: "client",
attributes: { one: ["1"] },
config: { "one.two": "3" },
});
});
it("convert attributes flatten", () => {
const given = {
name: "test",
description: "",
type: "default",
attributes: {
display: { on: { consent: { screen: "true" } } },
include: { in: { token: { scope: "true" } } },
gui: { order: "1" },
consent: { screen: { text: "" } },
},
};
//when
const values = convertFormValuesToObject(given);
//then
expect(values).toEqual({
name: "test",
description: "",
type: "default",
attributes: {
"display.on.consent.screen": "true",
"include.in.token.scope": "true",
"gui.order": "1",
"consent.screen.text": "",
},
});
});
it("convert flatten attributes to object", () => {
const given = {
attributes: {
"display.on.consent.screen": "true",
"include.in.token.scope": "true",
"gui.order": "1",
"consent.screen.text": "",
},
};
const values: { [index: string]: any } = {};
const spy = (name: string, value: any) => (values[name] = value);
//when
convertToFormValues(given, spy);
//then
expect(values).toEqual({
attributes: {
display: { on: { consent: { screen: "true" } } },
include: { in: { token: { scope: "true" } } },
gui: { order: "1" },
consent: { screen: { text: "" } },
},
});
});
});