seamless-cli 0.11.0 → 0.12.1

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.
package/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![License: AGPL-3.0-only](https://img.shields.io/badge/License-AGPL3-yellow.svg)](LICENSE)
4
4
  [![npm version](https://img.shields.io/npm/v/seamless-cli.svg?style=flat)](https://www.npmjs.com/package/seamless-cli)
5
5
  ![coverage](resources/coverage-badge.svg)
6
+ [![conformance](https://github.com/fells-code/seamless-cli/actions/workflows/conformance.yml/badge.svg)](https://github.com/fells-code/seamless-cli/actions/workflows/conformance.yml)
6
7
 
7
8
  Seamless CLI is a command-line tool for bootstrapping applications with Seamless Auth, an open source, passwordless authentication system.
8
9
 
@@ -96,6 +96,7 @@ function flowsToGrep(flows) {
96
96
  return flows.map((f) => `@${f}`).join("|");
97
97
  }
98
98
  const VENDOR_DIR = path.join(VERIFY_DIR, "adapter-app", "vendor");
99
+ const FASTIFY_VENDOR_DIR = path.join(VERIFY_DIR, "adapter-fastify-app", "vendor");
99
100
  const REACT_VENDOR_DIR = path.join(VERIFY_DIR, "react-vendor");
100
101
  // The React client SDK (@seamless-auth/react). Defaults to a sibling checkout;
101
102
  // override with SEAMLESS_REACT_SDK_DIR. Only needed for --local browser runs.
@@ -119,7 +120,7 @@ function resolveServerDir() {
119
120
  return candidate;
120
121
  }
121
122
  function cleanVendor() {
122
- for (const dir of [VENDOR_DIR, REACT_VENDOR_DIR]) {
123
+ for (const dir of [VENDOR_DIR, FASTIFY_VENDOR_DIR, REACT_VENDOR_DIR]) {
123
124
  for (const f of fs.readdirSync(dir)) {
124
125
  if (f.endsWith(".tgz"))
125
126
  fs.rmSync(path.join(dir, f));
@@ -134,17 +135,35 @@ async function packLocalReactSdk(env) {
134
135
  await runCommand("npm", ["run", "build"], sdkDir, env);
135
136
  await runCommand("npm", ["pack", "--pack-destination", REACT_VENDOR_DIR], sdkDir, env);
136
137
  }
138
+ // Each adapter image installs core plus its own framework package, so the
139
+ // tarballs are packed into that image's vendor dir and nothing else.
140
+ const ADAPTER_SDKS = [
141
+ { pkg: "@seamless-auth/express", vendorDir: VENDOR_DIR },
142
+ { pkg: "@seamless-auth/fastify", vendorDir: FASTIFY_VENDOR_DIR },
143
+ ];
137
144
  async function packLocalSdks(env) {
138
145
  const serverDir = resolveServerDir();
139
- console.log(kleur.cyan("→ Building & packing local @seamless-auth/* (core, express)…"));
146
+ console.log(kleur.cyan("→ Building & packing local @seamless-auth/* (core, express, fastify)…"));
140
147
  await runCommand("pnpm", ["--filter", "@seamless-auth/core", "build"], serverDir, env);
141
- await runCommand("pnpm", ["--filter", "@seamless-auth/express", "build"], serverDir, env);
142
- for (const pkg of ["@seamless-auth/core", "@seamless-auth/express"]) {
143
- await runCommand("pnpm", ["--filter", pkg, "pack", "--pack-destination", VENDOR_DIR], serverDir, env);
148
+ for (const { pkg } of ADAPTER_SDKS) {
149
+ await runCommand("pnpm", ["--filter", pkg, "build"], serverDir, env);
150
+ }
151
+ for (const { pkg, vendorDir } of ADAPTER_SDKS) {
152
+ // core goes into both, since each image installs it alongside its adapter.
153
+ for (const target of ["@seamless-auth/core", pkg]) {
154
+ await runCommand("pnpm", ["--filter", target, "pack", "--pack-destination", vendorDir], serverDir, env);
155
+ }
144
156
  }
145
157
  }
158
+ // An extra compose file layered over the base one, for settings that only make sense in
159
+ // one environment. CI uses it to attach a build cache; a local run sets nothing and gets
160
+ // the file it always got.
161
+ const COMPOSE_OVERRIDE = process.env.SEAMLESS_VERIFY_COMPOSE_OVERRIDE?.trim();
146
162
  function compose(env, ...args) {
147
- return runCommand("docker", ["compose", "-f", COMPOSE_FILE, ...args], VERIFY_DIR, env);
163
+ const files = ["-f", COMPOSE_FILE];
164
+ if (COMPOSE_OVERRIDE)
165
+ files.push("-f", COMPOSE_OVERRIDE);
166
+ return runCommand("docker", ["compose", ...files, ...args], VERIFY_DIR, env);
148
167
  }
149
168
  // Runs a set of Playwright projects, optionally narrowed by a grep. Returns true on
150
169
  // pass, false on failure, so one layer failing does not abort the others.
@@ -193,6 +212,7 @@ function collectPackageVersions(opts, apiDir, webTemplates) {
193
212
  const serverDir = resolveServerDir();
194
213
  push("@seamless-auth/core", readPkgVersion(path.join(serverDir, "packages", "core", "package.json")));
195
214
  push("@seamless-auth/express", readPkgVersion(path.join(serverDir, "packages", "express", "package.json")));
215
+ push("@seamless-auth/fastify", readPkgVersion(path.join(serverDir, "packages", "fastify", "package.json")));
196
216
  }
197
217
  catch {
198
218
  // Server checkout unavailable; leave the SDK lines out rather than fail.
@@ -209,6 +229,7 @@ function collectPackageVersions(opts, apiDir, webTemplates) {
209
229
  else {
210
230
  // Released: the pins the adapter and web images build against.
211
231
  push("@seamless-auth/express", readDepVersion(path.join(VERIFY_DIR, "adapter-app", "package.json"), "@seamless-auth/express"));
232
+ push("@seamless-auth/fastify", readDepVersion(path.join(VERIFY_DIR, "adapter-fastify-app", "package.json"), "@seamless-auth/fastify"));
212
233
  const reactPins = new Set();
213
234
  for (const tmpl of webTemplates) {
214
235
  const pin = readDepVersion(path.join(tmpl.dir, "package.json"), "@seamless-auth/react");
@@ -306,11 +327,12 @@ export async function runVerify(args = []) {
306
327
  SEAMLESS_OWNER_EMAIL: ownerEmail,
307
328
  SEAMLESS_API_URL: "http://localhost:5312",
308
329
  SEAMLESS_ADAPTER_URL: "http://localhost:3000",
330
+ SEAMLESS_FASTIFY_ADAPTER_URL: "http://localhost:3001",
309
331
  };
310
332
  // The base stack (no browser layer). The react service is added per template below.
311
333
  const baseServices = ["postgres", "auth-api"];
312
334
  if (!opts.apiOnly)
313
- baseServices.push("adapter");
335
+ baseServices.push("adapter", "adapter-fastify");
314
336
  let failed = false;
315
337
  let setupError;
316
338
  const results = [];
@@ -338,11 +360,14 @@ export async function runVerify(args = []) {
338
360
  // API and adapter layers are template-independent, so they run once.
339
361
  const apiEnv = {
340
362
  ...baseEnv,
341
- ...(opts.apiOnly ? {} : { SEAMLESS_VERIFY_ADAPTER: "1" }),
363
+ ...(opts.apiOnly
364
+ ? {}
365
+ : { SEAMLESS_VERIFY_ADAPTER: "1", SEAMLESS_VERIFY_ADAPTER_FASTIFY: "1" }),
342
366
  };
343
367
  const apiProjects = ["api"];
368
+ // The adapter suite runs once per adopter framework, against the same specs.
344
369
  if (!opts.apiOnly)
345
- apiProjects.push("adapter");
370
+ apiProjects.push("adapter", "adapter-fastify");
346
371
  const apiLabel = opts.apiOnly ? "API" : "API / adapter";
347
372
  console.log(kleur.cyan("→ Running the API / adapter conformance…\n"));
348
373
  if (!(await runLayer(results, apiLabel, () => runProjects(apiEnv, apiProjects, opts.grep)))) {
@@ -356,6 +381,10 @@ export async function runVerify(args = []) {
356
381
  SEAMLESS_REACT_DIR: tmpl.dir,
357
382
  SEAMLESS_REACT_URL: "http://localhost:5173",
358
383
  SEAMLESS_VERIFY_REACT: "1",
384
+ // Only read by the CI cache override, which keys the react build cache per
385
+ // template. Each one is different source, so sharing a scope would have them
386
+ // evict each other every run.
387
+ SEAMLESS_VERIFY_TEMPLATE_ID: tmpl.id,
359
388
  };
360
389
  const grep = opts.grep ?? flowsToGrep(tmpl.flows);
361
390
  const label = `Web · ${tmpl.id}${grep ? ` (${grep})` : " (all flows)"}`;
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- export const POSTGRES_IMAGE = "postgres:17";
1
+ // Baked into each scaffold's own docker-compose.yml at generation time, so a
2
+ // bump here reaches new projects only. An existing project keeps the major it was
3
+ // scaffolded with, and never has its data directory pulled out from under it.
4
+ export const POSTGRES_IMAGE = "postgres:18";
2
5
  export const SEAMLESS_AUTH_API_VERSION = "v0.7.1";
3
6
  export const SEAMLESS_AUTH_API_IMAGE = `ghcr.io/fells-code/seamless-auth-api:${SEAMLESS_AUTH_API_VERSION}`;
4
7
  export const SEAMLESS_AUTH_ADMIN_DASHBOARD_VERSION = "v0.4.0";
@@ -7,5 +10,5 @@ export const SEAMLESS_AUTH_ADMIN_DASHBOARD_IMAGE = `ghcr.io/fells-code/seamless-
7
10
  // CLI version always produces the same project. Override the ref with
8
11
  // SEAMLESS_TEMPLATES_REF, or point at a local checkout with SEAMLESS_TEMPLATES_DIR.
9
12
  export const SEAMLESS_TEMPLATES_REPO = "fells-code/seamless-templates";
10
- export const SEAMLESS_TEMPLATES_REF = "v0.8.1";
13
+ export const SEAMLESS_TEMPLATES_REF = "v0.9.0";
11
14
  //# sourceMappingURL=images.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/core/images.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,wCAAwC,yBAAyB,EAAE,CAAC;AAE3G,MAAM,CAAC,MAAM,qCAAqC,GAAG,QAAQ,CAAC;AAE9D,MAAM,CAAC,MAAM,mCAAmC,GAAG,oDAAoD,qCAAqC,EAAE,CAAC;AAE/I,oFAAoF;AACpF,sEAAsE;AACtE,oFAAoF;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAEvE,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/core/images.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,kFAAkF;AAClF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,wCAAwC,yBAAyB,EAAE,CAAC;AAE3G,MAAM,CAAC,MAAM,qCAAqC,GAAG,QAAQ,CAAC;AAE9D,MAAM,CAAC,MAAM,mCAAmC,GAAG,oDAAoD,qCAAqC,EAAE,CAAC;AAE/I,oFAAoF;AACpF,sEAAsE;AACtE,oFAAoF;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAEvE,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC"}
@@ -53,7 +53,10 @@ export async function promptLogin(opts) {
53
53
  notify: (event) => {
54
54
  switch (event.type) {
55
55
  case "code_sent":
56
- console.log(kleur.dim(`A code was sent to ${resolved}.`));
56
+ // The instance answers the same way whether or not the identifier has an
57
+ // account, so claiming a code was sent would be stating something this cannot
58
+ // know.
59
+ console.log(kleur.dim(`If an account exists for ${resolved}, a code is on its way.`));
57
60
  break;
58
61
  case "code_resent":
59
62
  console.log(kleur.dim("Your previous code expired, so we sent a new one."));
@@ -1 +1 @@
1
- {"version":3,"file":"interactiveLogin.js","sourceRoot":"","sources":["../../src/core/interactiveLogin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactiveLogin.js","sourceRoot":"","sources":["../../src/core/interactiveLogin.ts"],"names":[],"mappings":"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"}
@@ -41,16 +41,28 @@ async function startLogin(instanceUrl, identifier, now) {
41
41
  if (isRateLimited(res)) {
42
42
  throw new LoginError("The instance is rate limiting requests. Wait a few minutes and try again.");
43
43
  }
44
+ // `/login` no longer answers 401. An identifier with no usable account, which used to
45
+ // mean unknown, unverified, or with no permitted method, now gets a 200 and a decoy
46
+ // pre-auth token so the response cannot be used to test whether an account exists. The
47
+ // branches that read 401 as "no such user" and "not verified yet" were removed with it:
48
+ // there is no longer an answer for them to read. Such a login fails at the code step
49
+ // instead, which is what `completeLogin` reports.
44
50
  if (!res.ok) {
45
- const message = apiMessage(res.data) ?? "";
46
- if (res.status === 401 && /verify/i.test(message)) {
47
- throw new LoginError(`The account for ${identifier} is not verified yet. Finish registration, then log in.`);
48
- }
49
51
  if (res.status === 400) {
50
52
  throw new LoginError(`"${identifier}" is not a valid email or phone number.`);
51
53
  }
52
- if (res.status === 401 || res.status === 403) {
53
- throw new LoginError(`No account was found for ${identifier}, or login is not permitted.`);
54
+ if (res.status === 423) {
55
+ // The one remaining answer that does imply an account, and the one worth naming:
56
+ // it needs prior failed attempts against this identifier, and the developer can
57
+ // act on it by waiting.
58
+ const retryAfter = res.data?.retryAfterSeconds;
59
+ const wait = typeof retryAfter === "number" && retryAfter > 0
60
+ ? ` Try again in about ${Math.ceil(retryAfter / 60)} minute(s).`
61
+ : "";
62
+ throw new LoginError(`Too many failed attempts for ${identifier}.${wait}`);
63
+ }
64
+ if (res.status === 403) {
65
+ throw new LoginError(`Login is not permitted for ${identifier}.`);
54
66
  }
55
67
  throw new LoginError(`Login request failed (${res.status}).`);
56
68
  }
@@ -121,7 +133,9 @@ export async function completeLogin(opts) {
121
133
  const channel = started.channel;
122
134
  const required = channel === "email" ? "email_otp" : "phone_otp";
123
135
  if (started.loginMethods.length > 0 && !started.loginMethods.includes(required)) {
124
- throw new LoginError(`This account cannot use ${required.replace("_", " ")} login. Available methods: ${started.loginMethods.join(", ")}.`);
136
+ // Deliberately not "this account cannot": the method list comes back for an unknown
137
+ // identifier too, so saying so would report an account that may not exist.
138
+ throw new LoginError(`${required.replace("_", " ")} login is not available for ${opts.identifier}. Offered: ${started.loginMethods.join(", ")}.`);
125
139
  }
126
140
  let autoCode = await sendCode(opts.instanceUrl, started, localDelivery);
127
141
  notify({ type: "code_sent", channel });
@@ -170,6 +184,8 @@ export async function completeLogin(opts) {
170
184
  attempt++;
171
185
  notify({ type: "incorrect", attemptsLeft: maxAttempts - attempt });
172
186
  }
173
- throw new LoginError("Could not verify a code. Run seamless login to try again.");
187
+ // The instance does not say whether the identifier has an account, so neither can this.
188
+ // A wrong code and an identifier nobody has registered both land here.
189
+ throw new LoginError(`Could not verify a code for ${opts.identifier}. If that address or number has no account yet, register it first. Otherwise run seamless login to try again.`);
174
190
  }
175
191
  //# sourceMappingURL=loginFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loginFlow.js","sourceRoot":"","sources":["../../src/core/loginFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loginFlow.js","sourceRoot":"","sources":["../../src/core/loginFlow.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,11 @@ services:
32
32
  POSTGRES_PASSWORD: mypassword
33
33
  POSTGRES_DB: postgres
34
34
  volumes:
35
- - pgdata:/var/lib/postgresql/data
35
+ # PostgreSQL 18+ images store data in a major-versioned subdirectory
36
+ # (/var/lib/postgresql/18/docker), so the mount goes one level up. Mounting
37
+ # .../data instead leaves the volume unused and the container refuses to
38
+ # start. See docker-library/postgres#1259.
39
+ - pgdata:/var/lib/postgresql
36
40
  healthcheck:
37
41
  test: ["CMD-SHELL", "pg_isready -U myuser -d postgres"]
38
42
  interval: 5s
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/generators/docker/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/generators/docker/docker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seamless-cli",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "description": "The Seamless Auth command-line interface",
5
5
  "homepage": "https://github.com/fells-code/seamless-cli#readme",
6
6
  "bugs": {
@@ -0,0 +1,14 @@
1
+ FROM node:24-alpine
2
+ WORKDIR /app
3
+ RUN apk add --no-cache curl
4
+ COPY package.json ./
5
+ RUN npm install
6
+ # --local mode: install locally-built @seamless-auth/* tarballs over the registry
7
+ # versions. vendor/ is empty in --released mode, so this is a no-op there.
8
+ COPY vendor/ ./vendor/
9
+ RUN if ls ./vendor/*.tgz >/dev/null 2>&1; then \
10
+ npm install ./vendor/seamless-auth-core-*.tgz ./vendor/seamless-auth-fastify-*.tgz; \
11
+ fi
12
+ COPY server.mjs ./
13
+ EXPOSE 3001
14
+ CMD ["node", "server.mjs"]
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "seamless-verify-adapter-fastify",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "description": "Minimal adopter backend for the conformance harness — real @seamless-auth/fastify with a capture transport.",
7
+ "dependencies": {
8
+ "@fastify/cors": "^11.0.1",
9
+ "@seamless-auth/fastify": "^0.3.1",
10
+ "fastify": "^5.2.0"
11
+ }
12
+ }
@@ -0,0 +1,64 @@
1
+ import cors from "@fastify/cors";
2
+ import Fastify from "fastify";
3
+ import seamlessAuth from "@seamless-auth/fastify";
4
+
5
+ // The Fastify twin of adapter-app/server.mjs. Same routes, same env contract,
6
+ // same capture transport: the point of this service is that a spec cannot tell
7
+ // which adapter answered it, so any difference in behaviour is a real one.
8
+ //
9
+ // The adapter strips OTP/magic-link secrets before responding to the browser, so
10
+ // the conformance harness can't read codes from responses. These handlers receive
11
+ // the raw delivery payloads and stash them for the harness to read via /__captured.
12
+ const captured = new Map();
13
+ const ok = (channel) => ({ accepted: true, provider: "capture", channel });
14
+
15
+ const handlers = {
16
+ async sendOtpEmail({ to, token }) {
17
+ captured.set(to, { token: String(token) });
18
+ return ok("email");
19
+ },
20
+ async sendOtpSms({ to, token }) {
21
+ captured.set(to, { token: String(token) });
22
+ return ok("sms");
23
+ },
24
+ async sendMagicLinkEmail({ to, token, magicLinkUrl }) {
25
+ captured.set(to, { token, magicLinkUrl });
26
+ return ok("email");
27
+ },
28
+ async sendBootstrapInviteEmail({ to, token, inviteUrl }) {
29
+ captured.set(to, { token, inviteUrl });
30
+ return ok("email");
31
+ },
32
+ };
33
+
34
+ const app = Fastify();
35
+
36
+ // The React app (browser) calls the adapter cross-origin with credentials, so
37
+ // CORS must echo its origin and allow cookies. WEB_ORIGIN is the React app host.
38
+ await app.register(cors, {
39
+ origin: process.env.WEB_ORIGIN ?? "http://localhost:5173",
40
+ credentials: true,
41
+ });
42
+
43
+ app.get("/", async () => ({ ok: true }));
44
+ app.get("/__captured/:email", async (req) => captured.get(req.params.email) ?? null);
45
+
46
+ // Registered under a prefix, which is how the plugin scopes its cookie and origin
47
+ // hooks. @fastify/cookie comes with the plugin, so it is not registered here.
48
+ // There is no `issuer` option on this adapter (the Express one takes one); the
49
+ // audience is what both check the API's tokens against.
50
+ await app.register(seamlessAuth, {
51
+ prefix: "/auth",
52
+ authServerUrl: process.env.AUTH_SERVER_URL,
53
+ cookieSecret: process.env.COOKIE_SIGNING_KEY,
54
+ serviceSecret: process.env.API_SERVICE_TOKEN,
55
+ audience: process.env.AUTH_SERVER_URL,
56
+ jwksKid: process.env.JWKS_KID,
57
+ messaging: { handlers, defaults: { appName: "Seamless Verify" } },
58
+ });
59
+
60
+ const port = Number(process.env.PORT ?? 3001);
61
+ // 0.0.0.0, not the Fastify default of localhost: the port is published out of the
62
+ // container, and a listener bound to loopback inside it is unreachable from the host.
63
+ await app.listen({ port, host: "0.0.0.0" });
64
+ console.log(`verify fastify adapter listening on :${port}`);
@@ -0,0 +1,3 @@
1
+ *.tgz
2
+ !.gitkeep
3
+ !.gitignore
File without changes
@@ -0,0 +1,43 @@
1
+ # Build cache for CI, layered over docker-compose.verify.yml via
2
+ # SEAMLESS_VERIFY_COMPOSE_OVERRIDE. Kept out of the base file because `type=gha` needs the
3
+ # Actions cache credentials and is an error anywhere else, so a developer running
4
+ # `seamless verify` locally must not pick it up.
5
+ #
6
+ # Every image here is rebuilt from scratch on every CI run today, and the Dockerfiles are
7
+ # already ordered for this: each installs dependencies from a lockfile before copying
8
+ # source, so the expensive layer survives a source change and only a lockfile change
9
+ # invalidates it.
10
+ #
11
+ # Scopes are per service. One shared scope would have each build overwrite the last, and
12
+ # they would take turns missing.
13
+ services:
14
+ auth-api:
15
+ build:
16
+ cache_from:
17
+ - type=gha,scope=verify-auth-api
18
+ cache_to:
19
+ - type=gha,mode=max,scope=verify-auth-api
20
+
21
+ adapter:
22
+ build:
23
+ cache_from:
24
+ - type=gha,scope=verify-adapter
25
+ cache_to:
26
+ - type=gha,mode=max,scope=verify-adapter
27
+
28
+ adapter-fastify:
29
+ build:
30
+ cache_from:
31
+ - type=gha,scope=verify-adapter-fastify
32
+ cache_to:
33
+ - type=gha,mode=max,scope=verify-adapter-fastify
34
+
35
+ # The react service is built once per web template against different source, so its
36
+ # scope carries the template id. Sharing one scope across templates would mean each
37
+ # template evicting the previous one's cache on every run.
38
+ react:
39
+ build:
40
+ cache_from:
41
+ - type=gha,scope=verify-react-${SEAMLESS_VERIFY_TEMPLATE_ID:-default}
42
+ cache_to:
43
+ - type=gha,mode=max,scope=verify-react-${SEAMLESS_VERIFY_TEMPLATE_ID:-default}
@@ -15,7 +15,10 @@ name: seamless-verify
15
15
 
16
16
  services:
17
17
  postgres:
18
- image: postgres:16
18
+ # Matches POSTGRES_IMAGE in src/core/images.ts, so the harness runs the same
19
+ # major a fresh scaffold gets. Every run starts with `down -v`, so the volume
20
+ # is always new and a major bump needs no migration here.
21
+ image: postgres:18
19
22
  environment:
20
23
  POSTGRES_USER: seamless
21
24
  POSTGRES_PASSWORD: seamless
@@ -117,6 +120,32 @@ services:
117
120
  timeout: 3s
118
121
  retries: 20
119
122
 
123
+ # The same adopter backend on Fastify, so the cookie path is conformance-tested
124
+ # for both adapters rather than only the one the harness happens to be written
125
+ # against. Identical env contract and capture transport; only the framework and
126
+ # the published port differ, which is what makes a failure here attributable.
127
+ adapter-fastify:
128
+ build:
129
+ context: ./adapter-fastify-app
130
+ ports:
131
+ - '3001:3001'
132
+ environment:
133
+ PORT: '3001'
134
+ AUTH_SERVER_URL: http://auth-api:5312
135
+ APP_ORIGIN: http://localhost:3001
136
+ WEB_ORIGIN: http://localhost:5173
137
+ API_SERVICE_TOKEN: ${API_SERVICE_TOKEN}
138
+ COOKIE_SIGNING_KEY: ${API_SERVICE_TOKEN}
139
+ JWKS_KID: ${JWKS_KID}
140
+ depends_on:
141
+ auth-api:
142
+ condition: service_healthy
143
+ healthcheck:
144
+ test: ['CMD', 'curl', '-fsS', 'http://localhost:3001/']
145
+ interval: 3s
146
+ timeout: 3s
147
+ retries: 20
148
+
120
149
  # React starter app (built SPA on nginx), pointed at the adapter so the React
121
150
  # SDK's `${apiHost}/auth/*` calls hit the adapter's mount. Browser-visible URL,
122
151
  # so API_URL is the host-mapped adapter (localhost:3000), not the compose host.
@@ -0,0 +1,139 @@
1
+ import { expect, test } from '../lib/fixtures';
2
+ import { registerAndVerifyEmail } from '../lib/flows';
3
+
4
+ // `POST /login` answers the same way for an identifier with an account and one without,
5
+ // and the endpoints that accept the resulting pre-auth token do too. The API has its own
6
+ // unit coverage for this; what only this harness can check is that the guarantee survives
7
+ // a real instance, with real signing keys and the real login policy in place.
8
+ //
9
+ // The specific failures worth catching are the ones where a decoy responder reproduces
10
+ // the success path and forgets a refusal, since that is the shape every regression here
11
+ // has taken so far.
12
+
13
+ const UNKNOWN = () => `nobody-${Date.now()}-${Math.random().toString(36).slice(2)}@example.com`;
14
+
15
+ async function startLogin(ctx: Parameters<typeof registerAndVerifyEmail>[0], identifier: string) {
16
+ const res = await ctx.post('/login', { data: { identifier } });
17
+ return { status: res.status(), body: await res.json() };
18
+ }
19
+
20
+ test.describe('login enumeration (api)', () => {
21
+ test('an unknown identifier is answered in the same shape as a real one', async ({
22
+ actor,
23
+ }) => {
24
+ await registerAndVerifyEmail(actor.ctx, actor.email);
25
+
26
+ const real = await startLogin(actor.ctx, actor.email);
27
+ const unknown = await startLogin(actor.ctx, UNKNOWN());
28
+
29
+ expect(unknown.status).toBe(200);
30
+ expect(unknown.status).toBe(real.status);
31
+ // `sub` and `token` differ between them exactly as they differ between two real
32
+ // accounts, so the comparison is over everything else.
33
+ expect(Object.keys(unknown.body).sort()).toEqual(Object.keys(real.body).sort());
34
+ expect(unknown.body.identifierType).toBe(real.body.identifierType);
35
+ expect(unknown.body.ttl).toBe(real.body.ttl);
36
+ expect(typeof unknown.body.token).toBe('string');
37
+ // Deliberately not `loginMethods`. That list is filtered by what an account can do,
38
+ // and a decoy's capabilities are derived per identifier, so any one decoy and any
39
+ // one account can legitimately differ. What has to hold is the next test.
40
+ });
41
+
42
+ test('a real account\'s method list is one a decoy can also produce', async ({ actor }) => {
43
+ // The guarantee is not that two given answers match, it is that a given answer does
44
+ // not identify an account. A decoy that always claimed everything would make any
45
+ // narrower list proof of existence, so the decoy's passkey and phone are derived per
46
+ // identifier and a narrow list has to be reachable without an account behind it.
47
+ await registerAndVerifyEmail(actor.ctx, actor.email);
48
+ const real = await startLogin(actor.ctx, actor.email);
49
+ const target = JSON.stringify(real.body.loginMethods);
50
+
51
+ const seen = new Set<string>();
52
+ for (let i = 0; i < 40; i += 1) {
53
+ const { body } = await startLogin(actor.ctx, UNKNOWN());
54
+ seen.add(JSON.stringify(body.loginMethods));
55
+ }
56
+
57
+ // Each decoy draws two independent bits, so this account's exact list comes up about
58
+ // a quarter of the time; over 40 identifiers, missing it entirely is a 1-in-100,000
59
+ // event rather than a flake worth retrying.
60
+ expect(seen.has(target), `no decoy offered ${target}; saw ${[...seen].join(' | ')}`).toBe(
61
+ true,
62
+ );
63
+ expect(seen.size).toBeGreaterThan(1);
64
+ });
65
+
66
+ test('the same unknown identifier keeps the same subject', async ({ actor }) => {
67
+ const identifier = UNKNOWN();
68
+
69
+ const first = await startLogin(actor.ctx, identifier);
70
+ const second = await startLogin(actor.ctx, identifier);
71
+ const other = await startLogin(actor.ctx, UNKNOWN());
72
+
73
+ // A real identifier resolves to the same row every time and to a different one from
74
+ // anyone else's. A subject that rerolled, or that collided, would be the oracle again
75
+ // one request later.
76
+ expect(second.body.sub).toBe(first.body.sub);
77
+ expect(other.body.sub).not.toBe(first.body.sub);
78
+ // The offered methods have to be stable for the same reason: a list that changed
79
+ // between attempts would separate a decoy from an account on its own.
80
+ expect(second.body.loginMethods).toEqual(first.body.loginMethods);
81
+ });
82
+
83
+ test('an unknown identifier gets an OTP send that reports success and sends nothing', async ({
84
+ actor,
85
+ }) => {
86
+ const { body } = await startLogin(actor.ctx, UNKNOWN());
87
+
88
+ const res = await actor.ctx.get('/otp/generate-login-email-otp', {
89
+ headers: { Authorization: `Bearer ${body.token}` },
90
+ });
91
+
92
+ expect(res.status()).toBe(200);
93
+ expect((await res.json()).message).toBe('success');
94
+ });
95
+
96
+ test('a decoy OTP verify fails the way a wrong code fails', async ({ actor }) => {
97
+ const { body } = await startLogin(actor.ctx, UNKNOWN());
98
+
99
+ const res = await actor.ctx.post('/otp/verify-login-email-otp', {
100
+ headers: { Authorization: `Bearer ${body.token}` },
101
+ data: { verificationToken: 'ZZZZZZ' },
102
+ });
103
+
104
+ expect(res.status()).toBe(401);
105
+ });
106
+
107
+ test('a credential id that cannot exist is refused for real and unknown alike', async ({
108
+ actor,
109
+ }) => {
110
+ // The sharpest oracle this surface had. `/webauthn/login/start` filters the account's
111
+ // credentials by the requested id and refuses when none survive, so an id no
112
+ // credential can hold is refused by every real account. A decoy that answered with a
113
+ // challenge anyway was identifiable in two requests, whatever the policy.
114
+ await registerAndVerifyEmail(actor.ctx, actor.email);
115
+
116
+ const real = await startLogin(actor.ctx, actor.email);
117
+ const unknown = await startLogin(actor.ctx, UNKNOWN());
118
+
119
+ const ask = (token: string) =>
120
+ actor.ctx.post('/webauthn/login/start', {
121
+ headers: { Authorization: `Bearer ${token}` },
122
+ data: { credentialId: 'not-a-real-credential-id' },
123
+ });
124
+
125
+ const realRes = await ask(real.body.token);
126
+ const unknownRes = await ask(unknown.body.token);
127
+
128
+ expect(unknownRes.status()).toBe(realRes.status());
129
+ expect(await unknownRes.text()).toBe(await realRes.text());
130
+ });
131
+
132
+ test('a malformed identifier is still rejected', async ({ actor }) => {
133
+ // Not an enumeration signal: it does not depend on whether an account exists, and
134
+ // answering 200 here would leave a caller with no way to learn it typed nonsense.
135
+ const { status } = await startLogin(actor.ctx, 'not-an-identifier');
136
+
137
+ expect(status).toBe(400);
138
+ });
139
+ });
@@ -1,6 +1,6 @@
1
1
  import { request as playwrightRequest } from '@playwright/test';
2
2
 
3
- import { ADAPTER_URL, API_URL, MOCK_OIDC_PORT, REACT_URL } from './lib/env';
3
+ import { ADAPTER_URL, API_URL, FASTIFY_ADAPTER_URL, MOCK_OIDC_PORT, REACT_URL } from './lib/env';
4
4
  import { startMockOidc } from './mock-oidc';
5
5
 
6
6
  async function waitForHealth(url: string, name: string, timeoutMs = 120_000): Promise<void> {
@@ -39,6 +39,9 @@ export default async function globalSetup(): Promise<void> {
39
39
  if (process.env.SEAMLESS_VERIFY_ADAPTER === '1') {
40
40
  await waitForHealth(`${ADAPTER_URL}/`, 'adapter');
41
41
  }
42
+ if (process.env.SEAMLESS_VERIFY_ADAPTER_FASTIFY === '1') {
43
+ await waitForHealth(`${FASTIFY_ADAPTER_URL}/`, 'adapter-fastify');
44
+ }
42
45
  if (process.env.SEAMLESS_VERIFY_REACT === '1') {
43
46
  await waitForHealth(`${REACT_URL}/health`, 'react');
44
47
  }
@@ -24,9 +24,13 @@ export async function newApiActor(prefix = 'verify'): Promise<Actor> {
24
24
  return { email: uniqueEmail(prefix), ctx, dispose: () => ctx.dispose() };
25
25
  }
26
26
 
27
- // A browser-like actor for the cookie path: a context bound to the adapter that
27
+ // A browser-like actor for the cookie path: a context bound to an adapter that
28
28
  // persists cookies across requests (the adapter handles service tokens internally).
29
- export async function newAdapterActor(prefix = 'verify'): Promise<Actor> {
30
- const ctx = await playwrightRequest.newContext({ baseURL: ADAPTER_URL });
29
+ // `baseURL` selects which adapter, so the same specs drive Express and Fastify.
30
+ export async function newAdapterActor(
31
+ baseURL: string = ADAPTER_URL,
32
+ prefix = 'verify',
33
+ ): Promise<Actor> {
34
+ const ctx = await playwrightRequest.newContext({ baseURL });
31
35
  return { email: uniqueEmail(prefix), ctx, dispose: () => ctx.dispose() };
32
36
  }
@@ -4,6 +4,10 @@ import { randomInt, randomUUID } from 'crypto';
4
4
 
5
5
  export const API_URL = process.env.SEAMLESS_API_URL ?? 'http://localhost:5312';
6
6
  export const ADAPTER_URL = process.env.SEAMLESS_ADAPTER_URL ?? 'http://localhost:3000';
7
+ // The Fastify twin of the adapter, on its own port. The adapter specs run against
8
+ // both, so a regression in one framework is visible on its own row of the matrix.
9
+ export const FASTIFY_ADAPTER_URL =
10
+ process.env.SEAMLESS_FASTIFY_ADAPTER_URL ?? 'http://localhost:3001';
7
11
  export const REACT_URL = process.env.SEAMLESS_REACT_URL ?? 'http://localhost:5173';
8
12
  export const MOCK_OIDC_PORT = Number(process.env.SEAMLESS_MOCK_OIDC_PORT ?? 9000);
9
13
 
@@ -1,17 +1,26 @@
1
1
  import { test as base } from '@playwright/test';
2
2
 
3
3
  import { Actor, newAdapterActor, newApiActor } from './client';
4
+ import { ADAPTER_URL } from './env';
5
+
6
+ // `adapterUrl` is a project option rather than something a spec sets: the adapter
7
+ // suite is written once and each project points it at a different adopter backend
8
+ // (Express, Fastify). A spec cannot tell which one answered, which is the point.
9
+ export interface AdapterOptions {
10
+ adapterUrl: string;
11
+ }
4
12
 
5
13
  // `actor` drives the API directly (Bearer + service token); `adapterActor` drives
6
14
  // the adopter backend over cookies. Both are auto-created and disposed per test.
7
- export const test = base.extend<{ actor: Actor; adapterActor: Actor }>({
15
+ export const test = base.extend<AdapterOptions & { actor: Actor; adapterActor: Actor }>({
16
+ adapterUrl: [ADAPTER_URL, { option: true }],
8
17
  actor: async ({}, use) => {
9
18
  const actor = await newApiActor();
10
19
  await use(actor);
11
20
  await actor.dispose();
12
21
  },
13
- adapterActor: async ({}, use) => {
14
- const actor = await newAdapterActor();
22
+ adapterActor: async ({ adapterUrl }, use) => {
23
+ const actor = await newAdapterActor(adapterUrl);
15
24
  await use(actor);
16
25
  await actor.dispose();
17
26
  },
@@ -1,12 +1,16 @@
1
1
  import type { FullResult, Reporter, TestCase, TestResult } from '@playwright/test/reporter';
2
2
 
3
3
  // Prints a flow x layer conformance grid at the end of the run. Layer comes from
4
- // the spec's directory (api/adapter/react); flow from the spec file name, with a
5
- // few aliases folded together so the same flow lines up across layers.
4
+ // the Playwright project; flow from the spec file name, with a few aliases folded
5
+ // together so the same flow lines up across layers.
6
6
 
7
- const LAYERS = ['api', 'adapter', 'react'] as const;
7
+ const LAYERS = ['api', 'adapter', 'adapter-fastify', 'react'] as const;
8
8
  type Layer = (typeof LAYERS)[number];
9
9
 
10
+ function isLayer(name: string): name is Layer {
11
+ return (LAYERS as readonly string[]).includes(name);
12
+ }
13
+
10
14
  const FLOW_ALIASES: Record<string, string> = {
11
15
  emailOtpLogin: 'emailOtp',
12
16
  registration: 'register',
@@ -29,7 +33,11 @@ export default class MatrixReporter implements Reporter {
29
33
  onTestEnd(test: TestCase, result: TestResult): void {
30
34
  const match = test.location.file.match(/\/(api|adapter|react)\/([^/]+)\.spec\.[tj]s$/);
31
35
  if (!match) return;
32
- const layer = match[1] as Layer;
36
+ // The project name, not the directory: the two adapter projects run the same
37
+ // specs from ./adapter, so the path cannot tell them apart. Falls back to the
38
+ // directory for a run driven by something that does not name its projects.
39
+ const projectName = test.parent.project()?.name ?? '';
40
+ const layer = isLayer(projectName) ? projectName : (match[1] as Layer);
33
41
  const base = match[2];
34
42
  const flow = FLOW_ALIASES[base] ?? base;
35
43
  // Keyed by test id so the final attempt (after retries) is the one that counts.
@@ -51,11 +59,16 @@ export default class MatrixReporter implements Reporter {
51
59
  };
52
60
 
53
61
  const flowWidth = Math.max('flow'.length, ...flows.map((f) => f.length));
62
+ // Each column is as wide as its own header, so a long layer name (like
63
+ // adapter-fastify) widens its column instead of running into the next one.
64
+ const layerWidth = (layer: Layer) => layer.length + 3;
54
65
  const pad = (text: string, width: number) =>
55
66
  text + ' '.repeat(Math.max(0, width - text.length));
56
67
  const row = (label: string, get: (layer: Layer) => string) =>
57
- ` ${pad(label, flowWidth)} ${LAYERS.map((l) => pad(get(l), 9)).join('')}`;
58
- const rule = ` ${'-'.repeat(flowWidth + 3 + LAYERS.length * 9)}`;
68
+ ` ${pad(label, flowWidth)} ${LAYERS.map((l) => pad(get(l), layerWidth(l))).join('')}`;
69
+ const totalWidth =
70
+ flowWidth + 3 + LAYERS.reduce((sum, l) => sum + layerWidth(l), 0);
71
+ const rule = ` ${'-'.repeat(totalWidth)}`;
59
72
 
60
73
  const lines = [
61
74
  '',
@@ -90,8 +90,6 @@ export async function registerWithPasskey(page: Page, email: string): Promise<vo
90
90
  page.getByRole('heading', { name: /Secure Your Account with a Passkey/ }),
91
91
  ).toBeVisible();
92
92
  await page.getByRole('button', { name: 'Register Passkey' }).click();
93
- await page.getByPlaceholder(/MacBook/).fill('Verify Device');
94
- await page.getByRole('button', { name: 'Continue' }).click();
95
93
  }
96
94
 
97
95
  /** Sign in an existing user whose passkey is registered (the ceremony auto-runs). */
@@ -1,11 +1,12 @@
1
1
  import { defineConfig, devices } from '@playwright/test';
2
2
 
3
- import { REACT_URL } from './lib/env';
3
+ import { FASTIFY_ADAPTER_URL, REACT_URL } from './lib/env';
4
+ import type { AdapterOptions } from './lib/fixtures';
4
5
 
5
6
  // One runner, multiple projects. `api` and `adapter` hit HTTP directly (no
6
7
  // browser); `react` drives chromium against the starter SPA. global-setup
7
8
  // health-gates the stack before any project runs.
8
- export default defineConfig({
9
+ export default defineConfig<AdapterOptions>({
9
10
  testDir: '.',
10
11
  globalSetup: './global-setup.ts',
11
12
  timeout: 30_000,
@@ -25,7 +26,15 @@ export default defineConfig({
25
26
  // pulling browser specs into a project with no baseURL.
26
27
  projects: [
27
28
  { name: 'api', testDir: './api' },
29
+ // Both adapter projects run the same specs from the same directory; only the
30
+ // adopter backend they point at differs. Adding a framework is a project
31
+ // entry plus a compose service, not a copy of the suite.
28
32
  { name: 'adapter', testDir: './adapter' },
33
+ {
34
+ name: 'adapter-fastify',
35
+ testDir: './adapter',
36
+ use: { adapterUrl: FASTIFY_ADAPTER_URL },
37
+ },
29
38
  {
30
39
  name: 'react',
31
40
  testDir: './react',