Test without policies

This commit is contained in:
Dan Harrin
2024-12-16 11:42:22 +00:00
parent 503618d06c
commit b9c8f75cfb
11 changed files with 136 additions and 5 deletions
@@ -0,0 +1,16 @@
<?php
namespace Filament\Tests\Database\Factories;
use Filament\Tests\Fixtures\Models\TicketMessage;
use Illuminate\Database\Eloquent\Factories\Factory;
class TicketMessageFactory extends Factory
{
protected $model = TicketMessage::class;
public function definition(): array
{
return [];
}
}
+7 -1
View File
@@ -2,6 +2,12 @@
namespace Filament\Tests\Fixtures\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Department extends Model {}
class Department extends Model
{
use HasFactory;
use SoftDeletes;
}
+7 -1
View File
@@ -2,6 +2,12 @@
namespace Filament\Tests\Fixtures\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Ticket extends Model {}
class Ticket extends Model
{
use HasFactory;
use SoftDeletes;
}
+13 -1
View File
@@ -2,6 +2,18 @@
namespace Filament\Tests\Fixtures\Models;
use Filament\Tests\Database\Factories\TicketMessageFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class TicketMessage extends Model {}
class TicketMessage extends Model
{
use HasFactory;
use SoftDeletes;
protected static function newFactory()
{
return TicketMessageFactory::new();
}
}
@@ -2,8 +2,8 @@
namespace Filament\Tests\Fixtures\Policies;
use App\Models\User;
use Filament\Tests\Fixtures\Models\Department;
use Filament\Tests\Fixtures\Models\User;
class DepartmentPolicy
{
+1 -1
View File
@@ -2,8 +2,8 @@
namespace Filament\Tests\Fixtures\Policies;
use App\Models\User;
use Filament\Tests\Fixtures\Models\Ticket;
use Filament\Tests\Fixtures\Models\User;
class TicketPolicy
{
@@ -11,9 +11,12 @@ use Filament\Panel;
use Filament\PanelProvider;
use Filament\Tests\Fixtures\Pages\Actions;
use Filament\Tests\Fixtures\Pages\Settings;
use Filament\Tests\Fixtures\Resources\Departments\DepartmentResource;
use Filament\Tests\Fixtures\Resources\PostCategories\PostCategoryResource;
use Filament\Tests\Fixtures\Resources\Posts\PostResource;
use Filament\Tests\Fixtures\Resources\Shop\Products\ProductResource;
use Filament\Tests\Fixtures\Resources\TicketMessages\TicketMessageResource;
use Filament\Tests\Fixtures\Resources\Tickets\TicketResource;
use Filament\Tests\Fixtures\Resources\Users\UserResource;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
@@ -34,9 +37,12 @@ class AdminPanelProvider extends PanelProvider
->passwordReset()
->emailVerification()
->resources([
DepartmentResource::class,
PostResource::class,
PostCategoryResource::class,
ProductResource::class,
TicketResource::class,
TicketMessageResource::class,
UserResource::class,
])
->pages([
@@ -1,9 +1,11 @@
<?php
use Filament\Facades\Filament;
use Filament\Tests\Fixtures\Models\Post;
use Filament\Tests\Fixtures\Resources\Posts\Pages\CreateAnotherPreservingDataPost;
use Filament\Tests\Fixtures\Resources\Posts\Pages\CreatePost;
use Filament\Tests\Fixtures\Resources\Posts\PostResource;
use Filament\Tests\Fixtures\Resources\TicketMessages\TicketMessageResource;
use Filament\Tests\Panels\Resources\TestCase;
use function Filament\Tests\livewire;
@@ -147,3 +149,17 @@ it('can validate input', function () {
->call('create')
->assertHasFormErrors(['title' => 'required']);
});
it('can ticket messages page without a policy', function () {
$this->get(TicketMessageResource::getUrl('create'))
->assertSuccessful();
});
it('does not render ticket messages page without a policy if authorization is strict', function () {
Filament::getCurrentPanel()->strictAuthorization();
$this->get(TicketMessageResource::getUrl('create'))
->assertServerError();
Filament::getCurrentPanel()->strictAuthorization(false);
});
@@ -1,9 +1,12 @@
<?php
use Filament\Actions\DeleteAction;
use Filament\Facades\Filament;
use Filament\Tests\Fixtures\Models\Post;
use Filament\Tests\Fixtures\Models\TicketMessage;
use Filament\Tests\Fixtures\Resources\Posts\Pages\EditPost;
use Filament\Tests\Fixtures\Resources\Posts\PostResource;
use Filament\Tests\Fixtures\Resources\TicketMessages\TicketMessageResource;
use Filament\Tests\Panels\Resources\TestCase;
use Illuminate\Support\Str;
@@ -109,3 +112,23 @@ it('can refresh data', function () {
'title' => $newPostTitle,
]);
});
it('can ticket messages page without a policy', function () {
$message = TicketMessage::factory()
->create();
$this->get(TicketMessageResource::getUrl('edit', ['record' => $message]))
->assertSuccessful();
});
it('does not render ticket messages page without a policy if authorization is strict', function () {
Filament::getCurrentPanel()->strictAuthorization();
$message = TicketMessage::factory()
->create();
$this->get(TicketMessageResource::getUrl('edit', ['record' => $message]))
->assertServerError();
Filament::getCurrentPanel()->strictAuthorization(false);
});
@@ -2,9 +2,12 @@
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Facades\Filament;
use Filament\Tests\Fixtures\Models\Post;
use Filament\Tests\Fixtures\Models\TicketMessage;
use Filament\Tests\Fixtures\Resources\Posts\Pages\ListPosts;
use Filament\Tests\Fixtures\Resources\Posts\PostResource;
use Filament\Tests\Fixtures\Resources\TicketMessages\TicketMessageResource;
use Filament\Tests\Fixtures\Resources\Users\UserResource;
use Filament\Tests\Panels\Resources\TestCase;
@@ -115,3 +118,23 @@ it('can bulk delete posts', function () {
assertSoftDeleted($post);
}
});
it('can render ticket messages page without a policy', function () {
TicketMessage::factory(10)
->create();
$this->get(TicketMessageResource::getUrl('index'))
->assertSuccessful();
});
it('does not render ticket messages page without a policy if authorization is strict', function () {
Filament::getCurrentPanel()->strictAuthorization();
TicketMessage::factory(10)
->create();
$this->get(TicketMessageResource::getUrl('index'))
->assertServerError();
Filament::getCurrentPanel()->strictAuthorization(false);
});
@@ -1,8 +1,11 @@
<?php
use Filament\Facades\Filament;
use Filament\Tests\Fixtures\Models\Post;
use Filament\Tests\Fixtures\Models\TicketMessage;
use Filament\Tests\Fixtures\Resources\Posts\Pages\ViewPost;
use Filament\Tests\Fixtures\Resources\Posts\PostResource;
use Filament\Tests\Fixtures\Resources\TicketMessages\TicketMessageResource;
use Filament\Tests\Panels\Resources\TestCase;
use Illuminate\Support\Str;
@@ -58,3 +61,23 @@ it('can refresh data', function () {
'title' => $newPostTitle,
]);
});
it('can ticket messages page without a policy', function () {
$message = TicketMessage::factory()
->create();
$this->get(TicketMessageResource::getUrl('view', ['record' => $message]))
->assertSuccessful();
});
it('does not render ticket messages page without a policy if authorization is strict', function () {
Filament::getCurrentPanel()->strictAuthorization();
$message = TicketMessage::factory()
->create();
$this->get(TicketMessageResource::getUrl('view', ['record' => $message]))
->assertServerError();
Filament::getCurrentPanel()->strictAuthorization(false);
});