shouldReceive('current')->once()->andReturn([ 'mode' => 'bootstrap', ]); $this->app->instance(SystemDatabaseConfiguration::class, $configuration); $this->artisan('system-database:verify') ->assertExitCode(VerifySystemDatabase::EXIT_CONFIG_NOT_LOADED); } public function test_verify_command_reports_database_connection_failure(): void { $this->enableSharedMode(); $configuration = Mockery::mock(SystemDatabaseConfiguration::class); $configuration->shouldReceive('current')->once()->andReturn([ 'mode' => 'shared', 'connection' => 'missing-connection', ]); $this->app->instance(SystemDatabaseConfiguration::class, $configuration); $this->artisan('system-database:verify') ->assertExitCode(VerifySystemDatabase::EXIT_DATABASE_CONNECTION_FAILED); } public function test_verify_command_reports_system_table_failure(): void { $this->enableSharedMode(); $connection = (string) config('database.default'); $settings = [ 'mode' => 'shared', 'connection' => $connection, ]; $configuration = Mockery::mock(SystemDatabaseConfiguration::class); $configuration->shouldReceive('current')->once()->andReturn($settings); $configuration->shouldReceive('probe')->once()->with($settings)->andThrow(new RuntimeException('hidden')); $this->app->instance(SystemDatabaseConfiguration::class, $configuration); $this->artisan('system-database:verify') ->assertExitCode(VerifySystemDatabase::EXIT_SYSTEM_TABLE_VALIDATION_FAILED); } private function enableSharedMode(): void { config([ 'upstreams.stored_configuration.enabled' => true, 'upstreams.local_configuration.enabled' => false, ]); } }