InstanceSettings::firstOrCreate(['id' => 0])); }); it('backs up a user database named coolify-db as an ordinary database', function () { $team = Team::factory()->create(); $server = Server::factory()->create([ 'team_id' => $team->id, 'private_key_id' => PrivateKey::factory()->create(['team_id' => $team->id])->id, ]); $server->settings()->update(['is_reachable' => true, 'is_usable' => true]); $destination = StandaloneDocker::where('server_id', $server->id)->firstOrFail(); $environment = Environment::factory()->create(['project_id' => Project::factory()->create(['team_id' => $team->id])->id]); $database = create_standalone_postgresql($environment->id, $destination, [ 'name' => 'coolify-db', 'postgres_db' => 'appdb', 'status' => 'running:healthy', ]); $backup = new ScheduledDatabaseBackup; $backup->forceFill([ 'enabled' => true, 'save_s3' => false, 'frequency' => 'daily', 'database_id' => $database->id, 'database_type' => $database->getMorphClass(), 'team_id' => $team->id, ])->save(); $commands = collect(); Process::fake(function ($process) use ($commands) { $command = is_array(remoteProcessScript($process)) ? implode(' ', remoteProcessScript($process)) : remoteProcessScript($process); $commands->push($command); return Process::result(output: str_contains($command, 'du -b') ? '128' : ''); }); (new DatabaseBackupJob($backup->fresh()))->handle(); $execution = ScheduledDatabaseBackupExecution::query()->sole(); $dumpCommand = $commands->first(fn (string $command) => str_contains($command, 'pg_dump')); expect($database->isInstanceDatabase())->toBeFalse() ->and($execution->database_name)->toBe('appdb') ->and($execution->filename)->toContain('/databases/') ->and($execution->filename)->not->toContain('/coolify/coolify-db-') ->and($dumpCommand)->toContain($database->uuid) ->and($dumpCommand)->not->toContain('exec coolify-db '); expect($server->databases()->pluck('id'))->toContain($database->id); });