fix(tests): isolate databases in memory and reject persistent connections

This commit is contained in:
2026-09-14 12:35:34 -03:00
parent 28ab6c9ae4
commit 289ceba3af
8 changed files with 177 additions and 14 deletions

17
tests/README.md Normal file
View File

@@ -0,0 +1,17 @@
# Database isolation
Run the suite with `composer test` or `vendor/bin/phpunit`. Both use
`tests/bootstrap.php`, which forces SQLite `:memory:` in all environment sources.
Tests never need a MySQL test database or the local database credentials.
`Tests\TestCase` rejects cached configuration and validates the default connection
before application providers boot. Its connection factory also rejects persistent
databases, URLs, and alternate endpoints for named or dynamically built connections.
Tests that need Laravel must extend this base class. Do not bypass these guards to
make a failing test pass; adapt database-specific tests to SQLite or use a separately
designed disposable database workflow.
`php tests/verify-database-safety.php` checks the guard and application wiring without
running test setup, queries, migrations, or opening PDO connections.
The suite does not validate MySQL-specific behavior when using SQLite.