94 lines
3.5 KiB
JavaScript
94 lines
3.5 KiB
JavaScript
|
const { execSync } = require("child_process");
|
||
|
const { readdirSync } = require("fs");
|
||
|
const path = require("path");
|
||
|
const { $AkSel } = require("../lib/idiom");
|
||
|
const { randomPrefix, convertToSlug } = require("../lib/utils");
|
||
|
|
||
|
const CLICK_TIME_DELAY = 250;
|
||
|
|
||
|
const login = [
|
||
|
["text", '>>>input[name="uidField"]', "ken@goauthentik.io"],
|
||
|
["button", '>>>button[type="submit"]'],
|
||
|
["pause"],
|
||
|
["text", '>>>input[name="password"]', "eat10bugs"],
|
||
|
["button", '>>>button[type="submit"]'],
|
||
|
["pause", ">>>div.header h1"],
|
||
|
];
|
||
|
|
||
|
const navigateToWizard = [
|
||
|
["button", '>>>a[href="/if/admin"]'],
|
||
|
["waitfor", ">>>ak-admin-overview"],
|
||
|
["button", '>>>a[href="#/core/applications;%7B%22createForm%22%3Atrue%7D"]'],
|
||
|
["waitfor", ">>>ak-application-list"],
|
||
|
["button", '>>>ak-wizard-frame button[slot="trigger"]']
|
||
|
];
|
||
|
|
||
|
// prettier-ignore
|
||
|
const ldapApplication = (theCode) => ([
|
||
|
["text", '>>>ak-form-element-horizontal input[name="name"]', `This Is My Application ${theCode}`],
|
||
|
["button", ">>>ak-wizard-frame footer button.pf-m-primary"],
|
||
|
["button", '>>>input[value="ldapprovider"]'],
|
||
|
["button", ">>>ak-wizard-frame footer button.pf-m-primary"],
|
||
|
["search", '>>>ak-tenanted-flow-search input[type="text"]', "button*=default-authentication-flow",],
|
||
|
["text", '>>>ak-form-element-horizontal input[name="tlsServerName"]', "example.goauthentik.io"],
|
||
|
["button", ">>>ak-wizard-frame footer button.pf-m-primary"],
|
||
|
]);
|
||
|
|
||
|
const deleteProvider = (theSlug) => ([
|
||
|
["button", '>>>ak-sidebar-item a[href="#/core/providers"]'],
|
||
|
["deletebox", `>>>a[href="#/core/applications/${theSlug}"]`],
|
||
|
["button", '>>>ak-forms-delete-bulk button[slot="trigger"]'],
|
||
|
["button", '>>>ak-forms-delete-bulk div[role="dialog"] ak-spinner-button'],
|
||
|
]);
|
||
|
|
||
|
const deleteApplication = (theSlug) => ([
|
||
|
["button", '>>>ak-sidebar-item a[href="#/core/applications"'],
|
||
|
["deletebox", `>>>a[href="#/core/applications/${theSlug}"]`],
|
||
|
["button", '>>>ak-forms-delete-bulk button[slot="trigger"]'],
|
||
|
["button", '>>>ak-forms-delete-bulk div[role="dialog"] ak-spinner-button']
|
||
|
]);
|
||
|
|
||
|
|
||
|
function prepApplicationAndSlug() {
|
||
|
const newSuffix = randomPrefix();
|
||
|
const thisApplication = ldapApplication(newSuffix);
|
||
|
return [thisApplication, convertToSlug(thisApplication[0][2])];
|
||
|
}
|
||
|
|
||
|
async function runSequence(sequence, watch = false) {
|
||
|
for ([command, ...args] of sequence) {
|
||
|
await $AkSel[command].apply($, args);
|
||
|
if (watch) {
|
||
|
await browser.pause(250);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
describe("Login", () => {
|
||
|
it("Should correctly log in to Authentik}", async () => {
|
||
|
const [theApplication, theSlug] = prepApplicationAndSlug();
|
||
|
|
||
|
await browser.reloadSession();
|
||
|
await browser.url("http://localhost:9000");
|
||
|
|
||
|
runSequence(login, true);
|
||
|
|
||
|
const home = await $(">>>div.header h1");
|
||
|
await expect(home).toHaveText("My applications");
|
||
|
|
||
|
await runSequence(navigateToWizard, true);
|
||
|
await runSequence(theApplication, true)
|
||
|
|
||
|
const success = await $(">>>ak-application-wizard-commit-application h1.pf-c-title");
|
||
|
await expect(success).toHaveText("Your application has been saved");
|
||
|
|
||
|
await $AkSel.button(">>>ak-wizard-frame .pf-c-wizard__footer-cancel button");
|
||
|
|
||
|
await runSequence(deleteProvider(theSlug), true);
|
||
|
await runSequence(deleteApplication(theSlug), true);
|
||
|
|
||
|
const expectedApplication = await $(`>>>a[href="#/core/applications/${theSlug}"]`);
|
||
|
expect(expectedApplication).not.toExist();
|
||
|
});
|
||
|
});
|