OpenMeet
Back to reliability
Reliability Test Lab

The whole suite, in the open.

Most tools ask you to trust the word “reliable.” Here is the actual map: every automated test that guards the correctness core, grouped by the guarantee it defends. It runs the same way on any machine — nothing here is a screenshot of a number we typed in.

282test cases
28test files
236run DB-free
46against real Postgres
Reproduce it yourself:pnpm testRuns the 236 DB-free cases. With a migrated Postgres, RUN_DB_TESTS=1 pnpm test adds the 46 integration cases that exercise the EXCLUDE constraint, the outbox worker, and RLS against a real database — 282 in total.

A shown slot is bookable

73 cases

A Postgres GiST EXCLUDE constraint (bookings_no_overlap) rejects two overlapping active rows for the same host at the database — concurrency is decided by the one component that cannot race with itself.

tests/integration/booking.int.test.tsDB11

Two concurrent commits for the same slot: exactly one wins, the other gets 409 SLOT_TAKEN — enforced by the real EXCLUDE constraint, not app-level locking.

tests/team.test.ts22

Round-robin (union) and collective (intersection) slot maths, weighted/priority fairness ordering, and deadlock-free guard-row insert order across a team of hosts.

tests/integration/team.int.test.tsDB9

Team booking against a real database: round-robin UNION and collective INTERSECTION availability, first-free-host binding with fall-through to the next host, an exhausted pool raising 23P01 (SLOT_TAKEN), idempotent replay on the idempotency key, and every FK indexed with RLS FORCED.

tests/paddedRange.test.ts17

Buffers before/after a meeting extend the exclusion range correctly, so back-to-back bookings can never encroach on padding.

tests/validate.test.ts12

Commit-time validation rejects malformed, out-of-window, and off-grid start instants before they reach the database.

tests/integration/host.int.test.tsDB2

Host-scoped booking reads and writes stay inside the row-level-security tenant boundary.

The timezone is always right

42 cases

Slots are computed by a DST-correct engine and shown in the invitee’s own timezone, detected then confirmed before booking — never a silent UTC guess.

tests/timezone.test.ts13

DST spring-forward gaps and fall-back overlaps resolve to the correct UTC instant across zones and transition dates.

tests/slots.test.ts19

The slot engine yields exactly the bookable instants for a host’s rules, overrides, and busy set — boundaries, horizon, and granularity included.

tests/scheduling.test.ts10

Availability rules, date overrides, and busy merges compose into the right open-time set for a host’s week.

Confirmed means confirmed

66 cases

The calendar write and the email go through a transactional outbox that reads the event back before it reports success — the guard against the “accepted but never synced” failure.

tests/integration/worker.int.test.tsDB6

The outbox worker drains write→read-back-verify→persist and only marks a job synced after the event is confirmed to exist.

tests/googleCalendar.test.ts14

The Google adapter’s write, idempotent retry, read-back verify, update-in-place, and delete all surface non-2xx as loud failures — never a false “synced”.

tests/outlookCalendar.test.ts11

The Outlook / Microsoft Graph adapter holds the same contract as the Google one — token caching, busy/tentative/out-of-office mapping, idempotent create with a transactionId, read-back verify, update-in-place on a 404, and safe delete — surfacing every non-2xx as a loud failure, never a false “synced”.

tests/integration/revalidation.int.test.tsDB9

Reschedule and cancel re-run the same exclusion and cap checks, so a changed booking is as safe as a new one.

tests/emails.test.ts6

Confirmation, reschedule, and cancel emails render with correct, timezone-accurate details.

tests/reminders.test.ts9

Reminders fire once, on time, and are suppressed when a booking is already cancelled or moved (no stale sends).

tests/smtp.test.ts11

The SMTP transport formats, retries, and reports delivery failures instead of dropping them silently.

Failures are visible

20 cases

A background worker drains the outbox; if it stalls, /api/health reports degraded and the public status page turns yellow. A stuck job is a loud signal, not an invisible pile-up.

tests/health.test.ts8

Health evaluation flips to degraded/unhealthy on the right queue-depth and reachability thresholds — the signal behind the public status page.

tests/rateLimit.test.ts8

The rate-limit policy admits and rejects at the configured thresholds and windows.

tests/integration/rateLimit.int.test.tsDB4

The durable rate-limit store enforces limits across processes against a real database.

Security & correctness hardening

81 cases

The suite also covers the boundaries around the core: CSP nonces, auth/session integrity, token safety, input validation, and tenant provisioning.

tests/csp.test.ts12

Every document gets a per-request nonce and the header nonce matches the script nonce.

tests/env.test.ts12

Environment parsing rejects missing/invalid configuration instead of booting into an unsafe state.

tests/googleOAuth.test.ts11

The OAuth start/callback flow signs state, checks CSRF, and refuses tampered callbacks.

tests/oauthState.test.ts7

Signed OAuth state round-trips and rejects forged or expired values.

tests/sessionToken.test.ts8

Session tokens are signed, verified, and expire as specified.

tests/redirect.test.ts5

Post-auth redirects are validated against open-redirect abuse.

tests/tokens.test.ts10

Manage-links are unguessable, single-purpose, and verify before granting access.

tests/validation.test.ts11

Request schemas reject malformed public and host inputs at the edge.

tests/integration/provisionHost.int.test.tsDB5

Host provisioning creates a correctly-scoped tenant with RLS in force.

Every one of these is live in the product.

The guarantees on this page aren’t a roadmap — they’re enforced in the code you’d run today. Create your booking link and put them to work.

Reliability Test Lab · OpenMeet