feat: add containerized deployment workflow
This commit is contained in:
@@ -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([
|
||||
|
||||
Reference in New Issue
Block a user