mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-04 10:42:23 +00:00
v4.3.23 started Redis with the stored REDIS_PASSWORD value as it is and unquoted, and the connection URLs used the same value. 4.4.0 resolved a shared variable reference for the start command only, so after the first restart the server password changed and no longer matched the URLs. - Add legacy_password_quoting to standalone_redis; existing databases keep the v4.3.23 server password - New databases resolve REDIS_PASSWORD (local, shared or remote secret) and quote it in the start command - Connection URLs use the same password as the server - Hide the flag in the API, as for KeyDB and Dragonfly
42 lines
1.9 KiB
PHP
42 lines
1.9 KiB
PHP
<?php
|
|
|
|
use App\Models\Environment;
|
|
use App\Models\InstanceSettings;
|
|
use App\Models\Project;
|
|
use App\Models\Server;
|
|
use App\Models\StandaloneDocker;
|
|
use App\Models\Team;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
beforeEach(function () {
|
|
InstanceSettings::unguarded(fn () => InstanceSettings::firstOrCreate(['id' => 0], ['is_api_enabled' => true]));
|
|
Server::flushIdentityMap();
|
|
|
|
$this->team = Team::factory()->create();
|
|
$user = User::factory()->create();
|
|
$this->team->members()->attach($user->id, ['role' => 'owner']);
|
|
session(['currentTeam' => $this->team]);
|
|
$this->bearerToken = $user->createToken('test-token', ['root'])->plainTextToken;
|
|
|
|
$server = Server::factory()->create(['team_id' => $this->team->id]);
|
|
$this->destination = StandaloneDocker::query()->where('server_id', $server->id)->firstOrFail();
|
|
$project = Project::factory()->create(['team_id' => $this->team->id]);
|
|
$this->environment = Environment::factory()->create(['project_id' => $project->id]);
|
|
});
|
|
|
|
it('does not return the internal legacy password quoting flag in the database API', function (string $create) {
|
|
$database = $create($this->environment->id, $this->destination, []);
|
|
DB::table($database->getTable())->where('id', $database->id)->update(['legacy_password_quoting' => true]);
|
|
|
|
$headers = ['Authorization' => 'Bearer '.$this->bearerToken];
|
|
$single = $this->withHeaders($headers)->getJson("/api/v1/databases/{$database->uuid}")->assertOk();
|
|
$list = $this->withHeaders($headers)->getJson('/api/v1/databases')->assertOk();
|
|
|
|
expect($single->json())->not->toHaveKey('legacy_password_quoting')
|
|
->and(collect($list->json())->firstWhere('uuid', $database->uuid))->not->toHaveKey('legacy_password_quoting');
|
|
})->with(['keydb' => 'create_standalone_keydb', 'dragonfly' => 'create_standalone_dragonfly', 'redis' => 'create_standalone_redis']);
|