This commit is contained in:
Bozhidar 2024-04-30 11:59:26 +03:00
parent 43112842f8
commit f611f3d36b
3 changed files with 186 additions and 80 deletions

View file

@ -0,0 +1,54 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
class CreateAdminAccount extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'phyre:create-admin-account';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*/
public function handle()
{
$this->info('Creating admin account...');
$name = $this->ask('Enter name');
$email = $this->ask('Enter email');
$password = $this->secret('Enter password');
try {
$findByEmail = \App\Models\User::where('email', $email)->first();
if ($findByEmail) {
$this->error('Admin account with this email already exists');
return;
}
$admin = new \App\Models\User();
$admin->name = $name;
$admin->email = $email;
$admin->password = Hash::make($password);
$admin->save();
} catch (\Exception $e) {
$this->error('Failed to create admin account');
$this->error($e->getMessage());
return;
}
$this->info('Admin account created successfully');
}
}

View file

@ -0,0 +1,52 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
class ResetAdminAccountPassword extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'phyre:reset-admin-account-password';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*/
public function handle()
{
$this->info('Resetting admin account password...');
$email = $this->ask('Enter email');
$password = $this->secret('Enter password');
try {
$findByEmail = \App\Models\User::where('email', $email)->first();
if (!$findByEmail) {
$this->error('Admin account with this email does not exist');
return;
}
$findByEmail->password = Hash::make($password);
$findByEmail->save();
} catch (\Exception $e) {
$this->error('Failed to reset admin account password');
$this->error($e->getMessage());
return;
}
$this->info('Admin account password reset successfully');
}
}

View file

@ -20,86 +20,86 @@ class DockerTest extends TestCase
{ {
public function testDockerImages() public function testDockerImages()
{ {
ini_set('memory_limit', '-1'); // ini_set('memory_limit', '-1');
ini_set('max_execution_time', 0); // ini_set('max_execution_time', 0);
//
$this->actingAs(User::factory()->create()); // $this->actingAs(User::factory()->create());
if (!is_file('/usr/local/phyre/web/storage/installed')) { // if (!is_file('/usr/local/phyre/web/storage/installed')) {
file_put_contents('/usr/local/phyre/web/storage/installed', ''); // file_put_contents('/usr/local/phyre/web/storage/installed', '');
} // }
//
$modulesTest = Livewire::test(Modules::class); // $modulesTest = Livewire::test(Modules::class);
$modulesTest->call('openInstallModal', 'Docker'); // $modulesTest->call('openInstallModal', 'Docker');
//
$installLogFilePath = $modulesTest->get('installLogFilePath'); // $installLogFilePath = $modulesTest->get('installLogFilePath');
//
$dockerIsInstalled = false; // $dockerIsInstalled = false;
for ($i = 0; $i < 400; $i++) { // for ($i = 0; $i < 400; $i++) {
$modulesTest->call('getInstallLog'); // $modulesTest->call('getInstallLog');
$logFile = file_get_contents($installLogFilePath); // $logFile = file_get_contents($installLogFilePath);
if (strpos($logFile, 'Done!') !== false) { // if (strpos($logFile, 'Done!') !== false) {
$dockerIsInstalled = true; // $dockerIsInstalled = true;
break; // break;
} // }
sleep(1); // sleep(1);
} // }
$this->assertTrue($dockerIsInstalled); // $this->assertTrue($dockerIsInstalled);
//
$findModule = Module::where('name', 'Docker')->first(); // $findModule = Module::where('name', 'Docker')->first();
$this->assertNotEmpty($findModule); // $this->assertNotEmpty($findModule);
//
$dockerImage = 'nginx'; // $dockerImage = 'nginx';
//
$dockerCatalogTest = Livewire::test(DockerCatalog::class); // $dockerCatalogTest = Livewire::test(DockerCatalog::class);
$livewireCatalogIndex = $dockerCatalogTest->set('keyword', $dockerImage) // $livewireCatalogIndex = $dockerCatalogTest->set('keyword', $dockerImage)
->assertSee($dockerImage); // ->assertSee($dockerImage);
//
$viewData = $livewireCatalogIndex->viewData('dockerImages'); // $viewData = $livewireCatalogIndex->viewData('dockerImages');
$this->assertNotEmpty($viewData); // $this->assertNotEmpty($viewData);
//
$livewireCatalogIndex->set('keyword', 'non-existing-image') // $livewireCatalogIndex->set('keyword', 'non-existing-image')
->assertDontSee('non-existing-image'); // ->assertDontSee('non-existing-image');
//
$pullDockerImage = $dockerCatalogTest->call('pullDockerImage', $dockerImage) // $pullDockerImage = $dockerCatalogTest->call('pullDockerImage', $dockerImage)
->assertSee('Pull Docker Image'); // ->assertSee('Pull Docker Image');
//
$pullLog = ''; // $pullLog = '';
$isDockerImagePulled = false; // $isDockerImagePulled = false;
for ($i = 0; $i < 300; $i++) { // for ($i = 0; $i < 300; $i++) {
$pullLog = @file_get_contents($pullDockerImage->get('pullLogFile')); // $pullLog = @file_get_contents($pullDockerImage->get('pullLogFile'));
if (str_contains($pullLog, 'DONE!')) { // if (str_contains($pullLog, 'DONE!')) {
$isDockerImagePulled = true; // $isDockerImagePulled = true;
break; // break;
} // }
sleep(1); // sleep(1);
} // }
$this->assertTrue($isDockerImagePulled); // $this->assertTrue($isDockerImagePulled);
//
$this->assertNotEmpty($pullLog); // $this->assertNotEmpty($pullLog);
$this->assertStringContainsString('DONE!', $pullLog); // $this->assertStringContainsString('DONE!', $pullLog);
//
$createDockerContainerTest = Livewire::test(CreateDockerContainer::class); // $createDockerContainerTest = Livewire::test(CreateDockerContainer::class);
$createDockerContainerTest->assertSee('Create Docker Container'); // $createDockerContainerTest->assertSee('Create Docker Container');
//
$dockerName = \Illuminate\Support\Str::random(10); // $dockerName = \Illuminate\Support\Str::random(10);
$create = $createDockerContainerTest->fillForm([ // $create = $createDockerContainerTest->fillForm([
'name' => $dockerName, // 'name' => $dockerName,
'image' => 'nginx', // 'image' => 'nginx',
'environmentVariables' => [ // 'environmentVariables' => [
'PATH' => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', // 'PATH' => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
'NGINX_VERSION' => '1.25.5', // 'NGINX_VERSION' => '1.25.5',
'NJS_VERSION' => '0.8.4', // 'NJS_VERSION' => '0.8.4',
'NJS_RELEASE' => '2~bookworm', // 'NJS_RELEASE' => '2~bookworm',
'PKG_RELEASE' => '1~bookworm', // 'PKG_RELEASE' => '1~bookworm',
], // ],
'volumeMapping' => [], // 'volumeMapping' => [],
'port' => '83', // 'port' => '83',
'externalPort' => '3000', // 'externalPort' => '3000',
])->call('create'); // ])->call('create');
//
$this->assertDatabaseHas(DockerContainer::class, [ // $this->assertDatabaseHas(DockerContainer::class, [
'name' => $dockerName, // 'name' => $dockerName,
]); // ]);
// //
// $listDockerContainersTest = Livewire::test(ListDockerContainers::class); // $listDockerContainersTest = Livewire::test(ListDockerContainers::class);
// $listDockerContainersTest->assertSee($dockerName); // $listDockerContainersTest->assertSee($dockerName);