44 lines
1.8 KiB
PHP
44 lines
1.8 KiB
PHP
<?php
|
|
use App\Livewire\Admin\EditExportTarget;
|
|
use Livewire\Livewire;
|
|
|
|
it('shows host, port and user only once SFTP is chosen', function () {
|
|
$c = Livewire::actingAs(operator('Owner'), 'operator')->test(EditExportTarget::class);
|
|
|
|
// A mounted directory has no host: the mount is made on the server with
|
|
// mount(8), and the application only names the directory it writes into.
|
|
$c->assertDontSee(__('finance.target.host'))
|
|
->assertSee(__('finance.target.path'));
|
|
|
|
$c->set('driver', 'sftp')
|
|
->assertSee(__('finance.target.host'))
|
|
->assertSee(__('finance.target.port'))
|
|
->assertSee(__('finance.target.username'))
|
|
->assertSee(__('finance.target.password'));
|
|
});
|
|
|
|
it('stores an SFTP destination with its host and keeps the password out of the row', function () {
|
|
Livewire::actingAs(operator('Owner'), 'operator')
|
|
->test(EditExportTarget::class)
|
|
->set('name', 'Storage Box')
|
|
->set('driver', 'sftp')
|
|
->set('host', 'u123456.your-storagebox.de')
|
|
->set('port', 23)
|
|
->set('username', 'u123456')
|
|
->set('password', 'geheim')
|
|
->set('path', '/rechnungen')
|
|
->call('save')
|
|
->assertHasNoErrors();
|
|
|
|
$target = App\Models\ExportTarget::query()->where('name', 'Storage Box')->firstOrFail();
|
|
|
|
expect($target->host)->toBe('u123456.your-storagebox.de')
|
|
->and($target->port)->toBe(23)
|
|
->and($target->username)->toBe('u123456')
|
|
// Stored encrypted, never in the clear — a credential in a settings
|
|
// table in plain text is a credential in every database dump.
|
|
->and($target->secret_key)->not->toBe('geheim')
|
|
->and($target->secret_key)->not->toBeEmpty()
|
|
->and(app(App\Services\Secrets\SecretCipher::class)->decrypt($target->secret_key))->toBe('geheim');
|
|
});
|