Committed harmony on SAML. Streamlined the tests even further.
This commit is contained in:
@ -1,28 +1,43 @@
|
||||
import { expect } from "@wdio/globals";
|
||||
import {
|
||||
clickButton,
|
||||
setFormGroup,
|
||||
setSearchSelect,
|
||||
setTextInput,
|
||||
setTypeCreate,
|
||||
} from "pageobjects/controls.js";
|
||||
|
||||
import ProviderWizardView from "../pageobjects/provider-wizard.page.js";
|
||||
import ProvidersListPage from "../pageobjects/providers-list.page.js";
|
||||
import { randomId } from "../utils/index.js";
|
||||
import { login } from "../utils/login.js";
|
||||
import {
|
||||
simpleLDAPProviderForm,
|
||||
simpleOAuth2ProviderForm,
|
||||
simpleRadiusProviderForm,
|
||||
} from "./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." },
|
||||
);
|
||||
|
||||
type FieldDesc = [(..._: unknown) => Promise<void>, ...unknown];
|
||||
|
||||
async function fillOutFields(fields: FieldDesc[]) {
|
||||
for (const field of fields) {
|
||||
const thefunc = field[0];
|
||||
@ -33,64 +48,44 @@ async function fillOutFields(fields: FieldDesc[]) {
|
||||
|
||||
describe("Configure Oauth2 Providers", () => {
|
||||
it("Should configure a simple OAuth2 Provider", async () => {
|
||||
const newProviderName = `New OAuth2 Provider - ${randomId()}`;
|
||||
|
||||
await reachTheProvider();
|
||||
|
||||
await $("ak-wizard-page-type-create").waitForDisplayed();
|
||||
|
||||
// prettier-ignore
|
||||
await fillOutFields([
|
||||
[setTypeCreate, "selectProviderType", "OAuth2/OpenID Provider"],
|
||||
[clickButton, "Next"],
|
||||
[setTextInput, "name", newProviderName],
|
||||
[setSearchSelect, "authorizationFlow", "default-provider-authorization-explicit-consent"],
|
||||
]);
|
||||
|
||||
await fillOutFields(simpleOAuth2ProviderForm());
|
||||
await ProviderWizardView.pause();
|
||||
await ProviderWizardView.nextButton.click();
|
||||
await hasProviderSuccessMessage();
|
||||
});
|
||||
});
|
||||
|
||||
describe("Configure LDAP Providers", () => {
|
||||
it("Should configure a simple LDAP Provider", async () => {
|
||||
const newProviderName = `New LDAP Provider - ${randomId()}`;
|
||||
|
||||
await reachTheProvider();
|
||||
await $("ak-wizard-page-type-create").waitForDisplayed();
|
||||
|
||||
// prettier-ignore
|
||||
await fillOutFields([
|
||||
[setTypeCreate, "selectProviderType", "LDAP Provider"],
|
||||
[clickButton, "Next"],
|
||||
[setTextInput, "name", newProviderName],
|
||||
[setFormGroup, /Flow settings/, "open"],
|
||||
// This will never not weird me out.
|
||||
[setSearchSelect, "authorizationFlow", "default-authentication-flow"],
|
||||
[setSearchSelect, "invalidationFlow", "default-invalidation-flow"],
|
||||
]);
|
||||
|
||||
await fillOutFields(simpleLDAPProviderForm());
|
||||
await ProviderWizardView.pause();
|
||||
await ProviderWizardView.nextButton.click();
|
||||
await hasProviderSuccessMessage();
|
||||
});
|
||||
});
|
||||
|
||||
describe("Configure Radius Providers", () => {
|
||||
it("Should configure a simple Radius Provider", async () => {
|
||||
const newProviderName = `New Radius Provider - ${randomId()}`;
|
||||
|
||||
await reachTheProvider();
|
||||
await $("ak-wizard-page-type-create").waitForDisplayed();
|
||||
|
||||
// prettier-ignore
|
||||
await fillOutFields([
|
||||
[setTypeCreate, "selectProviderType", "Radius Provider"],
|
||||
[clickButton, "Next"],
|
||||
[setTextInput, "name", newProviderName],
|
||||
[setSearchSelect, "authorizationFlow", "default-authentication-flow"],
|
||||
]);
|
||||
|
||||
await fillOutFields(simpleRadiusProviderForm());
|
||||
await ProviderWizardView.pause();
|
||||
await ProviderWizardView.nextButton.click();
|
||||
await hasProviderSuccessMessage();
|
||||
});
|
||||
});
|
||||
|
||||
describe("Configure SAML Providers", () => {
|
||||
it("Should configure a simple Radius Provider", async () => {
|
||||
await reachTheProvider();
|
||||
await $("ak-wizard-page-type-create").waitForDisplayed();
|
||||
await fillOutFields(simpleRadiusProviderForm());
|
||||
await ProviderWizardView.pause();
|
||||
await ProviderWizardView.nextButton.click();
|
||||
await hasProviderSuccessMessage();
|
||||
});
|
||||
});
|
||||
|
35
web/tests/specs/shared-sequences.ts
Normal file
35
web/tests/specs/shared-sequences.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import {
|
||||
clickButton,
|
||||
setFormGroup,
|
||||
setSearchSelect,
|
||||
setTextInput,
|
||||
setTypeCreate,
|
||||
} from "pageobjects/controls.js";
|
||||
|
||||
import { randomId } from "../utils/index.js";
|
||||
|
||||
const newObjectName = (prefix: string) => `${prefix} - ${randomId()}`;
|
||||
|
||||
export const simpleOAuth2ProviderForm = () => [
|
||||
[setTypeCreate, "selectProviderType", "OAuth2/OpenID Provider"],
|
||||
[clickButton, "Next"],
|
||||
[setTextInput, "name", newObjectName("New Oauth2 Provider")],
|
||||
[setSearchSelect, "authorizationFlow", "default-provider-authorization-explicit-consent"],
|
||||
];
|
||||
|
||||
export const simpleLDAPProviderForm = () => [
|
||||
[setTypeCreate, "selectProviderType", "LDAP Provider"],
|
||||
[clickButton, "Next"],
|
||||
[setTextInput, "name", newObjectName("New LDAP Provider")],
|
||||
// This will never not weird me out.
|
||||
[setSearchSelect, "authorizationFlow", "default-authentication-flow"],
|
||||
[setFormGroup, /Flow settings/, "open"],
|
||||
[setSearchSelect, "invalidationFlow", "default-invalidation-flow"],
|
||||
];
|
||||
|
||||
export const simpleRadiusProviderForm = () => [
|
||||
[setTypeCreate, "selectProviderType", "Radius Provider"],
|
||||
[clickButton, "Next"],
|
||||
[setTextInput, "name", newObjectName("New Radius Provider")],
|
||||
[setSearchSelect, "authorizationFlow", "default-authentication-flow"],
|
||||
];
|
Reference in New Issue
Block a user