// OnboardingWorkflow is now a thin tracking/observability record (see // workflow.js's header comment for why the actual write moved to oauth.js's // callback handler). Still covered by a real Restate server via // Testcontainers under alwaysReplay, per this repo's convention for any // handler-logic change — even a near-trivial handler can have a // non-determinism bug. Run with: node --test workflow.test.js import { test, before, after } from 'node:test'; import assert from 'node:assert/strict'; const { RestateTestEnvironment } = await import('@restatedev/restate-sdk-testcontainers'); const clients = await import('@restatedev/restate-sdk-clients'); const { onboardingWorkflow } = await import('./workflow.js'); let env; let ingress; before(async () => { env = await RestateTestEnvironment.start({ services: [onboardingWorkflow], alwaysReplay: true }); ingress = clients.connect({ url: env.baseUrl() }); }, { timeout: 60_000 }); after(async () => { if (env) await env.stop(); }); test('records a populated outcome, keyed by handle', async () => { const handle = 'populated-test.haiku.garden'; const invocation = await ingress .workflowClient(onboardingWorkflow, handle) .workflowSubmit({ status: 'populated', did: 'did:plc:test123', handle }); const result = await ingress.result(invocation); assert.equal(result.status, 'populated'); assert.equal(result.handle, handle); assert.equal(result.did, 'did:plc:test123'); }); test('records a not-verified outcome', async () => { const handle = 'not-verified-test.haiku.garden'; const invocation = await ingress .workflowClient(onboardingWorkflow, handle) .workflowSubmit({ status: 'not-verified', did: 'did:plc:test456', handle }); const result = await ingress.result(invocation); assert.equal(result.status, 'not-verified'); assert.equal(result.handle, handle); }); test('records an already-provisioned outcome (idempotent repeat click)', async () => { const handle = 'already-provisioned-test.haiku.garden'; const invocation = await ingress .workflowClient(onboardingWorkflow, handle) .workflowSubmit({ status: 'already-provisioned', did: 'did:plc:test789', handle }); const result = await ingress.result(invocation); assert.equal(result.status, 'already-provisioned'); });