From 254f73f65df37e10e3ac36e470d7dc112ce1320c Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 5 Jul 2023 14:16:04 +0200 Subject: [PATCH] restructure tests --- apps/login/cypress/integration/login.cy.ts | 154 ++++++++++-------- ...adel.settings.v2alpha.SettingsService.json | 11 -- 2 files changed, 88 insertions(+), 77 deletions(-) diff --git a/apps/login/cypress/integration/login.cy.ts b/apps/login/cypress/integration/login.cy.ts index 94e4d65541e..a9b940ef831 100644 --- a/apps/login/cypress/integration/login.cy.ts +++ b/apps/login/cypress/integration/login.cy.ts @@ -39,77 +39,99 @@ describe("login", () => { }, }, }); - }); - it("should redirect a user with password authentication to /password", () => { - removeStub( - "zitadel.user.v2alpha.UserService", - "ListAuthenticationMethodTypes" - ); - addStub( - "zitadel.user.v2alpha.UserService", - "ListAuthenticationMethodTypes", - { - data: { - authMethodTypes: [1], // 1 for password authentication - }, - } - ); - cy.visit("/loginname?loginName=johndoe%40zitadel.com&submit=true"); - cy.location("pathname", { timeout: 10_000 }).should("eq", "/password"); - }); - it("should redirect a user with passwordless authentication to /passkey/login", () => { - removeStub( - "zitadel.user.v2alpha.UserService", - "ListAuthenticationMethodTypes" - ); - addStub( - "zitadel.user.v2alpha.UserService", - "ListAuthenticationMethodTypes", - { - data: { - authMethodTypes: [2], // 2 for passwordless authentication - }, - } - ); - - cy.visit("/loginname?loginName=johndoe%40zitadel.com&submit=true"); - cy.location("pathname", { timeout: 10_000 }).should("eq", "/passkey/login"); - }); - - it("should prompt a user to setup passwordless authentication if passkey is allowed in the login settings", () => { - removeStub( - "zitadel.user.v2alpha.UserService", - "ListAuthenticationMethodTypes" - ); - addStub( - "zitadel.user.v2alpha.UserService", - "ListAuthenticationMethodTypes", - { - data: { - authMethodTypes: [1], // 1 for password authentication - }, - } - ); - - removeStub("zitadel.session.v2alpha.SessionService", "SetSession"); - addStub("zitadel.session.v2alpha.SessionService", "SetSession", { + removeStub("zitadel.settings.v2alpha.SessionService", "GetLoginSettings"); + addStub("zitadel.settings.v2alpha.SettingsService", "GetLoginSettings", { data: { - details: { - sequence: 859, - changeDate: "2023-07-04T07:58:20.126Z", - resourceOwner: "220516472055706145", + settings: { + passkeysType: 1, }, - sessionToken: - "SDMc7DlYXPgwRJ-Tb5NlLqynysHjEae3csWsKzoZWLplRji0AYY3HgAkrUEBqtLCvOayLJPMd0ax4Q", - challenges: undefined, }, }); + }); + describe("password login", () => { + beforeEach(() => { + removeStub( + "zitadel.user.v2alpha.UserService", + "ListAuthenticationMethodTypes" + ); + addStub( + "zitadel.user.v2alpha.UserService", + "ListAuthenticationMethodTypes", + { + data: { + authMethodTypes: [1], // 1 for password authentication + }, + } + ); + }); + it("should redirect a user with password authentication to /password", () => { + cy.visit("/loginname?loginName=johndoe%40zitadel.com&submit=true"); + cy.location("pathname", { timeout: 10_000 }).should("eq", "/password"); + }); + }); - cy.visit("/loginname?loginName=john%40zitadel.com&submit=true"); - cy.location("pathname", { timeout: 10_000 }).should("eq", "/password"); - cy.get('input[type="password"]').focus().type("MyStrongPassword!1"); - cy.get('button[type="submit"]').click(); - cy.location("pathname", { timeout: 10_000 }).should("eq", "/passkey/add"); + describe("passkey login", () => { + beforeEach(() => { + removeStub( + "zitadel.user.v2alpha.UserService", + "ListAuthenticationMethodTypes" + ); + addStub( + "zitadel.user.v2alpha.UserService", + "ListAuthenticationMethodTypes", + { + data: { + authMethodTypes: [2], // 2 for passwordless authentication + }, + } + ); + }); + it("should redirect a user with passwordless authentication to /passkey/login", () => { + cy.visit("/loginname?loginName=johndoe%40zitadel.com&submit=true"); + cy.location("pathname", { timeout: 10_000 }).should( + "eq", + "/passkey/login" + ); + }); + }); + + describe("password login with passkey prompt", () => { + beforeEach(() => { + removeStub( + "zitadel.user.v2alpha.UserService", + "ListAuthenticationMethodTypes" + ); + addStub( + "zitadel.user.v2alpha.UserService", + "ListAuthenticationMethodTypes", + { + data: { + authMethodTypes: [1], // 1 for password authentication + }, + } + ); + + removeStub("zitadel.session.v2alpha.SessionService", "SetSession"); + addStub("zitadel.session.v2alpha.SessionService", "SetSession", { + data: { + details: { + sequence: 859, + changeDate: "2023-07-04T07:58:20.126Z", + resourceOwner: "220516472055706145", + }, + sessionToken: + "SDMc7DlYXPgwRJ-Tb5NlLqynysHjEae3csWsKzoZWLplRji0AYY3HgAkrUEBqtLCvOayLJPMd0ax4Q", + challenges: undefined, + }, + }); + }); + it("should prompt a user to setup passwordless authentication if passkey is allowed in the login settings", () => { + cy.visit("/loginname?loginName=john%40zitadel.com&submit=true"); + cy.location("pathname", { timeout: 10_000 }).should("eq", "/password"); + cy.get('input[type="password"]').focus().type("MyStrongPassword!1"); + cy.get('button[type="submit"]').click(); + cy.location("pathname", { timeout: 10_000 }).should("eq", "/passkey/add"); + }); }); }); diff --git a/apps/login/mock/initial-stubs/zitadel.settings.v2alpha.SettingsService.json b/apps/login/mock/initial-stubs/zitadel.settings.v2alpha.SettingsService.json index 546ba7e8ac7..463f0593469 100644 --- a/apps/login/mock/initial-stubs/zitadel.settings.v2alpha.SettingsService.json +++ b/apps/login/mock/initial-stubs/zitadel.settings.v2alpha.SettingsService.json @@ -31,16 +31,5 @@ } } } - }, - { - "service": "zitadel.settings.v2alpha.SettingsService", - "method": "GetLoginSettings", - "out": { - "data": { - "settings": { - "passkeysType": 1 - } - } - } } ]