Live-Postgres tests: exercise the pending-link methods; add a standing live run #4
2 changed files with 28 additions and 0 deletions
15
scripts/test-live-pg.sh
Executable file
15
scripts/test-live-pg.sh
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env bash
|
||||
# Runs the whole vitest suite with the live-Postgres files enabled, against a
|
||||
# throwaway local cluster that this script starts and removes. Needs the
|
||||
# Postgres server binaries (initdb, pg_ctl) on PATH or in PG_BIN.
|
||||
# SOUL_PG_URL's test drops and recreates schema public, so it only ever sees
|
||||
# this disposable cluster.
|
||||
set -euo pipefail
|
||||
export PATH="${PG_BIN:-/usr/lib/postgresql/16/bin}:$PATH"
|
||||
dir="$(mktemp -d)"
|
||||
port="${PG_PORT:-54329}"
|
||||
trap 'pg_ctl -D "$dir" -m immediate stop >/dev/null 2>&1 || true; rm -rf "$dir"' EXIT
|
||||
initdb -D "$dir" -U pgadmin --auth=trust >/dev/null
|
||||
pg_ctl -D "$dir" -o "-p $port -k $dir -c listen_addresses=127.0.0.1" -l "$dir/log" -w start >/dev/null
|
||||
url="postgres://pgadmin@127.0.0.1:$port/postgres"
|
||||
HEIMDALL_TEST_PG_ADMIN_URL="$url" SOUL_PG_URL="$url" npx vitest run --config vitest.config.ts "$@"
|
||||
|
|
@ -398,6 +398,19 @@ async function exerciseStore(store: PostgresStore): Promise<Set<string>> {
|
|||
await s.consumeAuthCompletion("ghostlight", byCode.code, now);
|
||||
await s.createAuthCompletion({ ...completion, attemptId: attempt.handle });
|
||||
await s.consumeAuthCompletionByAttempt("ghostlight", attempt.handle, now);
|
||||
const found = await s.createAuthCompletion(completion);
|
||||
await s.findAuthCompletion("ghostlight", found.code);
|
||||
const pending = await s.createPendingLink({
|
||||
appSlug: "ghostlight",
|
||||
accountId: account.id,
|
||||
provider: "discord",
|
||||
providerUserId: "u2",
|
||||
identity: { ...identity, providerUserId: "u2" },
|
||||
returnTo: "https://x.test/",
|
||||
createdAt: now,
|
||||
expiresAt: later,
|
||||
});
|
||||
await s.consumePendingLink("ghostlight", pending.id, account.id, now);
|
||||
const snapshot = { accountId: account.id, provider: "discord" as const, scope: "ghostlight:probe", evaluatedAt: now, isAllowed: true, reasonCode: "ok", rawSummaryJson: {} };
|
||||
await s.upsertEntitlementSnapshot(snapshot);
|
||||
await s.upsertEntitlementSnapshot({ ...snapshot, isAllowed: false });
|
||||
|
|
|
|||
Loading…
Reference in a new issue