Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions e2e-tests/playwright/e2e/auth-providers/oidc.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,8 @@ test.describe("Configure OIDC provider (using RHBK)", async () => {
await uiHelper.goToPageUrl("/settings", "Settings");
await uiHelper.verifyHeading("Zeus Giove");

await uiHelper.hideQuickstartIfVisible();

// Click "Show more" button to display metadata info
await page.getByTitle("Show more").click();
// Verify Metadata text is present
Expand Down Expand Up @@ -437,6 +439,8 @@ test.describe("Configure OIDC provider (using RHBK)", async () => {
// wait for rhdh first sync and portal to be reachable
await deployment.waitForSynced();

await uiHelper.hideQuickstartIfVisible();

const ghLogin = await common.githubLoginFromSettingsPage(
"rhdhqeauth1",
process.env.AUTH_PROVIDERS_GH_USER_PASSWORD,
Expand All @@ -453,6 +457,77 @@ test.describe("Configure OIDC provider (using RHBK)", async () => {
await context.clearCookies();
});

test(`Enable autologout and user is logged out after inactivity`, async () => {
deployment.setAppConfigProperty("auth.autologout.enabled", "true");
deployment.setAppConfigProperty(
"auth.autologout.idleTimeoutMinutes",
0.5, // minimum allowed value is 0.5 minutes
);
deployment.setAppConfigProperty(
"auth.autologout.promptBeforeIdleSeconds",
5,
);
await deployment.updateAllConfigs();
await deployment.restartLocalDeployment();
await page.waitForTimeout(3000); // wait is needed or the openshift rollout won't be detected - WORKING A MORE PERMANENT FIX TO REMOVE EXPLICIT TIMEOUT - FOR NOW IT UNBLOCK THE TESTS
await deployment.waitForDeploymentReady();

// wait for rhdh first sync and portal to be reachable
await deployment.waitForSynced();

const login = await common.keycloakLogin(
"zeus",
process.env.DEFAULT_USER_PASSWORD,
);
expect(login).toBe("Login successful");

await uiHelper.verifyTextVisible(
"Logging out due to inactivity",
false,
60000,
);
await page.waitForTimeout(5000);

await page.reload();

const cookies = await context.cookies();
const authCookie = cookies.find(
(cookie) => cookie.name === "oidc-refresh-token",
);
expect(authCookie).toBeUndefined();
});

test(`Enable autologout and user stays logged in after clicking "Don't log me out"`, async () => {
deployment.setAppConfigProperty("auth.autologout.enabled", "true");
deployment.setAppConfigProperty(
"auth.autologout.idleTimeoutMinutes",
0.5, // minimum allowed value is 0.5 minutes
);
deployment.setAppConfigProperty(
"auth.autologout.promptBeforeIdleSeconds",
5,
);
await deployment.updateAllConfigs();
await deployment.restartLocalDeployment();
await page.waitForTimeout(3000); // wait is needed or the openshift rollout won't be detected - WORKING A MORE PERMANENT FIX TO REMOVE EXPLICIT TIMEOUT - FOR NOW IT UNBLOCK THE TESTS
await deployment.waitForDeploymentReady();

// wait for rhdh first sync and portal to be reachable
await deployment.waitForSynced();

const login = await common.keycloakLogin(
"zeus",
process.env.DEFAULT_USER_PASSWORD,
);
expect(login).toBe("Login successful");

await uiHelper.clickButtonByText("Don't log me out", { timeout: 60000 });

await uiHelper.goToPageUrl("/settings", "Settings");
await uiHelper.verifyHeading("Zeus Giove");
await common.signOut();
});

test.afterAll(async () => {
console.log("[TEST] Starting cleanup...");
await deployment.killRunningProcess();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -659,10 +659,25 @@ class RHDHDeployment {
const backstageConfig = await this.readYamlToJson(configPath);
expect(process.env.QUAY_REPO).toBeDefined();
expect(process.env.TAG_NAME).toBeDefined();
backstageConfig.spec.application.image = `quay.io/${process.env.QUAY_REPO}:${process.env.TAG_NAME}`;
console.log(
`Setting Backstage CR image to quay.io/${process.env.QUAY_REPO}:${process.env.TAG_NAME}`,
);
const image = `quay.io/${process.env.QUAY_REPO}:${process.env.TAG_NAME}`;
backstageConfig.spec.deployment = {
patch: {
spec: {
template: {
spec: {
containers: [
{
name: "backstage-backend",
image,
imagePullPolicy: "Always",
},
],
},
},
},
},
};
console.log(`Setting Backstage CR image via deployment.patch to ${image}`);
this.cr = backstageConfig;
this.instanceName = backstageConfig.metadata.name.toString();
return backstageConfig;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ metadata:
name: rhdh
spec:
application:
image: "quay.io/rhdh-community/rhdh:next"
appConfig:
configMaps:
- name: app-config-rhdh
Expand Down
Loading