Plugins base (#613)

* wip

* wip

* cleanup

* notification channels

* phpstan

* services

* remove server types

* refactoring

* refactoring
This commit is contained in:
Saeed Vaziry
2025-06-14 14:35:18 +02:00
committed by GitHub
parent adc0653d15
commit 131b828807
311 changed files with 3976 additions and 2660 deletions

View File

@ -9,10 +9,10 @@
use App\Models\Backup;
use App\Models\Database;
use App\Models\StorageProvider;
use App\StorageProviders\Dropbox;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Bus;
use Illuminate\Support\Facades\Http;
use JsonException;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
@ -21,12 +21,12 @@ class DatabaseBackupTest extends TestCase
use RefreshDatabase;
#[DataProvider('data')]
public function test_create_backup(string $db): void
public function test_create_backup(string $db, string $version): void
{
SSH::fake();
Http::fake();
$this->setupDatabase($db);
$this->setupDatabase($db, $version);
$this->actingAs($this->user);
@ -36,7 +36,7 @@ public function test_create_backup(string $db): void
$storage = StorageProvider::factory()->create([
'user_id' => $this->user->id,
'provider' => \App\Enums\StorageProvider::DROPBOX,
'provider' => Dropbox::id(),
]);
$this->post(route('backups.store', [
@ -47,7 +47,7 @@ public function test_create_backup(string $db): void
'interval' => '0 * * * *',
'keep' => '10',
])
->assertSessionHasNoErrors();
->assertSessionDoesntHaveErrors();
$this->assertDatabaseHas('backups', [
'status' => BackupStatus::RUNNING,
@ -58,9 +58,6 @@ public function test_create_backup(string $db): void
]);
}
/**
* @throws JsonException
*/
public function test_create_custom_interval_backup(): void
{
Bus::fake();
@ -73,7 +70,7 @@ public function test_create_custom_interval_backup(): void
$storage = StorageProvider::factory()->create([
'user_id' => $this->user->id,
'provider' => \App\Enums\StorageProvider::DROPBOX,
'provider' => Dropbox::id(),
]);
$this->post(route('backups.store', ['server' => $this->server]), [
@ -83,7 +80,7 @@ public function test_create_custom_interval_backup(): void
'custom_interval' => '* * * * *',
'keep' => '10',
])
->assertSessionHasNoErrors();
->assertSessionDoesntHaveErrors();
$this->assertDatabaseHas('backups', [
'status' => BackupStatus::RUNNING,
@ -100,7 +97,7 @@ public function test_see_backups_list(): void
$storage = StorageProvider::factory()->create([
'user_id' => $this->user->id,
'provider' => \App\Enums\StorageProvider::DROPBOX,
'provider' => Dropbox::id(),
]);
Backup::factory()->create([
@ -113,9 +110,6 @@ public function test_see_backups_list(): void
->assertSuccessful();
}
/**
* @throws JsonException
*/
public function test_update_backup(): void
{
$this->actingAs($this->user);
@ -126,7 +120,7 @@ public function test_update_backup(): void
$storage = StorageProvider::factory()->create([
'user_id' => $this->user->id,
'provider' => \App\Enums\StorageProvider::DROPBOX,
'provider' => Dropbox::id(),
]);
$backup = Backup::factory()->create([
@ -144,7 +138,7 @@ public function test_update_backup(): void
'interval' => '0 0 * * *',
'keep' => 10,
])
->assertSessionHasNoErrors();
->assertSessionDoesntHaveErrors();
$this->assertDatabaseHas('backups', [
'id' => $backup->id,
@ -154,9 +148,9 @@ public function test_update_backup(): void
}
#[DataProvider('data')]
public function test_delete_backup(string $db): void
public function test_delete_backup(string $db, string $version): void
{
$this->setupDatabase($db);
$this->setupDatabase($db, $version);
$this->actingAs($this->user);
@ -166,7 +160,7 @@ public function test_delete_backup(string $db): void
$storage = StorageProvider::factory()->create([
'user_id' => $this->user->id,
'provider' => \App\Enums\StorageProvider::DROPBOX,
'provider' => Dropbox::id(),
]);
$backup = Backup::factory()->create([
@ -176,7 +170,7 @@ public function test_delete_backup(string $db): void
]);
$this->delete(route('backups.destroy', ['server' => $this->server, 'backup' => $backup]))
->assertSessionHasNoErrors();
->assertSessionDoesntHaveErrors();
$this->assertDatabaseMissing('backups', [
'id' => $backup->id,
@ -184,12 +178,12 @@ public function test_delete_backup(string $db): void
}
#[DataProvider('data')]
public function test_restore_backup(string $db): void
public function test_restore_backup(string $db, string $version): void
{
Http::fake();
SSH::fake();
$this->setupDatabase($db);
$this->setupDatabase($db, $version);
$this->actingAs($this->user);
@ -199,7 +193,7 @@ public function test_restore_backup(string $db): void
$storage = StorageProvider::factory()->create([
'user_id' => $this->user->id,
'provider' => \App\Enums\StorageProvider::DROPBOX,
'provider' => Dropbox::id(),
]);
$backup = Backup::factory()->create([
@ -217,7 +211,7 @@ public function test_restore_backup(string $db): void
]), [
'database' => $database->id,
])
->assertSessionHasNoErrors();
->assertSessionDoesntHaveErrors();
$this->assertDatabaseHas('backup_files', [
'id' => $backupFile->id,
@ -225,14 +219,14 @@ public function test_restore_backup(string $db): void
]);
}
private function setupDatabase(string $database): void
private function setupDatabase(string $database, string $version): void
{
$this->server->services()->where('type', 'database')->delete();
$this->server->services()->create([
'type' => 'database',
'name' => config('core.databases_name.'.$database),
'version' => config('core.databases_version.'.$database),
'name' => $database,
'version' => $version,
]);
}
@ -242,9 +236,9 @@ private function setupDatabase(string $database): void
public static function data(): array
{
return [
[\App\Enums\Database::MYSQL80],
[\App\Enums\Database::MARIADB104],
[\App\Enums\Database::POSTGRESQL16],
['mysql', '8.4'],
['mariadb', '10.4'],
['postgresql', '16'],
];
}
}