Cypress test fixes (#1628)
This commit is contained in:
parent
4d4dfe0308
commit
a9d9581062
21 changed files with 1612 additions and 1417 deletions
|
@ -11,6 +11,6 @@
|
|||
},
|
||||
"defaultCommandTimeout": 10000,
|
||||
"videoCompression": false,
|
||||
"numTestsKeptInMemory": 0,
|
||||
"numTestsKeptInMemory": 30,
|
||||
"videoUploadOnPasses": false
|
||||
}
|
||||
|
|
165
cypress/integration/clients_saml_test.spec.ts
Normal file
165
cypress/integration/clients_saml_test.spec.ts
Normal file
|
@ -0,0 +1,165 @@
|
|||
import LoginPage from "../support/pages/LoginPage";
|
||||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import AdminClient from "../support/util/AdminClient";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import AuthenticationTab from "../support/pages/admin_console/manage/clients/Authentication";
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const masthead = new Masthead();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const listingPage = new ListingPage();
|
||||
const modalUtils = new ModalUtils();
|
||||
|
||||
describe("Clients SAML tests", () => {
|
||||
describe("SAML test", () => {
|
||||
const samlClientName = "saml";
|
||||
|
||||
before(() => {
|
||||
new AdminClient().createClient({
|
||||
protocol: "saml",
|
||||
clientId: samlClientName,
|
||||
publicClient: false,
|
||||
});
|
||||
});
|
||||
|
||||
after(() => {
|
||||
new AdminClient().deleteClient(samlClientName);
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToClients();
|
||||
listingPage.searchItem(samlClientName).goToItemDetails(samlClientName);
|
||||
});
|
||||
|
||||
it("should display the saml sections on details screen", () => {
|
||||
cy.get(".pf-c-jump-links__list").should(($ul) => {
|
||||
expect($ul)
|
||||
.to.contain("SAML capabilities")
|
||||
.to.contain("Signature and Encryption");
|
||||
});
|
||||
});
|
||||
|
||||
it("should save force name id format", () => {
|
||||
const load = "auth/admin/realms/master/client-scopes";
|
||||
cy.intercept(load).as("load");
|
||||
|
||||
cy.get(".pf-c-jump-links__list").contains("SAML capabilities").click();
|
||||
cy.wait("@load");
|
||||
|
||||
cy.findByTestId("forceNameIdFormat").click({
|
||||
force: true,
|
||||
});
|
||||
cy.findByTestId("settingsSave").click();
|
||||
masthead.checkNotificationMessage("Client successfully updated");
|
||||
});
|
||||
});
|
||||
|
||||
describe("SAML keys tab", () => {
|
||||
const clientId = "saml-keys";
|
||||
|
||||
before(() => {
|
||||
new AdminClient().createClient({
|
||||
clientId,
|
||||
protocol: "saml",
|
||||
});
|
||||
});
|
||||
|
||||
after(() => {
|
||||
new AdminClient().deleteClient(clientId);
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToClients();
|
||||
listingPage.searchItem(clientId).goToItemDetails(clientId);
|
||||
cy.get("#pf-tab-keys-keys").click();
|
||||
});
|
||||
|
||||
it("doesn't disable when no", () => {
|
||||
cy.findByTestId("clientSignature").click({ force: true });
|
||||
|
||||
modalUtils
|
||||
.checkModalTitle('Disable "Client signature required"')
|
||||
.cancelModal();
|
||||
|
||||
cy.findAllByTestId("certificate").should("have.length", 1);
|
||||
});
|
||||
|
||||
it("disable client signature", () => {
|
||||
cy.findByTestId("clientSignature").click({ force: true });
|
||||
|
||||
modalUtils
|
||||
.checkModalTitle('Disable "Client signature required"')
|
||||
.confirmModal();
|
||||
|
||||
masthead.checkNotificationMessage("Client successfully updated");
|
||||
cy.findAllByTestId("certificate").should("have.length", 0);
|
||||
});
|
||||
|
||||
it("should enable Encryption keys config", () => {
|
||||
cy.findByTestId("encryptAssertions").click({ force: true });
|
||||
|
||||
cy.findByTestId("generate").click();
|
||||
masthead.checkNotificationMessage(
|
||||
"New key pair and certificate generated successfully"
|
||||
);
|
||||
|
||||
modalUtils.confirmModal();
|
||||
cy.findAllByTestId("certificate").should("have.length", 1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Authentication tab", () => {
|
||||
const clientName = "authenticationTabClient";
|
||||
const authenticationTab = new AuthenticationTab();
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToClients();
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
await new AdminClient().createClient({
|
||||
protocol: "openid-connect",
|
||||
clientId: clientName,
|
||||
publicClient: false,
|
||||
authorizationServicesEnabled: true,
|
||||
serviceAccountsEnabled: true,
|
||||
standardFlowEnabled: true,
|
||||
});
|
||||
});
|
||||
|
||||
after(() => {
|
||||
new AdminClient().deleteClient(clientName);
|
||||
});
|
||||
|
||||
it("Should update the resource server settings", () => {
|
||||
listingPage.searchItem(clientName).goToItemDetails(clientName);
|
||||
authenticationTab.goToTab();
|
||||
});
|
||||
|
||||
it("Should create a resource", () => {
|
||||
listingPage.searchItem(clientName).goToItemDetails(clientName);
|
||||
authenticationTab.goToTab().goToResourceSubTab();
|
||||
authenticationTab.assertDefaultResource();
|
||||
|
||||
authenticationTab
|
||||
.goToCreateResource()
|
||||
.fillResourceForm({
|
||||
name: "Resource",
|
||||
displayName: "The display name",
|
||||
type: "type",
|
||||
uris: ["one", "two"],
|
||||
})
|
||||
.save();
|
||||
|
||||
masthead.checkNotificationMessage("Resource created successfully");
|
||||
});
|
||||
});
|
||||
});
|
|
@ -10,7 +10,6 @@ import InitialAccessTokenTab from "../support/pages/admin_console/manage/clients
|
|||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import RoleMappingTab from "../support/pages/admin_console/manage/RoleMappingTab";
|
||||
import KeysTab from "../support/pages/admin_console/manage/clients/KeysTab";
|
||||
import AuthenticationTab from "../support/pages/admin_console/manage/clients/Authentication";
|
||||
|
||||
let itemId = "client_crud";
|
||||
const loginPage = new LoginPage();
|
||||
|
@ -327,152 +326,4 @@ describe("Clients test", () => {
|
|||
cy.findByTestId("jump-link-capability-config").should("not.exist");
|
||||
});
|
||||
});
|
||||
describe("SAML test", () => {
|
||||
const samlClientName = "saml";
|
||||
|
||||
before(() => {
|
||||
new AdminClient().createClient({
|
||||
protocol: "saml",
|
||||
clientId: samlClientName,
|
||||
publicClient: false,
|
||||
});
|
||||
});
|
||||
|
||||
after(() => {
|
||||
new AdminClient().deleteClient(samlClientName);
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToClients();
|
||||
listingPage.searchItem(samlClientName).goToItemDetails(samlClientName);
|
||||
});
|
||||
|
||||
it("should display the saml sections on details screen", () => {
|
||||
cy.get(".pf-c-jump-links__list").should(($ul) => {
|
||||
expect($ul)
|
||||
.to.contain("SAML capabilities")
|
||||
.to.contain("Signature and Encryption");
|
||||
});
|
||||
});
|
||||
|
||||
it("should save force name id format", () => {
|
||||
const load = "auth/admin/realms/master/client-scopes";
|
||||
cy.intercept(load).as("load");
|
||||
|
||||
cy.get(".pf-c-jump-links__list").contains("SAML capabilities").click();
|
||||
cy.wait("@load");
|
||||
|
||||
cy.findByTestId("forceNameIdFormat").click({
|
||||
force: true,
|
||||
});
|
||||
cy.findByTestId("settingsSave").click();
|
||||
masthead.checkNotificationMessage("Client successfully updated");
|
||||
});
|
||||
});
|
||||
|
||||
describe("SAML keys tab", () => {
|
||||
const clientId = "saml-keys";
|
||||
|
||||
before(() => {
|
||||
new AdminClient().createClient({
|
||||
clientId,
|
||||
protocol: "saml",
|
||||
});
|
||||
});
|
||||
|
||||
after(() => {
|
||||
new AdminClient().deleteClient(clientId);
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToClients();
|
||||
listingPage.searchItem(clientId).goToItemDetails(clientId);
|
||||
cy.get("#pf-tab-keys-keys").click();
|
||||
});
|
||||
|
||||
it("doesn't disable when no", () => {
|
||||
cy.findByTestId("clientSignature").click({ force: true });
|
||||
|
||||
modalUtils
|
||||
.checkModalTitle('Disable "Client signature required"')
|
||||
.cancelModal();
|
||||
|
||||
cy.findAllByTestId("certificate").should("have.length", 1);
|
||||
});
|
||||
|
||||
it("disable client signature", () => {
|
||||
cy.findByTestId("clientSignature").click({ force: true });
|
||||
|
||||
modalUtils
|
||||
.checkModalTitle('Disable "Client signature required"')
|
||||
.confirmModal();
|
||||
|
||||
masthead.checkNotificationMessage("Client successfully updated");
|
||||
cy.findAllByTestId("certificate").should("have.length", 0);
|
||||
});
|
||||
|
||||
it("should enable Encryption keys config", () => {
|
||||
cy.findByTestId("encryptAssertions").click({ force: true });
|
||||
|
||||
cy.findByTestId("generate").click();
|
||||
masthead.checkNotificationMessage(
|
||||
"New key pair and certificate generated successfully"
|
||||
);
|
||||
|
||||
modalUtils.confirmModal();
|
||||
cy.findAllByTestId("certificate").should("have.length", 1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Authentication tab", () => {
|
||||
const clientName = "authenticationTabClient";
|
||||
const authenticationTab = new AuthenticationTab();
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToClients();
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
await new AdminClient().createClient({
|
||||
protocol: "openid-connect",
|
||||
clientId: clientName,
|
||||
publicClient: false,
|
||||
authorizationServicesEnabled: true,
|
||||
serviceAccountsEnabled: true,
|
||||
standardFlowEnabled: true,
|
||||
});
|
||||
});
|
||||
|
||||
after(() => {
|
||||
new AdminClient().deleteClient(clientName);
|
||||
});
|
||||
|
||||
it("Should update the resource server settings", () => {
|
||||
listingPage.searchItem(clientName).goToItemDetails(clientName);
|
||||
authenticationTab.goToTab();
|
||||
});
|
||||
|
||||
it("Should create a resource", () => {
|
||||
listingPage.searchItem(clientName).goToItemDetails(clientName);
|
||||
authenticationTab.goToTab().goToResourceSubTab();
|
||||
authenticationTab.assertDefaultResource();
|
||||
|
||||
authenticationTab
|
||||
.goToCreateResource()
|
||||
.fillResourceForm({
|
||||
name: "Resource",
|
||||
displayName: "The display name",
|
||||
type: "type",
|
||||
uris: ["one", "two"],
|
||||
})
|
||||
.save();
|
||||
|
||||
masthead.checkNotificationMessage("Resource created successfully");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,365 +0,0 @@
|
|||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
|
||||
import CreateProviderPage from "../support/pages/admin_console/manage/identity_providers/CreateProviderPage";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import OrderDialog from "../support/pages/admin_console/manage/identity_providers/OrderDialog";
|
||||
import AddMapperPage from "../support/pages/admin_console/manage/identity_providers/AddMapperPage";
|
||||
|
||||
describe("Identity provider test", () => {
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const masthead = new Masthead();
|
||||
const listingPage = new ListingPage();
|
||||
const createProviderPage = new CreateProviderPage();
|
||||
const addMapperPage = new AddMapperPage();
|
||||
|
||||
const createSuccessMsg = "Identity provider successfully created";
|
||||
const createMapperSuccessMsg = "Mapper created successfully.";
|
||||
const saveMapperSuccessMsg = "Mapper saved successfully.";
|
||||
|
||||
const changeSuccessMsg =
|
||||
"Successfully changed display order of identity providers";
|
||||
const deletePrompt = "Delete provider?";
|
||||
const deleteSuccessMsg = "Provider successfully deleted";
|
||||
|
||||
const keycloakServer = Cypress.env("KEYCLOAK_SERVER");
|
||||
const discoveryUrl = `${keycloakServer}/auth/realms/master/.well-known/openid-configuration`;
|
||||
const samlDiscoveryUrl = `${keycloakServer}/auth/realms/master/protocol/saml/descriptor`;
|
||||
const authorizationUrl = `${keycloakServer}/auth/realms/master/protocol/openid-connect/auth`;
|
||||
|
||||
describe("Identity provider creation", () => {
|
||||
const identityProviderName = "github";
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToIdentityProviders();
|
||||
});
|
||||
|
||||
it("should create provider", () => {
|
||||
createProviderPage.checkGitHubCardVisible().clickGitHubCard();
|
||||
|
||||
createProviderPage.checkAddButtonDisabled();
|
||||
createProviderPage
|
||||
.fill(identityProviderName)
|
||||
.clickAdd()
|
||||
.checkClientIdRequiredMessage(true);
|
||||
createProviderPage.fill(identityProviderName, "123").clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
});
|
||||
|
||||
it("should create facebook provider", () => {
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem("facebook")
|
||||
.fill("facebook", "123")
|
||||
.clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg);
|
||||
});
|
||||
|
||||
it("should change order of providers", () => {
|
||||
const orderDialog = new OrderDialog();
|
||||
const providers = [identityProviderName, "facebook", "bitbucket"];
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("facebook");
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem("bitbucket")
|
||||
.fill("bitbucket", "123")
|
||||
.clickAdd();
|
||||
|
||||
cy.wait(2000);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
|
||||
orderDialog.openDialog().checkOrder(providers);
|
||||
orderDialog.moveRowTo("facebook", identityProviderName);
|
||||
|
||||
orderDialog.checkOrder(["bitbucket", identityProviderName, "facebook"]);
|
||||
|
||||
orderDialog.clickSave();
|
||||
masthead.checkNotificationMessage(changeSuccessMsg);
|
||||
});
|
||||
|
||||
it("should create a oidc provider using discovery url", () => {
|
||||
const oidcProviderName = "oidc";
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem(oidcProviderName)
|
||||
.fillDiscoveryUrl(discoveryUrl)
|
||||
.shouldBeSuccessful()
|
||||
.fill("oidc", "123")
|
||||
.clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg);
|
||||
createProviderPage.shouldHaveAuthorizationUrl(authorizationUrl);
|
||||
});
|
||||
|
||||
it("should create a SAML provider using SSO service url", () => {
|
||||
const samlProviderName = "saml";
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem(samlProviderName)
|
||||
.fillDiscoveryUrl(samlDiscoveryUrl)
|
||||
.shouldBeSuccessful()
|
||||
.clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg);
|
||||
});
|
||||
|
||||
it("should delete provider", () => {
|
||||
const modalUtils = new ModalUtils();
|
||||
listingPage.deleteItem(identityProviderName);
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add facebook social mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("facebook");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.emptyStateAddMapper();
|
||||
|
||||
addMapperPage.fillSocialMapper("facebook mapper");
|
||||
|
||||
addMapperPage.saveNewMapper();
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Advanced Attribute to Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.emptyStateAddMapper();
|
||||
|
||||
addMapperPage.addAdvancedAttrToRoleMapper("SAML mapper");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Username Template Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.addUsernameTemplateImporterMapper(
|
||||
"SAML Username Template Importer Mapper"
|
||||
);
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Hardcoded User Session Attribute", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.addHardcodedUserSessionAttrMapper(
|
||||
"Hardcoded User Session Attribute"
|
||||
);
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Attribute Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.addSAMLAttrImporterMapper("Attribute Importer");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Hardcoded Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.addHardcodedRoleMapper("Hardcoded Role");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Hardcoded Attribute", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.addHardcodedAttrMapper("Hardcoded Attribute");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type SAML Attribute To Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.addSAMLAttributeToRoleMapper("SAML Attribute To Role");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add OIDC mapper of type Attribute Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("oidc");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.emptyStateAddMapper();
|
||||
|
||||
addMapperPage.addOIDCAttrImporterMapper("OIDC Attribute Importer");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add OIDC mapper of type Claim To Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("oidc");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.addOIDCClaimToRoleMapper("OIDC Claim to Role");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should add Social mapper of type Attribute Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("facebook");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
addMapperPage.addMapper();
|
||||
|
||||
addMapperPage.fillSocialMapper("facebook attribute importer");
|
||||
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should edit Username Template Importer mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
listingPage.goToItemDetails("SAML Username Template Importer Mapper");
|
||||
|
||||
addMapperPage.editUsernameTemplateImporterMapper();
|
||||
|
||||
masthead.checkNotificationMessage(saveMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("should edit facebook mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("facebook");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
listingPage.goToItemDetails("facebook attribute importer");
|
||||
|
||||
addMapperPage.editSocialMapper();
|
||||
});
|
||||
|
||||
it("should delete facebook mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("facebook");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
listingPage.deleteItem("facebook attribute importer");
|
||||
|
||||
cy.findByTestId("modalConfirm").click();
|
||||
});
|
||||
|
||||
it("should edit SAML mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
|
||||
listingPage.goToItemDetails("saml");
|
||||
|
||||
addMapperPage.goToMappersTab();
|
||||
|
||||
listingPage.goToItemDetails("SAML mapper");
|
||||
|
||||
addMapperPage.editSAMLorOIDCMapper();
|
||||
|
||||
masthead.checkNotificationMessage(saveMapperSuccessMsg);
|
||||
});
|
||||
|
||||
it("clean up providers", () => {
|
||||
const modalUtils = new ModalUtils();
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("bitbucket").deleteItem("bitbucket");
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("facebook").deleteItem("facebook");
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("oidc").deleteItem("oidc");
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("saml").deleteItem("saml");
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg);
|
||||
});
|
||||
});
|
||||
});
|
98
cypress/integration/identity_providers_oidc_test.spec.ts
Normal file
98
cypress/integration/identity_providers_oidc_test.spec.ts
Normal file
|
@ -0,0 +1,98 @@
|
|||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
import CreateProviderPage from "../support/pages/admin_console/manage/identity_providers/CreateProviderPage";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import AddMapperPage from "../support/pages/admin_console/manage/identity_providers/AddMapperPage";
|
||||
|
||||
describe("OIDC identity provider test", () => {
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const masthead = new Masthead();
|
||||
const listingPage = new ListingPage();
|
||||
const createProviderPage = new CreateProviderPage();
|
||||
const addMapperPage = new AddMapperPage();
|
||||
|
||||
const createSuccessMsg = "Identity provider successfully created";
|
||||
const createMapperSuccessMsg = "Mapper created successfully.";
|
||||
|
||||
const deletePrompt = "Delete provider?";
|
||||
const deleteSuccessMsg = "Provider successfully deleted";
|
||||
|
||||
const keycloakServer = Cypress.env("KEYCLOAK_SERVER");
|
||||
const discoveryUrl = `${keycloakServer}/auth/realms/master/.well-known/openid-configuration`;
|
||||
const authorizationUrl = `${keycloakServer}/auth/realms/master/protocol/openid-connect/auth`;
|
||||
|
||||
describe("OIDC Identity provider creation", () => {
|
||||
const identityProviderName = "github";
|
||||
const oidcProviderName = "oidc";
|
||||
const secret = "123";
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToIdentityProviders();
|
||||
});
|
||||
|
||||
it("should create provider", () => {
|
||||
createProviderPage.checkGitHubCardVisible().clickGitHubCard();
|
||||
|
||||
createProviderPage.checkAddButtonDisabled();
|
||||
createProviderPage
|
||||
.fill(identityProviderName)
|
||||
.clickAdd()
|
||||
.checkClientIdRequiredMessage(true);
|
||||
createProviderPage.fill(identityProviderName, secret).clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg, true);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
});
|
||||
|
||||
it("should create an OIDC provider using discovery url", () => {
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem(oidcProviderName)
|
||||
.fillDiscoveryUrl(discoveryUrl)
|
||||
.shouldBeSuccessful()
|
||||
.fill(oidcProviderName, secret)
|
||||
.clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg, true);
|
||||
createProviderPage.shouldHaveAuthorizationUrl(authorizationUrl);
|
||||
});
|
||||
|
||||
it("should add OIDC mapper of type Attribute Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(oidcProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.emptyStateAddMapper();
|
||||
addMapperPage.addOIDCAttrImporterMapper("OIDC Attribute Importer");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add OIDC mapper of type Claim To Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(oidcProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.addOIDCClaimToRoleMapper("OIDC Claim to Role");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("clean up providers", () => {
|
||||
const modalUtils = new ModalUtils();
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(oidcProviderName).deleteItem(oidcProviderName);
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg, true);
|
||||
listingPage
|
||||
.itemExist(identityProviderName)
|
||||
.deleteItem(identityProviderName);
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg, true);
|
||||
});
|
||||
});
|
||||
});
|
163
cypress/integration/identity_providers_saml_test.spec.ts
Normal file
163
cypress/integration/identity_providers_saml_test.spec.ts
Normal file
|
@ -0,0 +1,163 @@
|
|||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
import CreateProviderPage from "../support/pages/admin_console/manage/identity_providers/CreateProviderPage";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import AddMapperPage from "../support/pages/admin_console/manage/identity_providers/AddMapperPage";
|
||||
|
||||
describe("Identity provider test", () => {
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const masthead = new Masthead();
|
||||
const listingPage = new ListingPage();
|
||||
const createProviderPage = new CreateProviderPage();
|
||||
const addMapperPage = new AddMapperPage();
|
||||
|
||||
const createSuccessMsg = "Identity provider successfully created";
|
||||
const createMapperSuccessMsg = "Mapper created successfully.";
|
||||
const saveMapperSuccessMsg = "Mapper saved successfully.";
|
||||
|
||||
const deletePrompt = "Delete provider?";
|
||||
const deleteSuccessMsg = "Provider successfully deleted";
|
||||
|
||||
const keycloakServer = Cypress.env("KEYCLOAK_SERVER");
|
||||
const samlDiscoveryUrl = `${keycloakServer}/auth/realms/master/protocol/saml/descriptor`;
|
||||
|
||||
describe("SAML identity provider creation", () => {
|
||||
const identityProviderName = "github";
|
||||
const samlProviderName = "saml";
|
||||
const secret = "123";
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToIdentityProviders();
|
||||
});
|
||||
|
||||
it("should create provider", () => {
|
||||
createProviderPage.checkGitHubCardVisible().clickGitHubCard();
|
||||
|
||||
createProviderPage.checkAddButtonDisabled();
|
||||
createProviderPage
|
||||
.fill(identityProviderName)
|
||||
.clickAdd()
|
||||
.checkClientIdRequiredMessage(true);
|
||||
createProviderPage.fill(identityProviderName, secret).clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg, true);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
});
|
||||
|
||||
it("should create a SAML provider using SSO service url", () => {
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem(samlProviderName)
|
||||
.fillDiscoveryUrl(samlDiscoveryUrl)
|
||||
.shouldBeSuccessful()
|
||||
.clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Advanced Attribute to Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.emptyStateAddMapper();
|
||||
addMapperPage.addAdvancedAttrToRoleMapper("SAML mapper");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Username Template Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.addUsernameTemplateImporterMapper(
|
||||
"SAML Username Template Importer Mapper"
|
||||
);
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Hardcoded User Session Attribute", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.addHardcodedUserSessionAttrMapper(
|
||||
"Hardcoded User Session Attribute"
|
||||
);
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Attribute Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.addSAMLAttrImporterMapper("Attribute Importer");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Hardcoded Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.addHardcodedRoleMapper("Hardcoded Role");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type Hardcoded Attribute", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.addHardcodedAttrMapper("Hardcoded Attribute");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add SAML mapper of type SAML Attribute To Role", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.addSAMLAttributeToRoleMapper("SAML Attribute To Role");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it.skip("should edit Username Template Importer mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
listingPage.goToItemDetails("SAML Username Template Importer Mapper");
|
||||
addMapperPage.editUsernameTemplateImporterMapper();
|
||||
masthead.checkNotificationMessage(saveMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should edit SAML mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails(samlProviderName);
|
||||
addMapperPage.goToMappersTab();
|
||||
listingPage.goToItemDetails("SAML mapper");
|
||||
addMapperPage.editSAMLorOIDCMapper();
|
||||
masthead.checkNotificationMessage(saveMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("clean up providers", () => {
|
||||
const modalUtils = new ModalUtils();
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(samlProviderName).deleteItem(samlProviderName);
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg, true);
|
||||
listingPage
|
||||
.itemExist(identityProviderName)
|
||||
.deleteItem(identityProviderName);
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg, true);
|
||||
});
|
||||
});
|
||||
});
|
148
cypress/integration/identity_providers_test.spec.ts
Normal file
148
cypress/integration/identity_providers_test.spec.ts
Normal file
|
@ -0,0 +1,148 @@
|
|||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
|
||||
import CreateProviderPage from "../support/pages/admin_console/manage/identity_providers/CreateProviderPage";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import OrderDialog from "../support/pages/admin_console/manage/identity_providers/OrderDialog";
|
||||
import AddMapperPage from "../support/pages/admin_console/manage/identity_providers/AddMapperPage";
|
||||
|
||||
describe("Identity provider test", () => {
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const masthead = new Masthead();
|
||||
const listingPage = new ListingPage();
|
||||
const createProviderPage = new CreateProviderPage();
|
||||
const addMapperPage = new AddMapperPage();
|
||||
|
||||
const createSuccessMsg = "Identity provider successfully created";
|
||||
const createMapperSuccessMsg = "Mapper created successfully.";
|
||||
|
||||
const changeSuccessMsg =
|
||||
"Successfully changed display order of identity providers";
|
||||
const deletePrompt = "Delete provider?";
|
||||
const deleteSuccessMsg = "Provider successfully deleted";
|
||||
|
||||
describe("Identity provider creation", () => {
|
||||
const identityProviderName = "github";
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToIdentityProviders();
|
||||
});
|
||||
|
||||
it("should create provider", () => {
|
||||
createProviderPage.checkGitHubCardVisible().clickGitHubCard();
|
||||
|
||||
createProviderPage.checkAddButtonDisabled();
|
||||
createProviderPage
|
||||
.fill(identityProviderName)
|
||||
.clickAdd()
|
||||
.checkClientIdRequiredMessage(true);
|
||||
createProviderPage.fill(identityProviderName, "123").clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg, true);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
});
|
||||
|
||||
it("should create facebook provider", () => {
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem("facebook")
|
||||
.fill("facebook", "123")
|
||||
.clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should change order of providers", () => {
|
||||
const orderDialog = new OrderDialog();
|
||||
const providers = [identityProviderName, "facebook", "bitbucket"];
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("facebook");
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
|
||||
createProviderPage
|
||||
.clickCreateDropdown()
|
||||
.clickItem("bitbucket")
|
||||
.fill("bitbucket", "123")
|
||||
.clickAdd();
|
||||
masthead.checkNotificationMessage(createSuccessMsg, true);
|
||||
|
||||
cy.wait(2000);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist(identityProviderName);
|
||||
|
||||
orderDialog.openDialog().checkOrder(providers);
|
||||
orderDialog.moveRowTo("facebook", identityProviderName);
|
||||
|
||||
orderDialog.checkOrder(["bitbucket", identityProviderName, "facebook"]);
|
||||
|
||||
orderDialog.clickSave();
|
||||
masthead.checkNotificationMessage(changeSuccessMsg);
|
||||
});
|
||||
|
||||
it("should delete provider", () => {
|
||||
const modalUtils = new ModalUtils();
|
||||
listingPage.deleteItem(identityProviderName);
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add facebook social mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails("facebook");
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.emptyStateAddMapper();
|
||||
addMapperPage.fillSocialMapper("facebook mapper");
|
||||
// addMapperPage.saveNewMapper();
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should add Social mapper of type Attribute Importer", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails("facebook");
|
||||
addMapperPage.goToMappersTab();
|
||||
addMapperPage.addMapper();
|
||||
addMapperPage.fillSocialMapper("facebook attribute importer");
|
||||
masthead.checkNotificationMessage(createMapperSuccessMsg, true);
|
||||
});
|
||||
|
||||
it("should edit facebook mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails("facebook");
|
||||
addMapperPage.goToMappersTab();
|
||||
listingPage.goToItemDetails("facebook attribute importer");
|
||||
addMapperPage.editSocialMapper();
|
||||
});
|
||||
|
||||
it("should delete facebook mapper", () => {
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.goToItemDetails("facebook");
|
||||
addMapperPage.goToMappersTab();
|
||||
listingPage.deleteItem("facebook attribute importer");
|
||||
cy.findByTestId("modalConfirm").click();
|
||||
});
|
||||
|
||||
it("clean up providers", () => {
|
||||
const modalUtils = new ModalUtils();
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("bitbucket").deleteItem("bitbucket");
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg, true);
|
||||
|
||||
sidebarPage.goToIdentityProviders();
|
||||
listingPage.itemExist("facebook").deleteItem("facebook");
|
||||
modalUtils.checkModalTitle(deletePrompt).confirmModal();
|
||||
masthead.checkNotificationMessage(deleteSuccessMsg, true);
|
||||
});
|
||||
});
|
||||
});
|
120
cypress/integration/realm_settings_client_policies_test.spec.ts
Normal file
120
cypress/integration/realm_settings_client_policies_test.spec.ts
Normal file
|
@ -0,0 +1,120 @@
|
|||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import RealmSettingsPage from "../support/pages/admin_console/manage/realm_settings/RealmSettingsPage";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import AdminClient from "../support/util/AdminClient";
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const realmSettingsPage = new RealmSettingsPage();
|
||||
|
||||
describe("Realm settings client policies tab tests", () => {
|
||||
const realmName = "Realm_" + (Math.random() + 1).toString(36).substring(7);
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientPolicies-tab").click();
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
await new AdminClient().createRealm(realmName);
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await new AdminClient().deleteRealm(realmName);
|
||||
});
|
||||
|
||||
it("Go to client policies tab", () => {
|
||||
realmSettingsPage.shouldDisplayPoliciesTab();
|
||||
});
|
||||
|
||||
it("Check new client form is displaying", () => {
|
||||
realmSettingsPage.shouldDisplayNewClientPolicyForm();
|
||||
});
|
||||
|
||||
it("Complete new client form and cancel", () => {
|
||||
realmSettingsPage.shouldCompleteAndCancelCreateNewClientPolicy();
|
||||
});
|
||||
|
||||
it("Complete new client form and submit", () => {
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientPolicyFromEmptyState();
|
||||
});
|
||||
|
||||
it("Should perform client profile search by profile name", () => {
|
||||
realmSettingsPage.shouldSearchClientPolicy();
|
||||
});
|
||||
|
||||
it("Should not have conditions configured by default", () => {
|
||||
realmSettingsPage.shouldNotHaveConditionsConfigured();
|
||||
});
|
||||
|
||||
it("Should cancel adding a new condition to a client profile", () => {
|
||||
realmSettingsPage.shouldCancelAddingCondition();
|
||||
});
|
||||
|
||||
it("Should add a new client-roles condition to a client profile", () => {
|
||||
realmSettingsPage.shouldAddClientRolesCondition();
|
||||
});
|
||||
|
||||
it("Should add a new client-scopes condition to a client profile", () => {
|
||||
realmSettingsPage.shouldAddClientScopesCondition();
|
||||
});
|
||||
|
||||
it("Should edit the client-roles condition of a client profile", () => {
|
||||
realmSettingsPage.shouldEditClientRolesCondition();
|
||||
});
|
||||
|
||||
it("Should edit the client-scopes condition of a client profile", () => {
|
||||
realmSettingsPage.shouldEditClientScopesCondition();
|
||||
});
|
||||
|
||||
it("Should cancel deleting condition from a client profile", () => {
|
||||
realmSettingsPage.shouldCancelDeletingCondition();
|
||||
});
|
||||
|
||||
it("Should delete client-roles condition from a client profile", () => {
|
||||
realmSettingsPage.shouldDeleteClientRolesCondition();
|
||||
});
|
||||
|
||||
it("Should delete client-scopes condition from a client profile", () => {
|
||||
realmSettingsPage.shouldDeleteClientScopesCondition();
|
||||
});
|
||||
|
||||
it("Check cancelling the client policy deletion", () => {
|
||||
realmSettingsPage.shouldDisplayDeleteClientPolicyDialog();
|
||||
});
|
||||
|
||||
it("Check deleting the client policy", () => {
|
||||
realmSettingsPage.shouldDeleteClientPolicyDialog();
|
||||
});
|
||||
|
||||
it("Check navigating between Form View and JSON editor", () => {
|
||||
realmSettingsPage.shouldNavigateBetweenFormAndJSONViewPolicies();
|
||||
});
|
||||
|
||||
it("Should not create duplicate client profile", () => {
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientPolicyFromEmptyState();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientPolicies-tab").click();
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientPolicy();
|
||||
realmSettingsPage.shouldNotCreateDuplicateClientPolicy();
|
||||
cy.wait(2000);
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientPolicies-tab").click();
|
||||
realmSettingsPage.shouldDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Check deleting newly created client policy from create view via dropdown", () => {
|
||||
realmSettingsPage.shouldRemoveClientPolicyFromCreateView();
|
||||
});
|
||||
|
||||
it("Check reloading JSON policies", () => {
|
||||
realmSettingsPage.shouldReloadJSONPolicies();
|
||||
});
|
||||
});
|
125
cypress/integration/realm_settings_client_profiles_test.spec.ts
Normal file
125
cypress/integration/realm_settings_client_profiles_test.spec.ts
Normal file
|
@ -0,0 +1,125 @@
|
|||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import RealmSettingsPage from "../support/pages/admin_console/manage/realm_settings/RealmSettingsPage";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import AdminClient from "../support/util/AdminClient";
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const realmSettingsPage = new RealmSettingsPage();
|
||||
|
||||
describe("Realm settings client profiles tab tests", () => {
|
||||
const realmName = "Realm_" + (Math.random() + 1).toString(36).substring(7);
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientProfiles-tab").click();
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
await new AdminClient().createRealm(realmName);
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await new AdminClient().deleteRealm(realmName);
|
||||
});
|
||||
|
||||
it("Go to client policies profiles tab", () => {
|
||||
realmSettingsPage.shouldDisplayProfilesTab();
|
||||
});
|
||||
|
||||
it("Check new client form is displaying", () => {
|
||||
realmSettingsPage.shouldDisplayNewClientProfileForm();
|
||||
});
|
||||
|
||||
it("Complete new client form and cancel", () => {
|
||||
realmSettingsPage.shouldCompleteAndCancelCreateNewClientProfile();
|
||||
});
|
||||
|
||||
it("Complete new client form and submit", () => {
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientProfile();
|
||||
});
|
||||
|
||||
it("Should perform client profile search by profile name", () => {
|
||||
realmSettingsPage.shouldSearchClientProfile();
|
||||
});
|
||||
|
||||
it("Check cancelling the client profile deletion", () => {
|
||||
realmSettingsPage.shouldDisplayDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Check deleting the client profile", () => {
|
||||
realmSettingsPage.shouldDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Check navigating between Form View and JSON editor", () => {
|
||||
realmSettingsPage.shouldNavigateBetweenFormAndJSONView();
|
||||
});
|
||||
|
||||
it("Check saving changed JSON profiles", () => {
|
||||
realmSettingsPage.shouldSaveChangedJSONProfiles();
|
||||
realmSettingsPage.shouldDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Should not create duplicate client profile", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientProfiles-tab").click();
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientProfile();
|
||||
realmSettingsPage.shouldNotCreateDuplicateClientProfile();
|
||||
});
|
||||
|
||||
it("Should edit client profile", () => {
|
||||
realmSettingsPage.shouldEditClientProfile();
|
||||
});
|
||||
|
||||
it("Should check that edited client profile is now listed", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientProfiles-tab").click();
|
||||
realmSettingsPage.shouldCheckEditedClientProfileListed();
|
||||
});
|
||||
|
||||
it("Should show error when client profile left blank", () => {
|
||||
realmSettingsPage.shouldShowErrorWhenNameBlank();
|
||||
});
|
||||
|
||||
it("Should revert back to the previous profile name", () => {
|
||||
realmSettingsPage.shouldReloadClientProfileEdits();
|
||||
});
|
||||
|
||||
it("Should not have executors configured by default", () => {
|
||||
realmSettingsPage.shouldNotHaveExecutorsConfigured();
|
||||
});
|
||||
|
||||
it("Should cancel adding a new executor to a client profile", () => {
|
||||
realmSettingsPage.shouldCancelAddingExecutor();
|
||||
});
|
||||
|
||||
it("Should add a new executor to a client profile", () => {
|
||||
realmSettingsPage.shouldAddExecutor();
|
||||
});
|
||||
|
||||
it("Should cancel deleting executor from a client profile", () => {
|
||||
realmSettingsPage.shouldCancelDeletingExecutor();
|
||||
});
|
||||
|
||||
it("Should cancel editing executor", () => {
|
||||
realmSettingsPage.shouldCancelEditingExecutor();
|
||||
});
|
||||
|
||||
it("Should edit executor", () => {
|
||||
realmSettingsPage.shouldEditExecutor();
|
||||
});
|
||||
|
||||
it("Should delete executor from a client profile", () => {
|
||||
realmSettingsPage.shouldDeleteExecutor();
|
||||
});
|
||||
|
||||
it("Should delete edited client profile", () => {
|
||||
realmSettingsPage.shouldDeleteEditedProfile();
|
||||
});
|
||||
});
|
364
cypress/integration/realm_settings_events_test.spec.ts
Normal file
364
cypress/integration/realm_settings_events_test.spec.ts
Normal file
|
@ -0,0 +1,364 @@
|
|||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import RealmSettingsPage from "../support/pages/admin_console/manage/realm_settings/RealmSettingsPage";
|
||||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
import AdminClient from "../support/util/AdminClient";
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const masthead = new Masthead();
|
||||
const modalUtils = new ModalUtils();
|
||||
const realmSettingsPage = new RealmSettingsPage();
|
||||
|
||||
describe("Realm settings events tab tests", () => {
|
||||
const realmName = "Realm_" + (Math.random() + 1).toString(36).substring(7);
|
||||
const listingPage = new ListingPage();
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealm(realmName);
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
await new AdminClient().createRealm(realmName);
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await new AdminClient().deleteRealm(realmName);
|
||||
});
|
||||
|
||||
const goToDetails = () => {
|
||||
const keysUrl = `/auth/admin/realms/${realmName}/keys`;
|
||||
cy.intercept(keysUrl).as("keysFetch");
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link")
|
||||
.contains("test_aes-generated")
|
||||
.click();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link")
|
||||
.contains("test_hmac-generated")
|
||||
.click();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link").contains("test_rsa").click();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link")
|
||||
.contains("test_rsa-generated")
|
||||
.click();
|
||||
|
||||
cy.wait(["@keysFetch"]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
const goToKeys = () => {
|
||||
const keysUrl = `/auth/admin/realms/${realmName}/keys`;
|
||||
cy.intercept(keysUrl).as("keysFetch");
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-keys-list-tab").click();
|
||||
cy.wait(["@keysFetch"]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
const addBundle = () => {
|
||||
const localizationUrl = `/auth/admin/realms/${realmName}/localization/en`;
|
||||
cy.intercept(localizationUrl).as("localizationFetch");
|
||||
|
||||
realmSettingsPage.addKeyValuePair(
|
||||
"key_" + (Math.random() + 1).toString(36).substring(7),
|
||||
"value_" + (Math.random() + 1).toString(36).substring(7)
|
||||
);
|
||||
|
||||
cy.wait(["@localizationFetch"]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
it("Enable user events", () => {
|
||||
cy.intercept("GET", `/auth/admin/realms/${realmName}/keys`).as("load");
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-realm-events-tab").click();
|
||||
cy.findByTestId("rs-events-tab").click();
|
||||
cy.wait(["@load"]);
|
||||
realmSettingsPage
|
||||
.toggleSwitch(realmSettingsPage.enableEvents)
|
||||
.save(realmSettingsPage.eventsUserSave);
|
||||
masthead.checkNotificationMessage("Successfully saved configuration");
|
||||
realmSettingsPage.clearEvents("user");
|
||||
modalUtils
|
||||
.checkModalMessage(
|
||||
"If you clear all events of this realm, all records will be permanently cleared in the database"
|
||||
)
|
||||
.confirmModal();
|
||||
masthead.checkNotificationMessage("The user events have been cleared");
|
||||
const events = ["Client info", "Client info error"];
|
||||
cy.intercept("GET", `/auth/admin/realms/${realmName}/events/config`).as(
|
||||
"fetchConfig"
|
||||
);
|
||||
realmSettingsPage.addUserEvents(events).clickAdd();
|
||||
masthead.checkNotificationMessage("Successfully saved configuration");
|
||||
cy.wait(["@fetchConfig"]);
|
||||
sidebarPage.waitForPageLoad();
|
||||
for (const event of events) {
|
||||
listingPage.searchItem(event, false).itemExist(event);
|
||||
}
|
||||
});
|
||||
|
||||
it("Go to keys tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
});
|
||||
|
||||
it("add Providers", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-aes-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_aes-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-ecdsa-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_ecdsa-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-hmac-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_hmac-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-rsa-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_rsa-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
});
|
||||
|
||||
it("go to details", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
goToDetails();
|
||||
});
|
||||
|
||||
it("Test keys", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
goToKeys();
|
||||
|
||||
realmSettingsPage.testSelectFilter();
|
||||
});
|
||||
|
||||
it("add locale", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-localization-tab").click();
|
||||
|
||||
addBundle();
|
||||
|
||||
masthead.checkNotificationMessage(
|
||||
"Success! The localization text has been created."
|
||||
);
|
||||
});
|
||||
|
||||
it("Realm header settings", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.get("#pf-tab-securityDefences-securityDefences").click();
|
||||
cy.findByTestId("headers-form-tab-save").should("be.disabled");
|
||||
cy.get("#xFrameOptions").clear().type("DENY");
|
||||
cy.findByTestId("headers-form-tab-save").should("be.enabled").click();
|
||||
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("Brute force detection", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.get("#pf-tab-securityDefences-securityDefences").click();
|
||||
cy.get("#pf-tab-20-bruteForce").click();
|
||||
|
||||
cy.findByTestId("brute-force-tab-save").should("be.disabled");
|
||||
|
||||
cy.get("#bruteForceProtected").click({ force: true });
|
||||
cy.findByTestId("waitIncrementSeconds").type("1");
|
||||
cy.findByTestId("maxFailureWaitSeconds").type("1");
|
||||
cy.findByTestId("maxDeltaTimeSeconds").type("1");
|
||||
cy.findByTestId("minimumQuickLoginWaitSeconds").type("1");
|
||||
|
||||
cy.findByTestId("brute-force-tab-save").should("be.enabled").click();
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("add session data", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-sessions-tab").click();
|
||||
|
||||
realmSettingsPage.populateSessionsPage();
|
||||
realmSettingsPage.save("sessions-tab-save");
|
||||
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("check that sessions data was saved", () => {
|
||||
sidebarPage.goToAuthentication();
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-sessions-tab").click();
|
||||
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionIdleInput).should(
|
||||
"have.value",
|
||||
1
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionMaxInput).should(
|
||||
"have.value",
|
||||
2
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionIdleRememberMeInput).should(
|
||||
"have.value",
|
||||
3
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionMaxRememberMeInput).should(
|
||||
"have.value",
|
||||
4
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.clientSessionIdleInput).should(
|
||||
"have.value",
|
||||
5
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.clientSessionMaxInput).should(
|
||||
"have.value",
|
||||
6
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.offlineSessionIdleInput).should(
|
||||
"have.value",
|
||||
7
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.offlineSessionMaxSwitch).should(
|
||||
"have.value",
|
||||
"on"
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.loginTimeoutInput).should(
|
||||
"have.value",
|
||||
9
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.loginActionTimeoutInput).should(
|
||||
"have.value",
|
||||
10
|
||||
);
|
||||
});
|
||||
|
||||
it("add token data", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-tokens-tab").click();
|
||||
|
||||
realmSettingsPage.populateTokensPage();
|
||||
realmSettingsPage.save("tokens-tab-save");
|
||||
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("check that token data was saved", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-tokens-tab").click();
|
||||
|
||||
cy.findByTestId(realmSettingsPage.accessTokenLifespanInput).should(
|
||||
"have.value",
|
||||
1
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.accessTokenLifespanImplicitInput).should(
|
||||
"have.value",
|
||||
2
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.clientLoginTimeoutInput).should(
|
||||
"have.value",
|
||||
3
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.userInitiatedActionLifespanInput).should(
|
||||
"have.value",
|
||||
4
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.defaultAdminInitatedInput).should(
|
||||
"have.value",
|
||||
5
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.emailVerificationInput).should(
|
||||
"have.value",
|
||||
6
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.idpEmailVerificationInput).should(
|
||||
"have.value",
|
||||
7
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.forgotPasswordInput).should(
|
||||
"have.value",
|
||||
8
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.executeActionsInput).should(
|
||||
"have.value",
|
||||
9
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Realm settings events tab tests", () => {
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-realm-events-tab").click();
|
||||
cy.findByTestId("rs-event-listeners-tab").click();
|
||||
});
|
||||
|
||||
it("Should display event listeners form", () => {
|
||||
realmSettingsPage.shouldDisplayEventListenersForm();
|
||||
});
|
||||
|
||||
it("Should revert saving event listener", () => {
|
||||
realmSettingsPage.shouldRevertSavingEventListener();
|
||||
});
|
||||
|
||||
it("Should save event listener", () => {
|
||||
realmSettingsPage.shouldSaveEventListener();
|
||||
});
|
||||
|
||||
it("Should remove event from event listener", () => {
|
||||
realmSettingsPage.shouldRemoveEventFromEventListener();
|
||||
});
|
||||
|
||||
it("Should remove all events from event listener and re-save original", () => {
|
||||
realmSettingsPage.shouldSaveEventListener();
|
||||
realmSettingsPage.shouldRemoveAllEventListeners();
|
||||
realmSettingsPage.shouldReSaveEventListener();
|
||||
});
|
||||
});
|
94
cypress/integration/realm_settings_tabs_test.spec.ts
Normal file
94
cypress/integration/realm_settings_tabs_test.spec.ts
Normal file
|
@ -0,0 +1,94 @@
|
|||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import RealmSettingsPage from "../support/pages/admin_console/manage/realm_settings/RealmSettingsPage";
|
||||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import AdminClient from "../support/util/AdminClient";
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const masthead = new Masthead();
|
||||
const realmSettingsPage = new RealmSettingsPage();
|
||||
|
||||
describe("Realm settings tabs tests", () => {
|
||||
const realmName = "Realm_" + (Math.random() + 1).toString(36).substring(7);
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealm(realmName);
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
await new AdminClient().createRealm(realmName);
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await new AdminClient().deleteRealm(realmName);
|
||||
});
|
||||
|
||||
it("Go to general tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
||||
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
||||
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("Go to login tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-login-tab").click();
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.userRegSwitch);
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.forgotPwdSwitch);
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.rememberMeSwitch);
|
||||
});
|
||||
|
||||
it("Check login tab values", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-login-tab").click();
|
||||
|
||||
cy.findByTestId(realmSettingsPage.userRegSwitch).should("have.value", "on");
|
||||
cy.findByTestId(realmSettingsPage.forgotPwdSwitch).should(
|
||||
"have.value",
|
||||
"on"
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.rememberMeSwitch).should(
|
||||
"have.value",
|
||||
"on"
|
||||
);
|
||||
});
|
||||
|
||||
it("Go to email tab", () => {
|
||||
const msg: string = "Error! Failed to send email.";
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-email-tab").click();
|
||||
realmSettingsPage.addSenderEmail("example@example.com");
|
||||
realmSettingsPage.toggleCheck(realmSettingsPage.enableSslCheck);
|
||||
realmSettingsPage.toggleCheck(realmSettingsPage.enableStartTlsCheck);
|
||||
realmSettingsPage.fillHostField("localhost");
|
||||
cy.findByTestId(realmSettingsPage.testConnectionButton).click();
|
||||
|
||||
realmSettingsPage.fillEmailField(
|
||||
"example" + (Math.random() + 1).toString(36).substring(7) + "@example.com"
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.modalTestConnectionButton).click();
|
||||
masthead.checkNotificationMessage(msg, true);
|
||||
});
|
||||
|
||||
it("Go to themes tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.intercept(`/auth/admin/realms/${realmName}/keys`).as("load");
|
||||
|
||||
cy.findByTestId("rs-themes-tab").click();
|
||||
cy.wait(["@load"]);
|
||||
|
||||
realmSettingsPage.selectLoginThemeType("keycloak");
|
||||
realmSettingsPage.selectAccountThemeType("keycloak");
|
||||
realmSettingsPage.selectAdminThemeType("base");
|
||||
realmSettingsPage.selectEmailThemeType("base");
|
||||
|
||||
realmSettingsPage.saveThemes();
|
||||
});
|
||||
});
|
|
@ -1,676 +0,0 @@
|
|||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import LoginPage from "../support/pages/LoginPage";
|
||||
import RealmSettingsPage from "../support/pages/admin_console/manage/realm_settings/RealmSettingsPage";
|
||||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
import AdminClient from "../support/util/AdminClient";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const masthead = new Masthead();
|
||||
const modalUtils = new ModalUtils();
|
||||
const realmSettingsPage = new RealmSettingsPage();
|
||||
|
||||
describe("Realm settings tests", () => {
|
||||
describe("Realm settings tabs tests", () => {
|
||||
const realmName = "Realm_" + (Math.random() + 1).toString(36).substring(7);
|
||||
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealm(realmName);
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
await new AdminClient().createRealm(realmName);
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await new AdminClient().deleteRealm(realmName);
|
||||
});
|
||||
|
||||
const goToKeys = () => {
|
||||
const keysUrl = `/auth/admin/realms/${realmName}/keys`;
|
||||
cy.intercept(keysUrl).as("keysFetch");
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-keys-list-tab").click();
|
||||
cy.wait(["@keysFetch"]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
const goToDetails = () => {
|
||||
const keysUrl = `/auth/admin/realms/${realmName}/keys`;
|
||||
cy.intercept(keysUrl).as("keysFetch");
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link")
|
||||
.contains("test_aes-generated")
|
||||
.click();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link")
|
||||
.contains("test_hmac-generated")
|
||||
.click();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link").contains("test_rsa").click();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
cy.findAllByTestId("provider-name-link")
|
||||
.contains("test_rsa-generated")
|
||||
.click();
|
||||
|
||||
cy.wait(["@keysFetch"]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/*const deleteProvider = (providerName: string) => {
|
||||
const url = `/auth/admin/realms/${realmName}/users/*`;
|
||||
cy.intercept(url).as("reload");
|
||||
cy.findByTestId("provider-name")
|
||||
.contains(providerName)
|
||||
.parentsUntil(".pf-c-data-list__item-row")
|
||||
.find(".pf-c-dropdown__toggle")
|
||||
.click()
|
||||
.findByTestId(realmSettingsPage.deleteAction)
|
||||
.click();
|
||||
cy.findByTestId(realmSettingsPage.modalConfirm).click();
|
||||
|
||||
cy.wait(["@reload"]);
|
||||
return this;
|
||||
};*/
|
||||
|
||||
const addBundle = () => {
|
||||
const localizationUrl = `/auth/admin/realms/${realmName}/localization/en`;
|
||||
cy.intercept(localizationUrl).as("localizationFetch");
|
||||
|
||||
realmSettingsPage.addKeyValuePair(
|
||||
"key_" + (Math.random() + 1).toString(36).substring(7),
|
||||
"value_" + (Math.random() + 1).toString(36).substring(7)
|
||||
);
|
||||
|
||||
cy.wait(["@localizationFetch"]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
it("Go to general tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
||||
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
||||
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("Go to login tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-login-tab").click();
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.userRegSwitch);
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.forgotPwdSwitch);
|
||||
realmSettingsPage.toggleSwitch(realmSettingsPage.rememberMeSwitch);
|
||||
});
|
||||
|
||||
it("Check login tab values", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-login-tab").click();
|
||||
|
||||
cy.get("#kc-user-reg-switch-off").should("be.visible");
|
||||
cy.get("#kc-forgot-pw-switch-off").should("be.visible");
|
||||
cy.get("#kc-remember-me-switch-off").should("not.be.visible");
|
||||
});
|
||||
|
||||
it("Go to email tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-email-tab").click();
|
||||
|
||||
realmSettingsPage.addSenderEmail("example@example.com");
|
||||
|
||||
realmSettingsPage.toggleCheck(realmSettingsPage.enableSslCheck);
|
||||
realmSettingsPage.toggleCheck(realmSettingsPage.enableStartTlsCheck);
|
||||
|
||||
realmSettingsPage.save(realmSettingsPage.emailSaveBtn);
|
||||
|
||||
realmSettingsPage.fillHostField("localhost");
|
||||
cy.findByTestId(realmSettingsPage.testConnectionButton).click();
|
||||
|
||||
realmSettingsPage.fillEmailField(
|
||||
"example" +
|
||||
(Math.random() + 1).toString(36).substring(7) +
|
||||
"@example.com"
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.modalTestConnectionButton).click();
|
||||
|
||||
masthead.checkNotificationMessage("Error! Failed to send email.");
|
||||
});
|
||||
|
||||
it("Go to themes tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.intercept(`/auth/admin/realms/${realmName}/keys`).as("load");
|
||||
|
||||
cy.findByTestId("rs-themes-tab").click();
|
||||
cy.wait(["@load"]);
|
||||
|
||||
realmSettingsPage.selectLoginThemeType("keycloak");
|
||||
realmSettingsPage.selectAccountThemeType("keycloak");
|
||||
realmSettingsPage.selectAdminThemeType("base");
|
||||
realmSettingsPage.selectEmailThemeType("base");
|
||||
|
||||
realmSettingsPage.saveThemes();
|
||||
});
|
||||
|
||||
describe("Events tab", () => {
|
||||
const listingPage = new ListingPage();
|
||||
it("Enable user events", () => {
|
||||
cy.intercept("GET", `/auth/admin/realms/${realmName}/keys`).as("load");
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-realm-events-tab").click();
|
||||
cy.findByTestId("rs-events-tab").click();
|
||||
cy.wait(["@load"]);
|
||||
realmSettingsPage
|
||||
.toggleSwitch(realmSettingsPage.enableEvents)
|
||||
.save(realmSettingsPage.eventsUserSave);
|
||||
masthead.checkNotificationMessage("Successfully saved configuration");
|
||||
realmSettingsPage.clearEvents("user");
|
||||
modalUtils
|
||||
.checkModalMessage(
|
||||
"If you clear all events of this realm, all records will be permanently cleared in the database"
|
||||
)
|
||||
.confirmModal();
|
||||
masthead.checkNotificationMessage("The user events have been cleared");
|
||||
const events = ["Client info", "Client info error"];
|
||||
cy.intercept("GET", `/auth/admin/realms/${realmName}/events/config`).as(
|
||||
"fetchConfig"
|
||||
);
|
||||
realmSettingsPage.addUserEvents(events).clickAdd();
|
||||
masthead.checkNotificationMessage("Successfully saved configuration");
|
||||
cy.wait(["@fetchConfig"]);
|
||||
sidebarPage.waitForPageLoad();
|
||||
for (const event of events) {
|
||||
listingPage.searchItem(event, false).itemExist(event);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it("Go to keys tab", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
});
|
||||
|
||||
it("add Providers", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-aes-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_aes-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-ecdsa-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_ecdsa-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-hmac-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_hmac-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
|
||||
realmSettingsPage.toggleAddProviderDropdown();
|
||||
|
||||
cy.findByTestId("option-rsa-generated").click();
|
||||
realmSettingsPage.enterConsoleDisplayName("test_rsa-generated");
|
||||
realmSettingsPage.addProvider();
|
||||
});
|
||||
|
||||
it("go to details", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
goToDetails();
|
||||
});
|
||||
|
||||
/*it("delete providers", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
const url = `/auth/admin/realms/${realmName}/keys`;
|
||||
cy.intercept(url).as("load");
|
||||
|
||||
cy.findByTestId("rs-keys-tab").click();
|
||||
cy.findByTestId("rs-providers-tab").click();
|
||||
|
||||
cy.wait("@load");
|
||||
|
||||
deleteProvider("test_aes-generated");
|
||||
deleteProvider("test_ecdsa-generated");
|
||||
deleteProvider("test_hmac-generated");
|
||||
deleteProvider("test_rsa-generated");
|
||||
});*/
|
||||
|
||||
it("Test keys", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
goToKeys();
|
||||
|
||||
realmSettingsPage.testSelectFilter();
|
||||
});
|
||||
|
||||
it("add locale", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-localization-tab").click();
|
||||
|
||||
addBundle();
|
||||
|
||||
masthead.checkNotificationMessage(
|
||||
"Success! The localization text has been created."
|
||||
);
|
||||
});
|
||||
|
||||
it("Realm header settings", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.get("#pf-tab-securityDefences-securityDefences").click();
|
||||
cy.findByTestId("headers-form-tab-save").should("be.disabled");
|
||||
cy.get("#xFrameOptions").clear().type("DENY");
|
||||
cy.findByTestId("headers-form-tab-save").should("be.enabled").click();
|
||||
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("Brute force detection", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.get("#pf-tab-securityDefences-securityDefences").click();
|
||||
cy.get("#pf-tab-20-bruteForce").click();
|
||||
|
||||
cy.findByTestId("brute-force-tab-save").should("be.disabled");
|
||||
|
||||
cy.get("#bruteForceProtected").click({ force: true });
|
||||
cy.findByTestId("waitIncrementSeconds").type("1");
|
||||
cy.findByTestId("maxFailureWaitSeconds").type("1");
|
||||
cy.findByTestId("maxDeltaTimeSeconds").type("1");
|
||||
cy.findByTestId("minimumQuickLoginWaitSeconds").type("1");
|
||||
|
||||
cy.findByTestId("brute-force-tab-save").should("be.enabled").click();
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("add session data", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-sessions-tab").click();
|
||||
|
||||
realmSettingsPage.populateSessionsPage();
|
||||
realmSettingsPage.save("sessions-tab-save");
|
||||
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("check that sessions data was saved", () => {
|
||||
sidebarPage.goToAuthentication();
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-sessions-tab").click();
|
||||
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionIdleInput).should(
|
||||
"have.value",
|
||||
1
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionMaxInput).should(
|
||||
"have.value",
|
||||
2
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionIdleRememberMeInput).should(
|
||||
"have.value",
|
||||
3
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.ssoSessionMaxRememberMeInput).should(
|
||||
"have.value",
|
||||
4
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.clientSessionIdleInput).should(
|
||||
"have.value",
|
||||
5
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.clientSessionMaxInput).should(
|
||||
"have.value",
|
||||
6
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.offlineSessionIdleInput).should(
|
||||
"have.value",
|
||||
7
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.offlineSessionMaxSwitch).should(
|
||||
"have.value",
|
||||
"on"
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.loginTimeoutInput).should(
|
||||
"have.value",
|
||||
9
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.loginActionTimeoutInput).should(
|
||||
"have.value",
|
||||
10
|
||||
);
|
||||
});
|
||||
|
||||
it("add token data", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-tokens-tab").click();
|
||||
|
||||
realmSettingsPage.populateTokensPage();
|
||||
realmSettingsPage.save("tokens-tab-save");
|
||||
|
||||
masthead.checkNotificationMessage("Realm successfully updated");
|
||||
});
|
||||
|
||||
it("check that token data was saved", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
|
||||
cy.findByTestId("rs-tokens-tab").click();
|
||||
|
||||
cy.findByTestId(realmSettingsPage.accessTokenLifespanInput).should(
|
||||
"have.value",
|
||||
1
|
||||
);
|
||||
cy.findByTestId(
|
||||
realmSettingsPage.accessTokenLifespanImplicitInput
|
||||
).should("have.value", 2);
|
||||
cy.findByTestId(realmSettingsPage.clientLoginTimeoutInput).should(
|
||||
"have.value",
|
||||
3
|
||||
);
|
||||
cy.findByTestId(
|
||||
realmSettingsPage.userInitiatedActionLifespanInput
|
||||
).should("have.value", 4);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.defaultAdminInitatedInput).should(
|
||||
"have.value",
|
||||
5
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.emailVerificationInput).should(
|
||||
"have.value",
|
||||
6
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.idpEmailVerificationInput).should(
|
||||
"have.value",
|
||||
7
|
||||
);
|
||||
cy.findByTestId(realmSettingsPage.forgotPasswordInput).should(
|
||||
"have.value",
|
||||
8
|
||||
);
|
||||
|
||||
cy.findByTestId(realmSettingsPage.executeActionsInput).should(
|
||||
"have.value",
|
||||
9
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Realm settings events tab tests", () => {
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-realm-events-tab").click();
|
||||
cy.findByTestId("rs-event-listeners-tab").click();
|
||||
});
|
||||
|
||||
it("Should display event listeners form", () => {
|
||||
realmSettingsPage.shouldDisplayEventListenersForm();
|
||||
});
|
||||
|
||||
it("Should revert saving event listener", () => {
|
||||
realmSettingsPage.shouldRevertSavingEventListener();
|
||||
});
|
||||
|
||||
it("Should save event listener", () => {
|
||||
realmSettingsPage.shouldSaveEventListener();
|
||||
});
|
||||
|
||||
it("Should remove event from event listener", () => {
|
||||
realmSettingsPage.shouldRemoveEventFromEventListener();
|
||||
});
|
||||
|
||||
it("Should remove all events from event listener and re-save original", () => {
|
||||
realmSettingsPage.shouldSaveEventListener();
|
||||
realmSettingsPage.shouldRemoveAllEventListeners();
|
||||
realmSettingsPage.shouldReSaveEventListener();
|
||||
});
|
||||
});
|
||||
|
||||
describe("Realm settings client profiles tab tests", () => {
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientProfiles-tab").click();
|
||||
});
|
||||
|
||||
it("Go to client policies profiles tab", () => {
|
||||
realmSettingsPage.shouldDisplayProfilesTab();
|
||||
});
|
||||
|
||||
it("Check new client form is displaying", () => {
|
||||
realmSettingsPage.shouldDisplayNewClientProfileForm();
|
||||
});
|
||||
|
||||
it("Complete new client form and cancel", () => {
|
||||
realmSettingsPage.shouldCompleteAndCancelCreateNewClientProfile();
|
||||
});
|
||||
|
||||
it("Complete new client form and submit", () => {
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientProfile();
|
||||
});
|
||||
|
||||
it("Should perform client profile search by profile name", () => {
|
||||
realmSettingsPage.shouldSearchClientProfile();
|
||||
});
|
||||
|
||||
it("Check cancelling the client profile deletion", () => {
|
||||
realmSettingsPage.shouldDisplayDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Check deleting the client profile", () => {
|
||||
realmSettingsPage.shouldDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Check navigating between Form View and JSON editor", () => {
|
||||
realmSettingsPage.shouldNavigateBetweenFormAndJSONView();
|
||||
});
|
||||
|
||||
it("Check saving changed JSON profiles", () => {
|
||||
realmSettingsPage.shouldSaveChangedJSONProfiles();
|
||||
realmSettingsPage.shouldDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Should not create duplicate client profile", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientProfiles-tab").click();
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientProfile();
|
||||
realmSettingsPage.shouldNotCreateDuplicateClientProfile();
|
||||
});
|
||||
|
||||
it("Should edit client profile", () => {
|
||||
realmSettingsPage.shouldEditClientProfile();
|
||||
});
|
||||
|
||||
it("Should check that edited client profile is now listed", () => {
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientProfiles-tab").click();
|
||||
realmSettingsPage.shouldCheckEditedClientProfileListed();
|
||||
});
|
||||
|
||||
it("Should show error when client profile left blank", () => {
|
||||
realmSettingsPage.shouldShowErrorWhenNameBlank();
|
||||
});
|
||||
|
||||
it("Should revert back to the previous profile name", () => {
|
||||
realmSettingsPage.shouldReloadClientProfileEdits();
|
||||
});
|
||||
|
||||
it("Should not have executors configured by default", () => {
|
||||
realmSettingsPage.shouldNotHaveExecutorsConfigured();
|
||||
});
|
||||
|
||||
it("Should cancel adding a new executor to a client profile", () => {
|
||||
realmSettingsPage.shouldCancelAddingExecutor();
|
||||
});
|
||||
|
||||
it("Should add a new executor to a client profile", () => {
|
||||
realmSettingsPage.shouldAddExecutor();
|
||||
});
|
||||
|
||||
it("Should cancel deleting executor from a client profile", () => {
|
||||
realmSettingsPage.shouldCancelDeletingExecutor();
|
||||
});
|
||||
|
||||
it("Should cancel editing executor", () => {
|
||||
realmSettingsPage.shouldCancelEditingExecutor();
|
||||
});
|
||||
|
||||
it("Should edit executor", () => {
|
||||
realmSettingsPage.shouldEditExecutor();
|
||||
});
|
||||
|
||||
it("Should delete executor from a client profile", () => {
|
||||
realmSettingsPage.shouldDeleteExecutor();
|
||||
});
|
||||
|
||||
it("Should delete edited client profile", () => {
|
||||
realmSettingsPage.shouldDeleteEditedProfile();
|
||||
});
|
||||
});
|
||||
|
||||
describe("Realm settings client policies tab tests", () => {
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientPolicies-tab").click();
|
||||
});
|
||||
|
||||
it("Go to client policies tab", () => {
|
||||
realmSettingsPage.shouldDisplayPoliciesTab();
|
||||
});
|
||||
|
||||
it("Check new client form is displaying", () => {
|
||||
realmSettingsPage.shouldDisplayNewClientPolicyForm();
|
||||
});
|
||||
|
||||
it("Complete new client form and cancel", () => {
|
||||
realmSettingsPage.shouldCompleteAndCancelCreateNewClientPolicy();
|
||||
});
|
||||
|
||||
it("Complete new client form and submit", () => {
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientPolicyFromEmptyState();
|
||||
});
|
||||
|
||||
it("Should perform client profile search by profile name", () => {
|
||||
realmSettingsPage.shouldSearchClientPolicy();
|
||||
});
|
||||
|
||||
it("Should not have conditions configured by default", () => {
|
||||
realmSettingsPage.shouldNotHaveConditionsConfigured();
|
||||
});
|
||||
|
||||
it("Should cancel adding a new condition to a client profile", () => {
|
||||
realmSettingsPage.shouldCancelAddingCondition();
|
||||
});
|
||||
|
||||
it("Should add a new client-roles condition to a client profile", () => {
|
||||
realmSettingsPage.shouldAddClientRolesCondition();
|
||||
});
|
||||
|
||||
it("Should add a new client-scopes condition to a client profile", () => {
|
||||
realmSettingsPage.shouldAddClientScopesCondition();
|
||||
});
|
||||
|
||||
it("Should edit the client-roles condition of a client profile", () => {
|
||||
realmSettingsPage.shouldEditClientRolesCondition();
|
||||
});
|
||||
|
||||
it("Should edit the client-scopes condition of a client profile", () => {
|
||||
realmSettingsPage.shouldEditClientScopesCondition();
|
||||
});
|
||||
|
||||
it("Should cancel deleting condition from a client profile", () => {
|
||||
realmSettingsPage.shouldCancelDeletingCondition();
|
||||
});
|
||||
|
||||
it("Should delete client-roles condition from a client profile", () => {
|
||||
realmSettingsPage.shouldDeleteClientRolesCondition();
|
||||
});
|
||||
|
||||
it("Should delete client-scopes condition from a client profile", () => {
|
||||
realmSettingsPage.shouldDeleteClientScopesCondition();
|
||||
});
|
||||
|
||||
it("Check cancelling the client policy deletion", () => {
|
||||
realmSettingsPage.shouldDisplayDeleteClientPolicyDialog();
|
||||
});
|
||||
|
||||
it("Check deleting the client policy", () => {
|
||||
realmSettingsPage.shouldDeleteClientPolicyDialog();
|
||||
});
|
||||
|
||||
it("Check navigating between Form View and JSON editor", () => {
|
||||
realmSettingsPage.shouldNavigateBetweenFormAndJSONViewPolicies();
|
||||
});
|
||||
|
||||
/* it("Check saving changed JSON policies", () => {
|
||||
realmSettingsPage.shouldSaveChangedJSONPolicies();
|
||||
realmSettingsPage.shouldDeleteClientPolicyDialog();
|
||||
}); */
|
||||
|
||||
it("Should not create duplicate client profile", () => {
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientPolicyFromEmptyState();
|
||||
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientPolicies-tab").click();
|
||||
realmSettingsPage.shouldCompleteAndCreateNewClientPolicy();
|
||||
realmSettingsPage.shouldNotCreateDuplicateClientPolicy();
|
||||
cy.wait(200);
|
||||
sidebarPage.goToRealmSettings();
|
||||
cy.findByTestId("rs-clientPolicies-tab").click();
|
||||
cy.findByTestId("rs-policies-clientPolicies-tab").click();
|
||||
realmSettingsPage.shouldDeleteClientProfileDialog();
|
||||
});
|
||||
|
||||
it("Check deleting newly created client policy from create view via dropdown", () => {
|
||||
realmSettingsPage.shouldRemoveClientPolicyFromCreateView();
|
||||
});
|
||||
|
||||
it("Check reloading JSON policies", () => {
|
||||
realmSettingsPage.shouldReloadJSONPolicies();
|
||||
});
|
||||
});
|
||||
});
|
|
@ -88,20 +88,18 @@ describe("User Fed Kerberos tests", () => {
|
|||
it("Change existing Kerberos provider and click button to cancel", () => {
|
||||
providersPage.clickExistingCard(firstKerberosName);
|
||||
providersPage.selectCacheType(newPolicy);
|
||||
|
||||
providersPage.changeCacheTime("day", defaultKerberosDay);
|
||||
providersPage.changeCacheTime("hour", defaultKerberosHour);
|
||||
providersPage.changeCacheTime("minute", defaultKerberosMinute);
|
||||
|
||||
providersPage.cancel(provider);
|
||||
cy.wait(1000);
|
||||
|
||||
providersPage.clickExistingCard(firstKerberosName);
|
||||
providersPage.selectCacheType(newPolicy);
|
||||
|
||||
expect(cy.contains(newKerberosDay).should("exist"));
|
||||
expect(cy.contains(newKerberosHour).should("exist"));
|
||||
expect(cy.contains(newKerberosMinute).should("exist"));
|
||||
expect(cy.contains(defaultKerberosMinute).should("not.exist"));
|
||||
|
||||
providersPage.verifyChangedHourInput(newKerberosHour, defaultKerberosHour);
|
||||
sidebarPage.goToUserFederation();
|
||||
});
|
||||
|
||||
|
|
228
cypress/integration/user_fed_ldap_hardcoded_mapper_test.spec.ts
Normal file
228
cypress/integration/user_fed_ldap_hardcoded_mapper_test.spec.ts
Normal file
|
@ -0,0 +1,228 @@
|
|||
import LoginPage from "../support/pages/LoginPage";
|
||||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
import GroupModal from "../support/pages/admin_console/manage/groups/GroupModal";
|
||||
import ProviderPage from "../support/pages/admin_console/manage/providers/ProviderPage";
|
||||
import CreateClientPage from "../support/pages/admin_console/manage/clients/CreateClientPage";
|
||||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const masthead = new Masthead();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const listingPage = new ListingPage();
|
||||
const groupModal = new GroupModal();
|
||||
const createClientPage = new CreateClientPage();
|
||||
|
||||
const providersPage = new ProviderPage();
|
||||
const modalUtils = new ModalUtils();
|
||||
|
||||
const provider = "ldap";
|
||||
const allCapProvider = provider.toUpperCase();
|
||||
|
||||
const ldapName = "ldap-mappers-testing";
|
||||
const ldapVendor = "Active Directory";
|
||||
|
||||
const connectionUrl = "ldap://";
|
||||
const firstBindType = "simple";
|
||||
const firstBindDn = "user-1";
|
||||
const firstBindCreds = "password1";
|
||||
|
||||
const firstEditMode = "READ_ONLY";
|
||||
const firstUsersDn = "user-dn-1";
|
||||
const firstUserLdapAtt = "uid";
|
||||
const firstRdnLdapAtt = "uid";
|
||||
const firstUuidLdapAtt = "entryUUID";
|
||||
const firstUserObjClasses = "inetOrgPerson, organizationalPerson";
|
||||
|
||||
const addProviderMenu = "Add new provider";
|
||||
const providerCreatedSuccess = "User federation provider successfully created";
|
||||
const mapperCreatedSuccess = "Mapping successfully created";
|
||||
const providerDeleteSuccess = "The user federation provider has been deleted.";
|
||||
const providerDeleteTitle = "Delete user federation provider?";
|
||||
const mapperDeletedSuccess = "Mapping successfully deleted";
|
||||
const mapperDeleteTitle = "Delete mapping?";
|
||||
const groupDeleteTitle = "Delete group?";
|
||||
const groupCreatedSuccess = "Group created";
|
||||
const groupDeletedSuccess = "Group deleted";
|
||||
const clientCreatedSuccess = "Client created successfully";
|
||||
const clientDeletedSuccess = "The client has been deleted";
|
||||
const roleCreatedSuccess = "Role created";
|
||||
const groupName = "aa-uf-mappers-group";
|
||||
const clientName = "aa-uf-mappers-client";
|
||||
const roleName = "aa-uf-mappers-role";
|
||||
|
||||
// mapperType variables
|
||||
const hcAttMapper = "hardcoded-attribute-mapper";
|
||||
const hcLdapGroupMapper = "hardcoded-ldap-group-mapper";
|
||||
const hcLdapAttMapper = "hardcoded-ldap-attribute-mapper";
|
||||
const roleLdapMapper = "role-ldap-mapper";
|
||||
const hcLdapRoleMapper = "hardcoded-ldap-role-mapper";
|
||||
|
||||
// Used by "Delete default mappers" test
|
||||
const creationDateMapper = "creation date";
|
||||
const emailMapper = "email";
|
||||
const lastNameMapper = "last name";
|
||||
const modifyDateMapper = "modify date";
|
||||
|
||||
describe("User Fed LDAP mapper tests", () => {
|
||||
beforeEach(() => {
|
||||
keycloakBefore();
|
||||
loginPage.logIn();
|
||||
sidebarPage.goToUserFederation();
|
||||
});
|
||||
|
||||
it("Create LDAP provider from empty state", () => {
|
||||
// if tests don't start at empty state, e.g. user has providers configured locally,
|
||||
// create a new card from the card view instead
|
||||
cy.get("body").then(($body) => {
|
||||
if ($body.find(`[data-testid=ldap-card]`).length > 0) {
|
||||
providersPage.clickNewCard(provider);
|
||||
} else {
|
||||
providersPage.clickMenuCommand(addProviderMenu, allCapProvider);
|
||||
}
|
||||
});
|
||||
providersPage.fillLdapRequiredGeneralData(ldapName, ldapVendor);
|
||||
providersPage.fillLdapRequiredConnectionData(
|
||||
connectionUrl,
|
||||
firstBindType,
|
||||
firstBindDn,
|
||||
firstBindCreds
|
||||
);
|
||||
providersPage.fillLdapRequiredSearchingData(
|
||||
firstEditMode,
|
||||
firstUsersDn,
|
||||
firstUserLdapAtt,
|
||||
firstRdnLdapAtt,
|
||||
firstUuidLdapAtt,
|
||||
firstUserObjClasses
|
||||
);
|
||||
providersPage.save(provider);
|
||||
masthead.checkNotificationMessage(providerCreatedSuccess);
|
||||
sidebarPage.goToUserFederation();
|
||||
});
|
||||
|
||||
// create a new group
|
||||
it("Create group", () => {
|
||||
sidebarPage.goToGroups();
|
||||
groupModal
|
||||
.open("no-groups-in-this-realm-empty-action")
|
||||
.fillGroupForm(groupName)
|
||||
.clickCreate();
|
||||
|
||||
masthead.checkNotificationMessage(groupCreatedSuccess);
|
||||
});
|
||||
|
||||
// create a new client and then new role for that client
|
||||
it("Create client and role", () => {
|
||||
sidebarPage.goToClients();
|
||||
listingPage.goToCreateItem();
|
||||
createClientPage
|
||||
.selectClientType("openid-connect")
|
||||
.fillClientData(clientName)
|
||||
.continue()
|
||||
.continue();
|
||||
|
||||
masthead.checkNotificationMessage(clientCreatedSuccess);
|
||||
|
||||
providersPage.createRole(roleName);
|
||||
masthead.checkNotificationMessage(roleCreatedSuccess);
|
||||
|
||||
sidebarPage.goToClients();
|
||||
listingPage.searchItem(clientName).itemExist(clientName);
|
||||
});
|
||||
|
||||
// delete four default mappers
|
||||
it("Delete default mappers", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
|
||||
listingPage.itemExist(creationDateMapper).deleteItem(creationDateMapper);
|
||||
modalUtils.checkModalTitle(mapperDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(mapperDeletedSuccess, true);
|
||||
listingPage.itemExist(creationDateMapper, false);
|
||||
|
||||
listingPage.itemExist(emailMapper).deleteItem(emailMapper);
|
||||
modalUtils.checkModalTitle(mapperDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(mapperDeletedSuccess, true);
|
||||
listingPage.itemExist(emailMapper, false);
|
||||
|
||||
listingPage.itemExist(lastNameMapper).deleteItem(lastNameMapper);
|
||||
modalUtils.checkModalTitle(mapperDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(mapperDeletedSuccess, true);
|
||||
listingPage.itemExist(lastNameMapper, false);
|
||||
|
||||
listingPage.itemExist(modifyDateMapper).deleteItem(modifyDateMapper);
|
||||
modalUtils.checkModalTitle(mapperDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(mapperDeletedSuccess, true);
|
||||
listingPage.itemExist(modifyDateMapper, false);
|
||||
});
|
||||
|
||||
// create one of each hardcoded mapper type
|
||||
it("Create hardcoded attribute mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcAttMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcAttMapper, true);
|
||||
});
|
||||
|
||||
it("Create hardcoded ldap group mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcLdapGroupMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcLdapGroupMapper, true);
|
||||
});
|
||||
|
||||
it("Create hardcoded ldap attribute mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcLdapAttMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcLdapAttMapper, true);
|
||||
});
|
||||
|
||||
it("Create hardcoded ldap role mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcLdapRoleMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcLdapRoleMapper, true);
|
||||
});
|
||||
|
||||
it("Create role ldap mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(roleLdapMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(roleLdapMapper, true);
|
||||
});
|
||||
|
||||
// *** test cleanup ***
|
||||
it("Cleanup - delete LDAP provider", () => {
|
||||
providersPage.deleteCardFromMenu(provider, ldapName);
|
||||
modalUtils.checkModalTitle(providerDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(providerDeleteSuccess);
|
||||
});
|
||||
|
||||
it("Cleanup - delete group", () => {
|
||||
sidebarPage.goToGroups();
|
||||
listingPage.deleteItem(groupName);
|
||||
modalUtils.checkModalTitle(groupDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(groupDeletedSuccess);
|
||||
});
|
||||
|
||||
it("Cleanup - delete client", () => {
|
||||
sidebarPage.goToClients();
|
||||
listingPage.deleteItem(clientName);
|
||||
modalUtils.checkModalTitle(`Delete ${clientName} ?`).confirmModal();
|
||||
masthead.checkNotificationMessage(clientDeletedSuccess);
|
||||
});
|
||||
});
|
|
@ -1,9 +1,7 @@
|
|||
import LoginPage from "../support/pages/LoginPage";
|
||||
import SidebarPage from "../support/pages/admin_console/SidebarPage";
|
||||
import ListingPage from "../support/pages/admin_console/ListingPage";
|
||||
import GroupModal from "../support/pages/admin_console/manage/groups/GroupModal";
|
||||
import ProviderPage from "../support/pages/admin_console/manage/providers/ProviderPage";
|
||||
import CreateClientPage from "../support/pages/admin_console/manage/clients/CreateClientPage";
|
||||
import Masthead from "../support/pages/admin_console/Masthead";
|
||||
import ModalUtils from "../support/util/ModalUtils";
|
||||
import { keycloakBefore } from "../support/util/keycloak_before";
|
||||
|
@ -12,8 +10,6 @@ const loginPage = new LoginPage();
|
|||
const masthead = new Masthead();
|
||||
const sidebarPage = new SidebarPage();
|
||||
const listingPage = new ListingPage();
|
||||
const groupModal = new GroupModal();
|
||||
const createClientPage = new CreateClientPage();
|
||||
|
||||
const providersPage = new ProviderPage();
|
||||
const modalUtils = new ModalUtils();
|
||||
|
@ -44,29 +40,14 @@ const providerDeleteSuccess = "The user federation provider has been deleted.";
|
|||
const providerDeleteTitle = "Delete user federation provider?";
|
||||
const mapperDeletedSuccess = "Mapping successfully deleted";
|
||||
const mapperDeleteTitle = "Delete mapping?";
|
||||
const groupDeleteTitle = "Delete group?";
|
||||
const groupCreatedSuccess = "Group created";
|
||||
const groupDeletedSuccess = "Group deleted";
|
||||
const clientCreatedSuccess = "Client created successfully";
|
||||
const clientDeletedSuccess = "The client has been deleted";
|
||||
const roleCreatedSuccess = "Role created";
|
||||
const groupName = "aa-uf-mappers-group";
|
||||
const clientName = "aa-uf-mappers-client";
|
||||
const roleName = "aa-uf-mappers-role";
|
||||
|
||||
// mapperType variables
|
||||
const msadUserAcctMapper = "msad-user-account-control-mapper";
|
||||
const msadLdsUserAcctMapper = "msad-lds-user-account-control-mapper";
|
||||
const userAttLdapMapper = "user-attribute-ldap-mapper";
|
||||
const hcAttMapper = "hardcoded-attribute-mapper";
|
||||
const certLdapMapper = "certificate-ldap-mapper";
|
||||
const fullNameLdapMapper = "full-name-ldap-mapper";
|
||||
const hcLdapGroupMapper = "hardcoded-ldap-group-mapper";
|
||||
const hcLdapAttMapper = "hardcoded-ldap-attribute-mapper";
|
||||
|
||||
const groupLdapMapper = "group-ldap-mapper";
|
||||
const roleLdapMapper = "role-ldap-mapper";
|
||||
const hcLdapRoleMapper = "hardcoded-ldap-role-mapper";
|
||||
|
||||
// Used by "Delete default mappers" test
|
||||
const creationDateMapper = "creation date";
|
||||
|
@ -114,36 +95,6 @@ describe("User Fed LDAP mapper tests", () => {
|
|||
sidebarPage.goToUserFederation();
|
||||
});
|
||||
|
||||
// create a new group
|
||||
it("Create group", () => {
|
||||
sidebarPage.goToGroups();
|
||||
groupModal
|
||||
.open("no-groups-in-this-realm-empty-action")
|
||||
.fillGroupForm(groupName)
|
||||
.clickCreate();
|
||||
|
||||
masthead.checkNotificationMessage(groupCreatedSuccess);
|
||||
});
|
||||
|
||||
// create a new client and then new role for that client
|
||||
it("Create client and role", () => {
|
||||
sidebarPage.goToClients();
|
||||
listingPage.goToCreateItem();
|
||||
createClientPage
|
||||
.selectClientType("openid-connect")
|
||||
.fillClientData(clientName)
|
||||
.continue()
|
||||
.continue();
|
||||
|
||||
masthead.checkNotificationMessage(clientCreatedSuccess);
|
||||
|
||||
providersPage.createRole(roleName);
|
||||
masthead.checkNotificationMessage(roleCreatedSuccess);
|
||||
|
||||
sidebarPage.goToClients();
|
||||
listingPage.searchItem(clientName).itemExist(clientName);
|
||||
});
|
||||
|
||||
// delete default mappers
|
||||
it("Delete default mappers", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
|
@ -183,7 +134,7 @@ describe("User Fed LDAP mapper tests", () => {
|
|||
.itemExist(MsadAccountControlsMapper)
|
||||
.deleteItem(MsadAccountControlsMapper);
|
||||
modalUtils.checkModalTitle(mapperDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(mapperDeletedSuccess);
|
||||
masthead.checkNotificationMessage(mapperDeletedSuccess, true);
|
||||
});
|
||||
|
||||
// mapper CRUD tests
|
||||
|
@ -256,15 +207,6 @@ describe("User Fed LDAP mapper tests", () => {
|
|||
listingPage.itemExist(userAttLdapMapper, true);
|
||||
});
|
||||
|
||||
it("Create hardcoded attribute mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcAttMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcAttMapper, true);
|
||||
});
|
||||
|
||||
it("Create full name ldap mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
|
@ -274,24 +216,6 @@ describe("User Fed LDAP mapper tests", () => {
|
|||
listingPage.itemExist(fullNameLdapMapper, true);
|
||||
});
|
||||
|
||||
it("Create hardcoded ldap group mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcLdapGroupMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcLdapGroupMapper, true);
|
||||
});
|
||||
|
||||
it("Create hardcoded ldap attribute mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcLdapAttMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcLdapAttMapper, true);
|
||||
});
|
||||
|
||||
it("Create group ldap mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
|
@ -299,24 +223,6 @@ describe("User Fed LDAP mapper tests", () => {
|
|||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(groupLdapMapper, true);
|
||||
|
||||
it("Create hardcoded ldap role mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(hcLdapRoleMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(hcLdapRoleMapper, true);
|
||||
});
|
||||
|
||||
it("Create role ldap mapper", () => {
|
||||
providersPage.clickExistingCard(ldapName);
|
||||
providersPage.goToMappers();
|
||||
providersPage.createNewMapper(roleLdapMapper);
|
||||
providersPage.save("ldap-mapper");
|
||||
masthead.checkNotificationMessage(mapperCreatedSuccess);
|
||||
listingPage.itemExist(roleLdapMapper, true);
|
||||
});
|
||||
});
|
||||
|
||||
// *** test cleanup ***
|
||||
|
@ -325,18 +231,4 @@ describe("User Fed LDAP mapper tests", () => {
|
|||
modalUtils.checkModalTitle(providerDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(providerDeleteSuccess);
|
||||
});
|
||||
|
||||
it("Cleanup - delete group", () => {
|
||||
sidebarPage.goToGroups();
|
||||
listingPage.deleteItem(groupName);
|
||||
modalUtils.checkModalTitle(groupDeleteTitle).confirmModal();
|
||||
masthead.checkNotificationMessage(groupDeletedSuccess);
|
||||
});
|
||||
|
||||
it("Cleanup - delete client", () => {
|
||||
sidebarPage.goToClients();
|
||||
listingPage.deleteItem(clientName);
|
||||
modalUtils.checkModalTitle(`Delete ${clientName} ?`).confirmModal();
|
||||
masthead.checkNotificationMessage(clientDeletedSuccess);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -128,10 +128,7 @@ describe("User Fed LDAP tests", () => {
|
|||
providersPage.clickExistingCard(firstLdapName);
|
||||
providersPage.selectCacheType(newPolicy);
|
||||
|
||||
expect(cy.contains(newLdapDay).should("exist"));
|
||||
expect(cy.contains(newLdapHour).should("exist"));
|
||||
expect(cy.contains(newLdapMinute).should("exist"));
|
||||
expect(cy.contains(defaultLdapMinute).should("not.exist"));
|
||||
providersPage.verifyChangedHourInput(newLdapHour, defaultLdapHour);
|
||||
|
||||
sidebarPage.goToUserFederation();
|
||||
});
|
||||
|
|
|
@ -28,6 +28,8 @@ const configurePlugins: Cypress.PluginConfig = (on) => {
|
|||
}),
|
||||
],
|
||||
};
|
||||
const _ = require("lodash");
|
||||
const del = require("del");
|
||||
|
||||
on(
|
||||
"file:preprocessor",
|
||||
|
@ -36,6 +38,18 @@ const configurePlugins: Cypress.PluginConfig = (on) => {
|
|||
webpackOptions,
|
||||
})
|
||||
);
|
||||
on("after:spec", (spec, results) => {
|
||||
if (results?.video) {
|
||||
// Do we have failures for any retry attempts?
|
||||
const failures = _.some(results.tests, (test: any) => {
|
||||
return _.some(test.attempts, { state: "failed" });
|
||||
});
|
||||
if (!failures) {
|
||||
// delete the video if the spec passed and no tests retried
|
||||
return del(results.video);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export default configurePlugins;
|
||||
|
|
|
@ -101,6 +101,14 @@ export default class ProviderPage {
|
|||
return this;
|
||||
}
|
||||
|
||||
verifyChangedHourInput(expected: string, unexpected: string) {
|
||||
expect(cy.get(this.cacheHourInput).contains(expected).should("exist"));
|
||||
expect(
|
||||
cy.get(this.cacheHourInput).contains(unexpected).should("not.exist")
|
||||
);
|
||||
return this;
|
||||
}
|
||||
|
||||
deleteCardFromCard(card: string) {
|
||||
cy.get(`[data-testid=${card}-dropdown]`).click();
|
||||
cy.get('[data-testid="card-delete"]').click();
|
||||
|
|
|
@ -190,6 +190,7 @@ export default class RealmSettingsPage {
|
|||
private addExecutorSaveBtn = "addExecutor-saveBtn";
|
||||
private availablePeriodExecutorFld = "available-period";
|
||||
private editExecutor = "editExecutor";
|
||||
|
||||
private listingPage = new ListingPage();
|
||||
private addCondition = "addCondition";
|
||||
private addConditionDrpDwn = ".pf-c-select__toggle";
|
||||
|
@ -766,7 +767,8 @@ export default class RealmSettingsPage {
|
|||
shouldCancelEditingExecutor() {
|
||||
cy.get(this.clientProfileTwo).click();
|
||||
cy.findByTestId(this.editExecutor).first().click();
|
||||
cy.get('a[data-testid="addExecutor-cancelBtn"]').click();
|
||||
|
||||
cy.findByTestId(this.addExecutorCancelBtn).click();
|
||||
cy.get('ul[class*="pf-c-data-list"]').should(
|
||||
"have.text",
|
||||
"secure-ciba-signed-authn-req"
|
||||
|
|
182
package-lock.json
generated
182
package-lock.json
generated
|
@ -14,6 +14,7 @@
|
|||
"@patternfly/react-icons": "^4.26.4",
|
||||
"@patternfly/react-table": "^4.44.4",
|
||||
"dagre": "^0.8.5",
|
||||
"del": "^6.0.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"i18next": "^21.5.4",
|
||||
"lodash": "^4.17.20",
|
||||
|
@ -3422,7 +3423,6 @@
|
|||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": "2.0.5",
|
||||
"run-parallel": "^1.1.9"
|
||||
|
@ -3435,7 +3435,6 @@
|
|||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
||||
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
|
@ -3444,7 +3443,6 @@
|
|||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
||||
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.scandir": "2.1.5",
|
||||
"fastq": "^1.6.0"
|
||||
|
@ -5700,7 +5698,6 @@
|
|||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
|
||||
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"clean-stack": "^2.0.0",
|
||||
"indent-string": "^4.0.0"
|
||||
|
@ -5913,7 +5910,6 @@
|
|||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
|
@ -6632,8 +6628,7 @@
|
|||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"node_modules/base": {
|
||||
"version": "0.11.2",
|
||||
|
@ -6779,7 +6774,6 @@
|
|||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -6789,7 +6783,6 @@
|
|||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
},
|
||||
|
@ -7481,7 +7474,6 @@
|
|||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
|
||||
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
|
@ -7760,8 +7752,7 @@
|
|||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"node_modules/concat-stream": {
|
||||
"version": "1.6.2",
|
||||
|
@ -8723,6 +8714,27 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/del": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz",
|
||||
"integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==",
|
||||
"dependencies": {
|
||||
"globby": "^11.0.1",
|
||||
"graceful-fs": "^4.2.4",
|
||||
"is-glob": "^4.0.1",
|
||||
"is-path-cwd": "^2.2.0",
|
||||
"is-path-inside": "^3.0.2",
|
||||
"p-map": "^4.0.0",
|
||||
"rimraf": "^3.0.2",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
|
@ -8847,7 +8859,6 @@
|
|||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
||||
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"path-type": "^4.0.0"
|
||||
},
|
||||
|
@ -10203,7 +10214,6 @@
|
|||
"version": "3.2.7",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
|
||||
"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
"@nodelib/fs.walk": "^1.2.3",
|
||||
|
@ -10219,7 +10229,6 @@
|
|||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.1"
|
||||
},
|
||||
|
@ -10242,7 +10251,6 @@
|
|||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
||||
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
|
@ -10340,7 +10348,6 @@
|
|||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
|
@ -10692,8 +10699,7 @@
|
|||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.2",
|
||||
|
@ -10894,7 +10900,6 @@
|
|||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
|
@ -10956,7 +10961,6 @@
|
|||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
|
||||
"integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"array-union": "^2.1.0",
|
||||
"dir-glob": "^3.0.1",
|
||||
|
@ -11495,7 +11499,6 @@
|
|||
"version": "5.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
|
||||
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 4"
|
||||
}
|
||||
|
@ -11587,7 +11590,6 @@
|
|||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
||||
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
|
@ -11602,7 +11604,6 @@
|
|||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
|
@ -11611,8 +11612,7 @@
|
|||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/ini": {
|
||||
"version": "2.0.0",
|
||||
|
@ -11836,7 +11836,6 @@
|
|||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
@ -11863,7 +11862,6 @@
|
|||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-extglob": "^2.1.1"
|
||||
},
|
||||
|
@ -11921,7 +11919,6 @@
|
|||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
|
@ -11941,11 +11938,18 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/is-path-cwd": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
|
||||
"integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/is-path-inside": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
|
||||
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
|
@ -14898,7 +14902,6 @@
|
|||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
||||
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
|
@ -14916,7 +14919,6 @@
|
|||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
||||
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.1",
|
||||
"picomatch": "^2.2.3"
|
||||
|
@ -15019,7 +15021,6 @@
|
|||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
|
@ -15930,7 +15931,6 @@
|
|||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
|
@ -16054,7 +16054,6 @@
|
|||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
|
||||
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"aggregate-error": "^3.0.0"
|
||||
},
|
||||
|
@ -16256,7 +16255,6 @@
|
|||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
@ -16288,7 +16286,6 @@
|
|||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
|
@ -16340,7 +16337,6 @@
|
|||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
|
@ -16922,7 +16918,6 @@
|
|||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
|
@ -17609,7 +17604,6 @@
|
|||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"iojs": ">=1.0.0",
|
||||
"node": ">=0.10.0"
|
||||
|
@ -17619,7 +17613,6 @@
|
|||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"glob": "^7.1.3"
|
||||
},
|
||||
|
@ -17692,7 +17685,6 @@
|
|||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
|
@ -18333,7 +18325,6 @@
|
|||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
|
||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
|
@ -19640,7 +19631,6 @@
|
|||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
|
@ -21234,8 +21224,7 @@
|
|||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"node_modules/write-file-atomic": {
|
||||
"version": "3.0.3",
|
||||
|
@ -23859,7 +23848,6 @@
|
|||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "2.0.5",
|
||||
"run-parallel": "^1.1.9"
|
||||
|
@ -23868,14 +23856,12 @@
|
|||
"@nodelib/fs.stat": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
||||
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
||||
"dev": true
|
||||
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
|
||||
},
|
||||
"@nodelib/fs.walk": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
||||
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.scandir": "2.1.5",
|
||||
"fastq": "^1.6.0"
|
||||
|
@ -25794,7 +25780,6 @@
|
|||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
|
||||
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"clean-stack": "^2.0.0",
|
||||
"indent-string": "^4.0.0"
|
||||
|
@ -25945,8 +25930,7 @@
|
|||
"array-union": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
|
||||
},
|
||||
"array-unique": {
|
||||
"version": "0.3.2",
|
||||
|
@ -26530,8 +26514,7 @@
|
|||
"balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"base": {
|
||||
"version": "0.11.2",
|
||||
|
@ -26661,7 +26644,6 @@
|
|||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -26671,7 +26653,6 @@
|
|||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
|
@ -27218,8 +27199,7 @@
|
|||
"clean-stack": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
|
||||
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
|
||||
"dev": true
|
||||
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
|
||||
},
|
||||
"cli-cursor": {
|
||||
"version": "3.1.0",
|
||||
|
@ -27428,8 +27408,7 @@
|
|||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "1.6.2",
|
||||
|
@ -28193,6 +28172,21 @@
|
|||
"isobject": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"del": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz",
|
||||
"integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==",
|
||||
"requires": {
|
||||
"globby": "^11.0.1",
|
||||
"graceful-fs": "^4.2.4",
|
||||
"is-glob": "^4.0.1",
|
||||
"is-path-cwd": "^2.2.0",
|
||||
"is-path-inside": "^3.0.2",
|
||||
"p-map": "^4.0.0",
|
||||
"rimraf": "^3.0.2",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
|
@ -28299,7 +28293,6 @@
|
|||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
||||
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-type": "^4.0.0"
|
||||
}
|
||||
|
@ -29336,7 +29329,6 @@
|
|||
"version": "3.2.7",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
|
||||
"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
"@nodelib/fs.walk": "^1.2.3",
|
||||
|
@ -29349,7 +29341,6 @@
|
|||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-glob": "^4.0.1"
|
||||
}
|
||||
|
@ -29371,7 +29362,6 @@
|
|||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
||||
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
|
@ -29454,7 +29444,6 @@
|
|||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
|
@ -29706,8 +29695,7 @@
|
|||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.3.2",
|
||||
|
@ -29867,7 +29855,6 @@
|
|||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
|
@ -29911,7 +29898,6 @@
|
|||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
|
||||
"integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"array-union": "^2.1.0",
|
||||
"dir-glob": "^3.0.1",
|
||||
|
@ -30319,8 +30305,7 @@
|
|||
"ignore": {
|
||||
"version": "5.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
|
||||
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw=="
|
||||
},
|
||||
"ignore-walk": {
|
||||
"version": "3.0.4",
|
||||
|
@ -30386,8 +30371,7 @@
|
|||
"indent-string": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
||||
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
|
||||
},
|
||||
"infer-owner": {
|
||||
"version": "1.0.4",
|
||||
|
@ -30399,7 +30383,6 @@
|
|||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
|
@ -30408,8 +30391,7 @@
|
|||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"ini": {
|
||||
"version": "2.0.0",
|
||||
|
@ -30574,8 +30556,7 @@
|
|||
"is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
|
||||
"dev": true
|
||||
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
|
@ -30593,7 +30574,6 @@
|
|||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
|
@ -30635,8 +30615,7 @@
|
|||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
|
||||
},
|
||||
"is-number-object": {
|
||||
"version": "1.0.6",
|
||||
|
@ -30647,11 +30626,15 @@
|
|||
"has-tostringtag": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"is-path-cwd": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
|
||||
"integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ=="
|
||||
},
|
||||
"is-path-inside": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
|
||||
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
|
||||
},
|
||||
"is-plain-object": {
|
||||
"version": "5.0.0",
|
||||
|
@ -32868,8 +32851,7 @@
|
|||
"merge2": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
||||
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
|
||||
},
|
||||
"meriyah": {
|
||||
"version": "3.1.6",
|
||||
|
@ -32881,7 +32863,6 @@
|
|||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
||||
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"braces": "^3.0.1",
|
||||
"picomatch": "^2.2.3"
|
||||
|
@ -32961,7 +32942,6 @@
|
|||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
|
@ -33681,7 +33661,6 @@
|
|||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
|
@ -33772,7 +33751,6 @@
|
|||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
|
||||
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"aggregate-error": "^3.0.0"
|
||||
}
|
||||
|
@ -33934,8 +33912,7 @@
|
|||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||
},
|
||||
"path-key": {
|
||||
"version": "3.1.1",
|
||||
|
@ -33960,8 +33937,7 @@
|
|||
"path-type": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
|
||||
},
|
||||
"pbkdf2": {
|
||||
"version": "3.1.2",
|
||||
|
@ -34006,8 +33982,7 @@
|
|||
"picomatch": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
|
||||
},
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
|
@ -34444,8 +34419,7 @@
|
|||
"queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||
"dev": true
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
|
||||
},
|
||||
"quick-lru": {
|
||||
"version": "5.1.1",
|
||||
|
@ -34981,14 +34955,12 @@
|
|||
"reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
|
@ -35040,7 +35012,6 @@
|
|||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"queue-microtask": "^1.2.2"
|
||||
}
|
||||
|
@ -35547,8 +35518,7 @@
|
|||
"slash": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
|
||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
||||
"dev": true
|
||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
|
||||
},
|
||||
"slice-ansi": {
|
||||
"version": "3.0.0",
|
||||
|
@ -36582,7 +36552,6 @@
|
|||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
|
@ -37835,8 +37804,7 @@
|
|||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"write-file-atomic": {
|
||||
"version": "3.0.3",
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
"@patternfly/react-icons": "^4.26.4",
|
||||
"@patternfly/react-table": "^4.44.4",
|
||||
"dagre": "^0.8.5",
|
||||
"del": "^6.0.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"i18next": "^21.5.4",
|
||||
"lodash": "^4.17.20",
|
||||
|
|
Loading…
Reference in a new issue