mirror of
https://github.com/coollabsio/coolify.git
synced 2026-10-05 21:47:10 -04:00
Reject names that are not portable identifiers before a deployment starts and when Docker flags are built. Quote the full KEY=value assignment for docker run -e flags, and declare generated Dockerfile ARGs as keys only.
52 lines
1.7 KiB
PHP
52 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Livewire\Project\Shared\EnvironmentVariable\Add;
|
|
use Livewire\Livewire;
|
|
|
|
it('rejects environment variable keys Docker cannot represent in the add form', function () {
|
|
Livewire::test(Add::class)
|
|
->set('key', 'BAD=KEY')
|
|
->set('value', 'value')
|
|
->call('submit')
|
|
->assertHasErrors(['key' => 'regex']);
|
|
});
|
|
|
|
it('allows Docker-compatible environment variable keys in the add form', function (string $key) {
|
|
Livewire::test(Add::class)
|
|
->set('key', $key)
|
|
->set('value', 'value')
|
|
->call('submit')
|
|
->assertHasNoErrors()
|
|
->assertDispatched('saveKey', function ($event, array $data) use ($key) {
|
|
return data_get($data, 'key') === $key || data_get($data, '0.key') === $key;
|
|
});
|
|
})->with([
|
|
'letters and underscore' => 'APP_ENV',
|
|
'dot' => 'node.name',
|
|
'uppercase dots' => 'XPACK.SECURITY.ENABLED',
|
|
]);
|
|
|
|
it('rejects environment variable keys that are not portable identifiers in the add form', function (string $key) {
|
|
Livewire::test(Add::class)
|
|
->set('key', $key)
|
|
->set('value', 'value')
|
|
->call('submit')
|
|
->assertHasErrors(['key' => 'regex']);
|
|
})->with([
|
|
'starts with digit' => '1BAD',
|
|
'hyphen' => 'BAD-KEY',
|
|
'command substitution' => 'BAD$(id)',
|
|
'semicolon' => 'BAD;KEY',
|
|
]);
|
|
|
|
it('trims surrounding whitespace in environment variable keys in the add form', function () {
|
|
Livewire::test(Add::class)
|
|
->set('key', ' node.name ')
|
|
->set('value', 'value')
|
|
->call('submit')
|
|
->assertHasNoErrors()
|
|
->assertDispatched('saveKey', function ($event, array $data) {
|
|
return data_get($data, 'key') === 'node.name' || data_get($data, '0.key') === 'node.name';
|
|
});
|
|
});
|