feat: add containerized deployment workflow
CI/CD / test_and_check_app (push) Failing after 7m26s
CI/CD / Publish immutable image (push) Skipped

This commit is contained in:
2026-08-22 08:57:18 +02:00
parent e8ee23371b
commit afe99ea6d4
25 changed files with 1334 additions and 421 deletions
+36 -3
View File
@@ -5,11 +5,14 @@ namespace Tests\Feature\Models;
use App\Models\Team;
use App\Models\User;
use Database\Seeders\UserSeeder;
use DateTimeInterface;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use Mockery;
use Tests\TestCase;
class UserTest extends TestCase
@@ -32,9 +35,13 @@ class UserTest extends TestCase
]);
}
public function test_user_avatar_attribute_returns_public_storage_url(): void
public function test_user_avatar_attribute_returns_configured_storage_url(): void
{
Storage::fake('public');
config([
'filesystems.avatar_disk' => 'avatar-test',
'filesystems.avatar_urls_temporary' => false,
]);
Storage::fake('avatar-test');
$user = User::factory()->create([
'avatar_path' => 'avatars/generated/example.svg',
@@ -43,12 +50,38 @@ class UserTest extends TestCase
]);
$this->assertSame(
Storage::disk('public')->url('avatars/generated/example.svg'),
Storage::disk('avatar-test')->url('avatars/generated/example.svg'),
$user->avatar,
);
$this->assertArrayNotHasKey('avatar_path', $user->toArray());
}
public function test_user_avatar_attribute_returns_temporary_url_for_private_storage(): void
{
config([
'filesystems.avatar_disk' => 's3',
'filesystems.avatar_urls_temporary' => true,
'filesystems.avatar_url_expiration_minutes' => 10,
]);
$disk = Mockery::mock(FilesystemAdapter::class);
$disk->shouldReceive('temporaryUrl')
->once()
->with(
'avatars/uploads/private.png',
Mockery::on(fn (mixed $expiration): bool => $expiration instanceof DateTimeInterface),
)
->andReturn('https://object-storage.test/signed-avatar');
Storage::shouldReceive('disk')->once()->with('s3')->andReturn($disk);
$user = User::factory()->create([
'avatar_path' => 'avatars/uploads/private.png',
'avatar_is_generated' => false,
]);
$this->assertSame('https://object-storage.test/signed-avatar', $user->avatar);
}
public function test_user_can_identify_uploaded_avatars(): void
{
$generated = User::factory()->make([