d2d.emegrendeles.hu/tests/Feature/FeatureFlagAdminUiTest.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();
});