# Spry test suite: SA-1/SA-14 session-validity epoch semantics (frame # as_at vs sessions_valid_after, the NULL-epoch migration default, the # bump source), the M0002 migration's additive-only SQL shape, the # SA-7/SA-8 password policy (length bounds, deny-list, admin seeding # thresholds), SA-16 Argon2 PHC parsing and the rehash decision, and # SA-17's generic client error text. Prints PASS/FAIL lines and exits # non-zero on failure. # # rehash-probe is the live-database companion (not a unit test): it # boots a real SQLite store through the same wiring as SpryModule and # verifies the full SA-16 path — register, force-stale the stored hash, # authenticate, hash rewritten at current parameters, epoch untouched. spry_tests = executable('spry-tests', ['TestMain.vala'], dependencies: [statum_dep, spry_dep, sodium_deps, invercargill_sql_dep, sqlite_dep, astralis_dep, libxml_dep], install: false ) test('spry', spry_tests) rehash_probe = executable('rehash-probe', ['RehashProbe.vala'], dependencies: [statum_dep, spry_dep, sodium_deps, invercargill_sql_dep, invercargill_sql_inversion_dep, sqlite_dep, astralis_dep, libxml_dep, json_glib_dep, inversion_dep, glib_dep, gobject_dep, gio_dep], install: false ) test('spry-rehash-probe', rehash_probe, args: [join_paths(meson.current_build_dir(), 'rehash-probe.sqlite')], workdir: meson.current_build_dir() )