This commit is contained in:
Saeed Vaziry 2024-03-25 22:52:45 +01:00
parent 165212fed2
commit d16d3c1385
2 changed files with 55 additions and 12 deletions

View File

@ -34,7 +34,7 @@ public function connect(bool $sftp = false): void
}
}
public function exec(string|array $commands, string $log = '', ?int $siteId = null, ?bool $stream = false): string
public function exec(string $command, string $log = '', ?int $siteId = null, ?bool $stream = false): string
{
if ($log) {
$this->setLog($log, $siteId);
@ -42,21 +42,19 @@ public function exec(string|array $commands, string $log = '', ?int $siteId = nu
$this->log = null;
}
if (! is_array($commands)) {
$commands = [$commands];
}
foreach ($commands as $command) {
if (is_string($command)) {
$this->commands[] = $command;
} else {
$this->commands[] = get_class($command);
}
}
$output = $this->output ?? 'fake output';
$this->log?->write($output);
if ($stream) {
echo $output;
ob_flush();
flush();
return '';
}
return $output;
}

View File

@ -0,0 +1,45 @@
<?php
namespace Tests\Feature;
use App\Facades\SSH;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ConsoleTest extends TestCase
{
use RefreshDatabase;
public function test_see_console(): void
{
$this->actingAs($this->user);
$this->get(route('servers.console', $this->server))
->assertSeeText('Headless Console');
}
public function test_run(): void
{
SSH::fake('fake output');
$this->actingAs($this->user);
$this->post(route('servers.console.run', $this->server), [
'user' => 'vito',
'command' => 'ls -la',
])->assertStreamedContent('fake output');
}
public function test_run_validation_error(): void
{
$this->actingAs($this->user);
$this->post(route('servers.console.run', $this->server), [
'user' => 'vito',
])->assertSessionHasErrors('command');
$this->post(route('servers.console.run', $this->server), [
'command' => 'ls -la',
])->assertSessionHasErrors('user');
}
}