@baukit/auth-node 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -43,6 +43,11 @@ export interface KeycloakLoginPage {
43
43
  timeout?: number;
44
44
  }): Promise<unknown>;
45
45
  locator(selector: string): {
46
+ waitFor(options: {
47
+ state: 'visible';
48
+ timeout?: number;
49
+ }): Promise<unknown>;
50
+ isVisible(): Promise<boolean>;
46
51
  fill(value: string): Promise<unknown>;
47
52
  click(): Promise<unknown>;
48
53
  };
@@ -63,6 +68,6 @@ export declare function revokeKeycloakUserSessions(stack: KeycloakStack, subject
63
68
  * when the client lacks it.
64
69
  */
65
70
  export declare function allowKeycloakWebOrigin(stack: KeycloakStack, origin: string, options?: KeycloakRequestOptions): Promise<void>;
66
- /** Waits for the Keycloak login page, fills it by its stable `keycloak.v2` IDs, and submits. */
71
+ /** Submits the Keycloak login or password-only reauthentication form. */
67
72
  export declare function signInWithKeycloak(loginPage: KeycloakLoginPage, user: Pick<KeycloakTestUser, 'username' | 'password'>, stack: KeycloakStack, options?: KeycloakSignInOptions): Promise<void>;
68
73
  //# sourceMappingURL=keycloak-testing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keycloak-testing.d.ts","sourceRoot":"","sources":["../src/keycloak-testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloak-testing.d.ts","sourceRoot":"","sources":["../src/keycloak-testing.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wFAAwF;AACxF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,2BAA2B;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,sCAAsC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG;QACzB,OAAO,CAAC,OAAO,EAAE;YAAE,KAAK,EAAE,SAAS,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3E,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAK1D,uFAAuF;AACvF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,qBAAqB,EAC/B,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,aAAa,CAWf;AAED,oEAAoE;AACpE,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,IAAI,GAAE,uBAA4B,EAClC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,gFAAgF;AAChF,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAMf;AAaD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,UAAU,CAAC,EACrD,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -92,15 +92,23 @@ export async function allowKeycloakWebOrigin(stack, origin, options = {}) {
92
92
  throw new Error(`Keycloak client update failed with HTTP ${String(update.status)}.`);
93
93
  }
94
94
  }
95
- /** Waits for the Keycloak login page, fills it by its stable `keycloak.v2` IDs, and submits. */
95
+ /** Submits the Keycloak login or password-only reauthentication form. */
96
96
  export async function signInWithKeycloak(loginPage, user, stack, options = {}) {
97
97
  const origin = new URL(stack.url).origin;
98
98
  const isKeycloak = (url) => url.origin === origin;
99
99
  await (options.timeoutMs === undefined
100
100
  ? loginPage.waitForURL(isKeycloak)
101
101
  : loginPage.waitForURL(isKeycloak, { timeout: options.timeoutMs }));
102
- await loginPage.locator('#username').fill(user.username);
103
- await loginPage.locator('#password').fill(user.password);
102
+ const password = loginPage.locator('#password');
103
+ await password.waitFor({
104
+ state: 'visible',
105
+ ...(options.timeoutMs === undefined ? {} : { timeout: options.timeoutMs }),
106
+ });
107
+ const username = loginPage.locator('#username');
108
+ if (await username.isVisible()) {
109
+ await username.fill(user.username);
110
+ }
111
+ await password.fill(user.password);
104
112
  await loginPage.locator('#kc-login').click();
105
113
  }
106
114
  async function adminRequester(stack, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"keycloak-testing.js","sourceRoot":"","sources":["../src/keycloak-testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloak-testing.js","sourceRoot":"","sources":["../src/keycloak-testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8DzC,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC;AAE1D,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAC3B,QAA+B,EAC/B,cAAiC,OAAO,CAAC,GAAG;IAE5C,MAAM,GAAG,GAAG,WAAW,CAAC,kBAAkB,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC;IAC5D,OAAO;QACL,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7B,KAAK,EAAE,WAAW,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC,KAAK;QAC1D,aAAa,EACX,WAAW,CAAC,6BAA6B,CAAC,IAAI,QAAQ,CAAC,aAAa,IAAI,aAAa;QACvF,aAAa,EACX,WAAW,CAAC,6BAA6B,CAAC,IAAI,QAAQ,CAAC,aAAa,IAAI,aAAa;QACvF,WAAW,EAAE,WAAW,CAAC,4BAA4B,CAAC,IAAI,QAAQ,CAAC,WAAW;KAC/E,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAoB,EACpB,OAAgC,EAAE,EAClC,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,EAAE,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,EAAE,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,QAAQ,eAAe,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QACpC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACJ,QAAQ;YACR,KAAK;YACL,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACvE;KACF,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAAoB,EACpB,OAAe,EACf,UAAkC,EAAE;IAEpC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AASD,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AAC9D,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAoB,EACpB,MAAc,EACd,UAAkC,EAAE;IAEpC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,oBAAoB,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACxF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAA0D,CAAC;IAChG,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,WAAW,UAAU,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,MAAM,IAAI,CAAC;IAClC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,aAAa,GACjB,sBAAsB,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACtD,sBAAsB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/C,IACE,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC;QAC1C,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;QACnC,aAAa,EACb,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,EAAE,KAAK;QACb,IAAI,EAAE;YACJ,GAAG,MAAM;YACT,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC;YACzD,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;YAChD,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,UAAU;gBACpB,CAAC,yBAAyB,CAAC,EAAE,CAAC,aAAa;oBACzC,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,CAAC,GAAG,sBAAsB,EAAE,WAAW,CAAC,CAC3C,CAAC,IAAI,CAAC,qBAAqB,CAAC;aAC9B;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAA4B,EAC5B,IAAqD,EACrD,KAAoB,EACpB,UAAiC,EAAE;IAEnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;IAChE,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;QACpC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;QAClC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,SAAS;QAChB,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KAC3E,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;AAC/C,CAAC;AASD,KAAK,UAAU,cAAc,CAC3B,KAAoB,EACpB,OAA+B;IAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,mCAAmC,CAAC;IAC3E,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAChF,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAC5B,OAAO,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,EAAE;QAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;SAC9E;QACD,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,KAAoB,EACpB,OAAqB,EACrB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,8CAA8C,EAAE;QACzF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK,CAAC,aAAa;YAC7B,QAAQ,EAAE,KAAK,CAAC,aAAa;SAC9B,CAAC;QACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwC,CAAC;IAC5E,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAsB;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;IACnE,OAAO,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,SAAS,CAAC,OAAsC,EAAE,KAAa;IACtE,MAAM,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baukit/auth-node",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Node OIDC device authorization with S256 PKCE, refresh rotation, and a locked token cache.",
5
5
  "license": "MIT",
6
6
  "author": "Patrick Koss",
@@ -315,18 +315,42 @@ describe('allowKeycloakWebOrigin', () => {
315
315
  });
316
316
 
317
317
  describe('signInWithKeycloak', () => {
318
- function fakePage(): { readonly page: KeycloakLoginPage; readonly steps: string[] } {
318
+ function fakePage(form: 'login' | 'reauthentication' = 'login'): {
319
+ readonly page: KeycloakLoginPage;
320
+ readonly steps: string[];
321
+ } {
319
322
  const steps: string[] = [];
323
+ let formReady = false;
320
324
  const onKeycloak = new URL('http://localhost:8081/realms/notes/login');
321
325
  const onApp = new URL('http://localhost:5173/');
322
326
  const page: KeycloakLoginPage = {
323
327
  waitForURL: (matches, options) => {
328
+ formReady = false;
324
329
  const timeout = options?.timeout === undefined ? 'default' : String(options.timeout);
325
330
  steps.push(`wait ${String(matches(onKeycloak))} ${String(matches(onApp))} ${timeout}`);
326
331
  return Promise.resolve();
327
332
  },
328
333
  locator: (selector) => ({
334
+ waitFor: (options) => {
335
+ expect(selector).toBe('#password');
336
+ expect(options.state).toBe('visible');
337
+ const timeout = options.timeout === undefined ? 'default' : String(options.timeout);
338
+ steps.push(`ready ${selector} ${timeout}`);
339
+ formReady = true;
340
+ return Promise.resolve();
341
+ },
342
+ isVisible: () => {
343
+ expect(formReady).toBe(true);
344
+ expect(selector).toBe('#username');
345
+ const visible = form === 'login';
346
+ steps.push(`visible ${selector} ${String(visible)}`);
347
+ return Promise.resolve(visible);
348
+ },
329
349
  fill: (value) => {
350
+ expect(formReady).toBe(true);
351
+ if (form === 'reauthentication' && selector === '#username') {
352
+ throw new Error('The reauthentication username input is not visible.');
353
+ }
330
354
  steps.push(`fill ${selector} ${value}`);
331
355
  return Promise.resolve();
332
356
  },
@@ -349,16 +373,34 @@ describe('signInWithKeycloak', () => {
349
373
 
350
374
  expect(steps).toEqual([
351
375
  'wait true false 60000',
376
+ 'ready #password 60000',
377
+ 'visible #username true',
352
378
  'fill #username ada',
353
379
  'fill #password pw',
354
380
  'click #kc-login',
355
381
  'wait true false default',
382
+ 'ready #password default',
383
+ 'visible #username true',
356
384
  'fill #username ada',
357
385
  'fill #password pw',
358
386
  'click #kc-login',
359
387
  ]);
360
388
  });
361
389
 
390
+ it('submits a password-only form when Keycloak retains the SSO identity', async () => {
391
+ const { page, steps } = fakePage('reauthentication');
392
+
393
+ await signInWithKeycloak(page, { username: 'ada', password: 'pw' }, STACK);
394
+
395
+ expect(steps).toEqual([
396
+ 'wait true false default',
397
+ 'ready #password default',
398
+ 'visible #username false',
399
+ 'fill #password pw',
400
+ 'click #kc-login',
401
+ ]);
402
+ });
403
+
362
404
  it('accepts a Playwright page', () => {
363
405
  const asLoginPage = (page: Page): KeycloakLoginPage => page;
364
406
  expect(asLoginPage).toBeTypeOf('function');
@@ -48,6 +48,8 @@ export interface KeycloakRequestOptions {
48
48
  export interface KeycloakLoginPage {
49
49
  waitForURL(url: (url: URL) => boolean, options?: { timeout?: number }): Promise<unknown>;
50
50
  locator(selector: string): {
51
+ waitFor(options: { state: 'visible'; timeout?: number }): Promise<unknown>;
52
+ isVisible(): Promise<boolean>;
51
53
  fill(value: string): Promise<unknown>;
52
54
  click(): Promise<unknown>;
53
55
  };
@@ -186,7 +188,7 @@ export async function allowKeycloakWebOrigin(
186
188
  }
187
189
  }
188
190
 
189
- /** Waits for the Keycloak login page, fills it by its stable `keycloak.v2` IDs, and submits. */
191
+ /** Submits the Keycloak login or password-only reauthentication form. */
190
192
  export async function signInWithKeycloak(
191
193
  loginPage: KeycloakLoginPage,
192
194
  user: Pick<KeycloakTestUser, 'username' | 'password'>,
@@ -198,8 +200,16 @@ export async function signInWithKeycloak(
198
200
  await (options.timeoutMs === undefined
199
201
  ? loginPage.waitForURL(isKeycloak)
200
202
  : loginPage.waitForURL(isKeycloak, { timeout: options.timeoutMs }));
201
- await loginPage.locator('#username').fill(user.username);
202
- await loginPage.locator('#password').fill(user.password);
203
+ const password = loginPage.locator('#password');
204
+ await password.waitFor({
205
+ state: 'visible',
206
+ ...(options.timeoutMs === undefined ? {} : { timeout: options.timeoutMs }),
207
+ });
208
+ const username = loginPage.locator('#username');
209
+ if (await username.isVisible()) {
210
+ await username.fill(user.username);
211
+ }
212
+ await password.fill(user.password);
203
213
  await loginPage.locator('#kc-login').click();
204
214
  }
205
215