99 lines
3.9 KiB
TypeScript
99 lines
3.9 KiB
TypeScript
import { expect } from "@wdio/globals";
|
|
|
|
import { type TestProvider, type TestSequence } from "../pageobjects/controls";
|
|
import ProviderWizardView from "../pageobjects/provider-wizard.page.js";
|
|
import ProvidersListPage from "../pageobjects/providers-list.page.js";
|
|
import { login } from "../utils/login.js";
|
|
import {
|
|
completeForwardAuthDomainProxyProviderForm,
|
|
completeForwardAuthProxyProviderForm,
|
|
completeLDAPProviderForm,
|
|
completeOAuth2ProviderForm,
|
|
completeProxyProviderForm,
|
|
completeRadiusProviderForm,
|
|
completeSAMLProviderForm,
|
|
completeSCIMProviderForm,
|
|
simpleForwardAuthDomainProxyProviderForm,
|
|
simpleForwardAuthProxyProviderForm,
|
|
simpleLDAPProviderForm,
|
|
simpleOAuth2ProviderForm,
|
|
simpleProxyProviderForm,
|
|
simpleRadiusProviderForm,
|
|
simpleSAMLProviderForm,
|
|
simpleSCIMProviderForm,
|
|
} from "./provider-shared-sequences.js";
|
|
|
|
async function reachTheProvider() {
|
|
await ProvidersListPage.logout();
|
|
await login();
|
|
await ProvidersListPage.open();
|
|
await expect(await ProvidersListPage.pageHeader()).toHaveText("Providers");
|
|
await expect(await containedMessages()).not.toContain("Successfully created provider.");
|
|
|
|
await ProvidersListPage.startWizardButton.click();
|
|
await ProviderWizardView.wizardTitle.waitForDisplayed();
|
|
await expect(await ProviderWizardView.wizardTitle).toHaveText("New provider");
|
|
}
|
|
|
|
const containedMessages = async () =>
|
|
await (async () => {
|
|
const messages = [];
|
|
for await (const alert of $("ak-message-container").$$("ak-message")) {
|
|
messages.push(await alert.$("p.pf-c-alert__title").getText());
|
|
}
|
|
return messages;
|
|
})();
|
|
|
|
const hasProviderSuccessMessage = async () =>
|
|
await browser.waitUntil(
|
|
async () => (await containedMessages()).includes("Successfully created provider."),
|
|
{ timeout: 1000, timeoutMsg: "Expected to see provider success message." },
|
|
);
|
|
|
|
async function fillOutFields(fields: TestSequence) {
|
|
for (const field of fields) {
|
|
const thefunc = field[0];
|
|
const args = field.slice(1);
|
|
// @ts-expect-error "This is a pretty alien call, so I'm not surprised Typescript doesn't like it."
|
|
await thefunc.apply($, args);
|
|
}
|
|
}
|
|
|
|
async function itShouldConfigureASimpleProvider(name: string, provider: TestSequence) {
|
|
it(`Should successfully configure a ${name} provider`, async () => {
|
|
await reachTheProvider();
|
|
await $("ak-wizard-page-type-create").waitForDisplayed();
|
|
await fillOutFields(provider);
|
|
await ProviderWizardView.pause();
|
|
await ProviderWizardView.nextButton.click();
|
|
await hasProviderSuccessMessage();
|
|
});
|
|
}
|
|
|
|
type ProviderTest = [string, TestProvider];
|
|
|
|
describe("Configuring Providers", () => {
|
|
const providers: ProviderTest[] = [
|
|
["Simple LDAP", simpleLDAPProviderForm],
|
|
["Simple OAuth2", simpleOAuth2ProviderForm],
|
|
["Simple Radius", simpleRadiusProviderForm],
|
|
["Simple SAML", simpleSAMLProviderForm],
|
|
["Simple SCIM", simpleSCIMProviderForm],
|
|
["Simple Proxy", simpleProxyProviderForm],
|
|
["Simple Forward Auth (single application)", simpleForwardAuthProxyProviderForm],
|
|
["Simple Forward Auth (domain level)", simpleForwardAuthDomainProxyProviderForm],
|
|
["Complete OAuth2", completeOAuth2ProviderForm],
|
|
["Complete LDAP", completeLDAPProviderForm],
|
|
["Complete Radius", completeRadiusProviderForm],
|
|
["Complete SAML", completeSAMLProviderForm],
|
|
["Complete SCIM", completeSCIMProviderForm],
|
|
["Complete Proxy", completeProxyProviderForm],
|
|
["Complete Forward Auth (single application)", completeForwardAuthProxyProviderForm],
|
|
["Complete Forward Auth (domain level)", completeForwardAuthDomainProxyProviderForm],
|
|
];
|
|
|
|
for (const [name, provider] of providers) {
|
|
itShouldConfigureASimpleProvider(name, provider());
|
|
}
|
|
});
|