71 lines
2.3 KiB
PHP
71 lines
2.3 KiB
PHP
<?php
|
|
|
|
use App\Filament\Resources\FeatureFlags\FeatureFlagResource;
|
|
use App\Filament\Resources\FeatureFlags\Pages\ListFeatureFlags;
|
|
use App\Models\FeatureFlag;
|
|
use App\Models\Role;
|
|
use App\Models\User;
|
|
use App\Services\FeatureFlagRegistrar;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use Livewire\Livewire;
|
|
use Tests\TestCase;
|
|
|
|
uses(TestCase::class, RefreshDatabase::class);
|
|
|
|
test('a lista oldal hiba nélkül renderel, ha egy flagnek van szerepköre és stage-e', function () {
|
|
$devRole = Role::create(['name' => 'developer', 'display_name' => 'Developer']);
|
|
$developer = User::factory()->create();
|
|
$developer->addRole($devRole);
|
|
|
|
FeatureFlag::create([
|
|
'name' => 'FeatureFlagAdmin',
|
|
'label' => 'Feature flag admin felület',
|
|
'enabled' => true,
|
|
'stages' => null,
|
|
'roles' => ['developer'],
|
|
]);
|
|
FeatureFlag::create([
|
|
'name' => 'ui-test-flag',
|
|
'label' => 'UI teszt flag',
|
|
'enabled' => true,
|
|
'stages' => ['TEST'],
|
|
'roles' => ['developer'],
|
|
]);
|
|
app(FeatureFlagRegistrar::class)->registerAll();
|
|
|
|
$this->actingAs($developer);
|
|
|
|
Livewire::test(ListFeatureFlags::class)
|
|
->assertSuccessful();
|
|
});
|
|
|
|
test('csak a FeatureFlagAdmin flaggel rendelkező szerepkör éri el a feature flag admin felületet', function () {
|
|
$adminRole = Role::create(['name' => 'admin', 'display_name' => 'Admin']);
|
|
$devRole = Role::create(['name' => 'developer', 'display_name' => 'Developer']);
|
|
|
|
$admin = User::factory()->create();
|
|
$admin->addRole($adminRole);
|
|
|
|
$developer = User::factory()->create();
|
|
$developer->addRole($devRole);
|
|
|
|
FeatureFlag::create([
|
|
'name' => 'FeatureFlagAdmin',
|
|
'label' => 'Feature flag admin felület',
|
|
'enabled' => true,
|
|
'stages' => null,
|
|
'roles' => ['developer'],
|
|
]);
|
|
app(FeatureFlagRegistrar::class)->registerAll();
|
|
|
|
expect(Gate::forUser($admin)->allows('viewAny', FeatureFlag::class))->toBeFalse();
|
|
expect(Gate::forUser($developer)->allows('viewAny', FeatureFlag::class))->toBeTrue();
|
|
|
|
$this->actingAs($admin);
|
|
$this->get(FeatureFlagResource::getUrl())->assertForbidden();
|
|
|
|
$this->actingAs($developer);
|
|
$this->get(FeatureFlagResource::getUrl())->assertSuccessful();
|
|
});
|