Heimdall/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 996f21f58c Schema check: deterministic column collations, a named TEMP refusal, and kills for the printer
Soul pass 7, S7-3 and S7-4, P7-3 and P7-5.

Columns (S7-3): every declared column must be under a deterministic
collation. A case-insensitive provider_user_id whose key index compares
under "C" passed, and the store's own lookups then matched other users'
ids.

The check becomes checkSchemaRequirements(pool, requirements), with
Heimdall's store calling it with HEIMDALL_SCHEMA_REQUIREMENTS (its tables,
columns, keys and privileges). That seam lets a live test check a
predicate Postgres prints differently from how it is written (a literal
gains its cast): the check must still pass, so comparing the raw text
instead of the printed form (P7-3's Y1) now fails.

A role that may not create temporary tables was refused with 42501 and
told to check GC_ACCESS_DATABASE_URL_FILE (P7-5). The predicate printer now
refuses it as SCHEMA_TEMP_PRIVILEGE, and startup says to grant the role
TEMPORARY on its database, in fixed text.

New fixtures (S7-4): a case-insensitive collation on a key's first column
(Y3), NOT NULL added to a nullable column of linked_identities (Y5), and
every privilege on auth_completions except on attempt_id (Y8) are refused;
a key index that INCLUDEs an undeclared case-insensitive column starts
(Y4).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:52:41 +02:00
..
access-plugin.test.ts Tests/docs: promote Soul's two it.fails, update the tripwire and fixtures 2026-09-08 14:23:04 +02:00
app.test.ts Recipe test: combined runs from accepted values, config literals as probes, fresh import 2026-09-30 20:40:13 +02:00
browser-adapter.test.ts Resume browser sign-in by attempt id, not the completion code 2026-09-23 20:50:28 +02:00
caller-identity-attack-soul-r21.test.ts Close the three one-line holes Soul left as follow-ups 2026-09-08 15:08:38 +02:00
caller-identity-attack-soul.test.ts Narrow the built-in profile lookup so the branch typechecks 2026-09-08 14:54:17 +02:00
caller-identity-soul.test.ts Tests/docs: promote Soul's two it.fails, update the tripwire and fixtures 2026-09-08 14:23:04 +02:00
capability-rules.test.ts Make app capability rules data instead of code 2026-09-06 23:58:58 +02:00
config-secrets.test.ts readSecretInput: never print the path, refuse relative paths and blank secrets 2026-09-30 13:50:53 +02:00
entrypoint-secrets.test.ts Every start connects to Postgres; pin the signing key's read refusal 2026-09-30 15:30:10 +02:00
idunn-candidate-bind.test.ts Move the private command port with the candidate 2026-09-06 22:15:34 +02:00
idunn-rudp-health.test.ts Publish runtime presence in the contract Odin admits 2026-09-07 22:19:51 +02:00
odin-publication.test.ts Give Heimdall Odin documents unique catalog keys 2026-08-22 03:47:02 +02:00
presence-identity-descriptor.test.ts Assert descriptor selection instead of reading a live descriptor 2026-09-08 13:52:47 +02:00
private-command-diagnostics.test.ts Pin provider errors and Bifrost's reply exactly; defend errorIdentity's filters 2026-09-30 18:57:17 +02:00
process-write-lease.test.ts Follow CultLib's package rename and select workspaces by path 2026-09-07 22:26:24 +02:00
recipe-secrets.test.ts Recipe test: explore loadConfig as Idunn starts Heimdall 2026-09-30 22:52:40 +02:00
security.test.ts Pin the token-key length refusal custody now relies on 2026-09-30 14:03:24 +02:00
store.test.ts Schema check: deterministic column collations, a named TEMP refusal, and kills for the printer 2026-09-30 22:52:41 +02:00
verse-runtime.test.ts Retire the Spotiverse profile; keep the spotify provider intact for restore 2026-09-06 01:47:10 +02:00
verse-witness.test.ts Retire the Spotiverse profile; keep the spotify provider intact for restore 2026-09-06 01:47:10 +02:00