From de084e4edaabdbb582179745edf314d4309001f6 Mon Sep 17 00:00:00 2001 From: paranarimasu <33796518+paranarimasu@users.noreply.github.com> Date: Sat, 11 Mar 2023 20:57:49 -0600 Subject: [PATCH] feat(api): adding feature flag for playlist management (#544) --- .env.example | 1 + app/Constants/Config/FlagConstants.php | 4 + .../FlagsAllowPlaylistManagementField.php | 25 +++ app/Http/Api/Schema/Config/FlagsSchema.php | 2 + .../Api/List/Playlist/TrackController.php | 9 ++ .../Api/List/PlaylistController.php | 9 ++ .../Pivot/List/PlaylistImageController.php | 9 ++ .../Config/Resource/FlagsResource.php | 4 + app/Providers/AppServiceProvider.php | 5 +- config/flags.php | 13 ++ database/factories/Auth/UserFactory.php | 23 +-- database/factories/Wiki/AnimeFactory.php | 6 +- database/factories/Wiki/ArtistFactory.php | 4 +- .../seeders/Admin/Setting/SettingSeeder.php | 10 ++ tests/Feature/Http/Admin/DumpTest.php | 2 +- .../Http/Admin/LatestDocumentDumpTest.php | 2 +- .../Feature/Http/Admin/LatestWikiDumpTest.php | 2 +- .../Announcement/AnnouncementDestroyTest.php | 4 +- .../AnnouncementForceDeleteTest.php | 2 +- .../Announcement/AnnouncementRestoreTest.php | 4 +- .../Announcement/AnnouncementStoreTest.php | 4 +- .../Announcement/AnnouncementUpdateTest.php | 4 +- .../Http/Api/Admin/Dump/DumpDestroyTest.php | 4 +- .../Api/Admin/Dump/DumpForceDeleteTest.php | 2 +- .../Http/Api/Admin/Dump/DumpRestoreTest.php | 4 +- .../Http/Api/Admin/Dump/DumpStoreTest.php | 4 +- .../Http/Api/Admin/Dump/DumpUpdateTest.php | 4 +- .../Me/List/Playlist/MyPlaylistIndexTest.php | 2 +- .../Billing/Balance/BalanceDestroyTest.php | 4 +- .../Balance/BalanceForceDeleteTest.php | 2 +- .../Billing/Balance/BalanceRestoreTest.php | 4 +- .../Api/Billing/Balance/BalanceStoreTest.php | 4 +- .../Api/Billing/Balance/BalanceUpdateTest.php | 4 +- .../Transaction/TransactionDestroyTest.php | 4 +- .../TransactionForceDeleteTest.php | 2 +- .../Transaction/TransactionRestoreTest.php | 4 +- .../Transaction/TransactionStoreTest.php | 4 +- .../Transaction/TransactionUpdateTest.php | 4 +- .../Api/Document/Page/PageDestroyTest.php | 4 +- .../Api/Document/Page/PageForceDeleteTest.php | 2 +- .../Api/Document/Page/PageRestoreTest.php | 4 +- .../Http/Api/Document/Page/PageStoreTest.php | 4 +- .../Http/Api/Document/Page/PageUpdateTest.php | 4 +- .../Api/List/Playlist/BackwardIndexTest.php | 4 +- .../Api/List/Playlist/ForwardIndexTest.php | 4 +- .../Api/List/Playlist/PlaylistDestroyTest.php | 72 ++++++++- .../List/Playlist/PlaylistForceDeleteTest.php | 64 +++++++- .../Api/List/Playlist/PlaylistRestoreTest.php | 77 ++++++++- .../Api/List/Playlist/PlaylistShowTest.php | 4 +- .../Api/List/Playlist/PlaylistStoreTest.php | 72 ++++++++- .../Api/List/Playlist/PlaylistUpdateTest.php | 107 ++++++++++--- .../List/Playlist/Track/TrackDestroyTest.php | 94 ++++++++++- .../Playlist/Track/TrackForceDeleteTest.php | 88 ++++++++++- .../List/Playlist/Track/TrackIndexTest.php | 4 +- .../List/Playlist/Track/TrackRestoreTest.php | 123 ++++++++++++++- .../Api/List/Playlist/Track/TrackShowTest.php | 6 +- .../List/Playlist/Track/TrackStoreTest.php | 108 +++++++++++-- .../List/Playlist/Track/TrackUpdateTest.php | 148 ++++++++++++++++-- .../PlaylistImageDestroyTest.php | 93 ++++++++++- .../PlaylistImage/PlaylistImageShowTest.php | 4 +- .../PlaylistImage/PlaylistImageStoreTest.php | 88 ++++++++++- .../Wiki/AnimeImage/AnimeImageDestroyTest.php | 14 +- .../Wiki/AnimeImage/AnimeImageStoreTest.php | 12 +- .../AnimeResourceDestroyTest.php | 14 +- .../AnimeResource/AnimeResourceStoreTest.php | 14 +- .../AnimeResource/AnimeResourceUpdateTest.php | 7 +- .../AnimeSeries/AnimeSeriesDestroyTest.php | 14 +- .../Wiki/AnimeSeries/AnimeSeriesStoreTest.php | 14 +- .../AnimeStudio/AnimeStudioDestroyTest.php | 14 +- .../Wiki/AnimeStudio/AnimeStudioStoreTest.php | 14 +- .../AnimeThemeEntryVideoDestroyTest.php | 14 +- .../AnimeThemeEntryVideoStoreTest.php | 14 +- .../ArtistImage/ArtistImageDestroyTest.php | 14 +- .../Wiki/ArtistImage/ArtistImageStoreTest.php | 14 +- .../ArtistMember/ArtistMemberDestroyTest.php | 4 +- .../ArtistMember/ArtistMemberShowTest.php | 1 - .../ArtistMember/ArtistMemberStoreTest.php | 4 +- .../ArtistMember/ArtistMemberUpdateTest.php | 2 +- .../ArtistResourceDestroyTest.php | 14 +- .../ArtistResourceStoreTest.php | 14 +- .../ArtistResourceUpdateTest.php | 7 +- .../Wiki/ArtistSong/ArtistSongDestroyTest.php | 14 +- .../Wiki/ArtistSong/ArtistSongStoreTest.php | 14 +- .../Wiki/ArtistSong/ArtistSongUpdateTest.php | 7 +- .../StudioImage/StudioImageDestroyTest.php | 14 +- .../Wiki/StudioImage/StudioImageStoreTest.php | 14 +- .../StudioResourceDestroyTest.php | 14 +- .../StudioResourceStoreTest.php | 14 +- .../StudioResourceUpdateTest.php | 7 +- tests/Feature/Http/Api/ThrottleTest.php | 2 +- .../Http/Api/Wiki/Anime/AnimeDestroyTest.php | 4 +- .../Api/Wiki/Anime/AnimeForceDeleteTest.php | 2 +- .../Http/Api/Wiki/Anime/AnimeRestoreTest.php | 4 +- .../Http/Api/Wiki/Anime/AnimeStoreTest.php | 4 +- .../Http/Api/Wiki/Anime/AnimeUpdateTest.php | 4 +- .../Wiki/Anime/Synonym/SynonymDestroyTest.php | 4 +- .../Anime/Synonym/SynonymForceDeleteTest.php | 2 +- .../Wiki/Anime/Synonym/SynonymRestoreTest.php | 4 +- .../Wiki/Anime/Synonym/SynonymStoreTest.php | 4 +- .../Wiki/Anime/Synonym/SynonymUpdateTest.php | 4 +- .../Anime/Theme/Entry/EntryDestroyTest.php | 4 +- .../Theme/Entry/EntryForceDeleteTest.php | 2 +- .../Anime/Theme/Entry/EntryRestoreTest.php | 4 +- .../Wiki/Anime/Theme/Entry/EntryStoreTest.php | 4 +- .../Anime/Theme/Entry/EntryUpdateTest.php | 4 +- .../Api/Wiki/Anime/Theme/ThemeDestroyTest.php | 4 +- .../Wiki/Anime/Theme/ThemeForceDeleteTest.php | 2 +- .../Api/Wiki/Anime/Theme/ThemeRestoreTest.php | 4 +- .../Api/Wiki/Anime/Theme/ThemeStoreTest.php | 4 +- .../Api/Wiki/Anime/Theme/ThemeUpdateTest.php | 4 +- .../Api/Wiki/Artist/ArtistDestroyTest.php | 4 +- .../Api/Wiki/Artist/ArtistForceDeleteTest.php | 2 +- .../Api/Wiki/Artist/ArtistRestoreTest.php | 4 +- .../Http/Api/Wiki/Artist/ArtistStoreTest.php | 4 +- .../Http/Api/Wiki/Artist/ArtistUpdateTest.php | 4 +- .../Http/Api/Wiki/Audio/AudioDestroyTest.php | 4 +- .../Api/Wiki/Audio/AudioForceDeleteTest.php | 2 +- .../Http/Api/Wiki/Audio/AudioRestoreTest.php | 4 +- .../Http/Api/Wiki/Audio/AudioStoreTest.php | 4 +- .../Http/Api/Wiki/Audio/AudioUpdateTest.php | 4 +- .../ExternalResourceDestroyTest.php | 4 +- .../ExternalResourceForceDeleteTest.php | 2 +- .../ExternalResourceRestoreTest.php | 4 +- .../ExternalResourceStoreTest.php | 4 +- .../ExternalResourceUpdateTest.php | 4 +- .../Http/Api/Wiki/Image/ImageDestroyTest.php | 4 +- .../Api/Wiki/Image/ImageForceDeleteTest.php | 2 +- .../Http/Api/Wiki/Image/ImageRestoreTest.php | 4 +- .../Http/Api/Wiki/Image/ImageStoreTest.php | 4 +- .../Http/Api/Wiki/Image/ImageUpdateTest.php | 4 +- .../Api/Wiki/Series/SeriesDestroyTest.php | 4 +- .../Api/Wiki/Series/SeriesForceDeleteTest.php | 2 +- .../Api/Wiki/Series/SeriesRestoreTest.php | 4 +- .../Http/Api/Wiki/Series/SeriesStoreTest.php | 4 +- .../Http/Api/Wiki/Series/SeriesUpdateTest.php | 4 +- .../Http/Api/Wiki/Song/SongDestroyTest.php | 4 +- .../Api/Wiki/Song/SongForceDeleteTest.php | 2 +- .../Http/Api/Wiki/Song/SongRestoreTest.php | 4 +- .../Http/Api/Wiki/Song/SongStoreTest.php | 2 +- .../Http/Api/Wiki/Song/SongUpdateTest.php | 4 +- .../Api/Wiki/Studio/StudioDestroyTest.php | 4 +- .../Api/Wiki/Studio/StudioForceDeleteTest.php | 2 +- .../Api/Wiki/Studio/StudioRestoreTest.php | 4 +- .../Http/Api/Wiki/Studio/StudioStoreTest.php | 4 +- .../Http/Api/Wiki/Studio/StudioUpdateTest.php | 4 +- .../Wiki/Video/Script/ScriptDestroyTest.php | 4 +- .../Video/Script/ScriptForceDeleteTest.php | 2 +- .../Wiki/Video/Script/ScriptRestoreTest.php | 4 +- .../Api/Wiki/Video/Script/ScriptStoreTest.php | 4 +- .../Wiki/Video/Script/ScriptUpdateTest.php | 4 +- .../Http/Api/Wiki/Video/VideoDestroyTest.php | 4 +- .../Api/Wiki/Video/VideoForceDeleteTest.php | 2 +- .../Http/Api/Wiki/Video/VideoRestoreTest.php | 4 +- .../Http/Api/Wiki/Video/VideoStoreTest.php | 4 +- .../Http/Api/Wiki/Video/VideoUpdateTest.php | 4 +- tests/Feature/Http/Wiki/Audio/AudioTest.php | 2 +- .../Http/Wiki/Video/Script/ScriptTest.php | 2 +- tests/Feature/Http/Wiki/Video/VideoTest.php | 2 +- 158 files changed, 1591 insertions(+), 348 deletions(-) create mode 100644 app/Http/Api/Field/Config/Flags/FlagsAllowPlaylistManagementField.php diff --git a/.env.example b/.env.example index 068fd2bdb..6c0040ddb 100644 --- a/.env.example +++ b/.env.example @@ -164,6 +164,7 @@ ALLOW_DISCORD_NOTIFICATIONS=false ALLOW_VIEW_RECORDING=false ALLOW_DUMP_DOWNLOADING=false ALLOW_SCRIPT_DOWNLOADING=false +ALLOW_PLAYLIST_MANAGEMENT=false # fortify FORTIFY_HOME=http://localhost diff --git a/app/Constants/Config/FlagConstants.php b/app/Constants/Config/FlagConstants.php index b9eb12fa4..ef8504f4b 100644 --- a/app/Constants/Config/FlagConstants.php +++ b/app/Constants/Config/FlagConstants.php @@ -32,4 +32,8 @@ class FlagConstants final public const ALLOW_SCRIPT_DOWNLOADING_FLAG = 'allow_script_downloading'; final public const ALLOW_SCRIPT_DOWNLOADING_FLAG_QUALIFIED = 'flags.allow_script_downloading'; + + final public const ALLOW_PLAYLIST_MANAGEMENT = 'allow_playlist_management'; + + final public const ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED = 'flags.allow_playlist_management'; } diff --git a/app/Http/Api/Field/Config/Flags/FlagsAllowPlaylistManagementField.php b/app/Http/Api/Field/Config/Flags/FlagsAllowPlaylistManagementField.php new file mode 100644 index 000000000..7d39e51f1 --- /dev/null +++ b/app/Http/Api/Field/Config/Flags/FlagsAllowPlaylistManagementField.php @@ -0,0 +1,25 @@ +append(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED) + ->append(',Playlist Management Disabled') + ->__toString(); + + $this->middleware($isPlaylistManagementAllowed)->except(['index', 'show']); } /** diff --git a/app/Http/Controllers/Api/List/PlaylistController.php b/app/Http/Controllers/Api/List/PlaylistController.php index cd8466778..bca207d7e 100644 --- a/app/Http/Controllers/Api/List/PlaylistController.php +++ b/app/Http/Controllers/Api/List/PlaylistController.php @@ -11,6 +11,7 @@ use App\Actions\Http\Api\RestoreAction; use App\Actions\Http\Api\ShowAction; use App\Actions\Http\Api\StoreAction; use App\Actions\Http\Api\UpdateAction; +use App\Constants\Config\FlagConstants; use App\Enums\Models\List\PlaylistVisibility; use App\Http\Api\Query\Query; use App\Http\Controllers\Api\BaseController; @@ -24,6 +25,7 @@ use App\Models\List\Playlist; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Str; /** * Class PlaylistController. @@ -36,6 +38,13 @@ class PlaylistController extends BaseController public function __construct() { parent::__construct(Playlist::class, 'playlist'); + + $isPlaylistManagementAllowed = Str::of('is_feature_enabled:') + ->append(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED) + ->append(',Playlist Management Disabled') + ->__toString(); + + $this->middleware($isPlaylistManagementAllowed)->except(['index', 'show']); } /** diff --git a/app/Http/Controllers/Api/Pivot/List/PlaylistImageController.php b/app/Http/Controllers/Api/Pivot/List/PlaylistImageController.php index bfe9e744c..4ea6b6f02 100644 --- a/app/Http/Controllers/Api/Pivot/List/PlaylistImageController.php +++ b/app/Http/Controllers/Api/Pivot/List/PlaylistImageController.php @@ -8,6 +8,7 @@ use App\Actions\Http\Api\DestroyAction; use App\Actions\Http\Api\IndexAction; use App\Actions\Http\Api\ShowAction; use App\Actions\Http\Api\StoreAction; +use App\Constants\Config\FlagConstants; use App\Enums\Models\List\PlaylistVisibility; use App\Http\Api\Query\Query; use App\Http\Controllers\Api\Pivot\PivotController; @@ -21,6 +22,7 @@ use App\Models\Wiki\Image; use App\Pivots\List\PlaylistImage; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\JsonResponse; +use Illuminate\Support\Str; /** * Class PlaylistImageController. @@ -33,6 +35,13 @@ class PlaylistImageController extends PivotController public function __construct() { parent::__construct(Playlist::class, 'playlist', Image::class, 'image'); + + $isPlaylistManagementAllowed = Str::of('is_feature_enabled:') + ->append(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED) + ->append(',Playlist Management Disabled') + ->__toString(); + + $this->middleware($isPlaylistManagementAllowed)->except(['index', 'show']); } /** diff --git a/app/Http/Resources/Config/Resource/FlagsResource.php b/app/Http/Resources/Config/Resource/FlagsResource.php index 0fc7b2d6a..f7bb389e1 100644 --- a/app/Http/Resources/Config/Resource/FlagsResource.php +++ b/app/Http/Resources/Config/Resource/FlagsResource.php @@ -72,6 +72,10 @@ class FlagsResource extends JsonResource $result[FlagConstants::ALLOW_SCRIPT_DOWNLOADING_FLAG] = Config::bool(FlagConstants::ALLOW_SCRIPT_DOWNLOADING_FLAG_QUALIFIED); } + if ($criteria === null || $criteria->isAllowedField(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT)) { + $result[FlagConstants::ALLOW_PLAYLIST_MANAGEMENT] = Config::bool(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED); + } + return $result; } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index eb845c5d2..ffd27e86f 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -64,10 +64,11 @@ class AppServiceProvider extends ServiceProvider AboutCommand::add('Flags', [ 'Allow Audio Streams' => fn () => Config::bool(FlagConstants::ALLOW_AUDIO_STREAMS_FLAG_QUALIFIED) ? 'true' : 'false', 'Allow Discord Notifications' => fn () => Config::bool(FlagConstants::ALLOW_DISCORD_NOTIFICATIONS_FLAG_QUALIFIED) ? 'true' : 'false', + 'Allow Dump Downloading' => fn () => Config::bool(FlagConstants::ALLOW_DUMP_DOWNLOADING_FLAG_QUALIFIED) ? 'true' : 'false', + 'Allow Playlist Management' => fn () => Config::bool(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED) ? 'true' : 'false', + 'Allow Script Downloading' => fn () => Config::bool(FlagConstants::ALLOW_SCRIPT_DOWNLOADING_FLAG_QUALIFIED) ? 'true' : 'false', 'Allow Video Streams' => fn () => Config::bool(FlagConstants::ALLOW_VIDEO_STREAMS_FLAG_QUALIFIED) ? 'true' : 'false', 'Allow View Recording' => fn () => Config::bool(FlagConstants::ALLOW_VIEW_RECORDING_FLAG_QUALIFIED) ? 'true' : 'false', - 'Allow Dump Downloading' => fn () => Config::bool(FlagConstants::ALLOW_DUMP_DOWNLOADING_FLAG_QUALIFIED) ? 'true' : 'false', - 'Allow Script Downloading' => fn () => Config::bool(FlagConstants::ALLOW_SCRIPT_DOWNLOADING_FLAG_QUALIFIED) ? 'true' : 'false', ]); AboutCommand::add('Images', [ diff --git a/config/flags.php b/config/flags.php index 7b8ba1296..3430f32fc 100644 --- a/config/flags.php +++ b/config/flags.php @@ -82,4 +82,17 @@ return [ */ 'allow_script_downloading' => (bool) env('ALLOW_SCRIPT_DOWNLOADING', false), + + /* + |-------------------------------------------------------------------------- + | Allow Playlist Management + |-------------------------------------------------------------------------- + | + | When playlist management is allowed, requests to write routes for playlist resources + | permit authorized users. If disabled, requests to write routes for playlist resources + | will raise a 403 Forbidden response. + | + */ + + 'allow_playlist_management' => (bool) env('ALLOW_PLAYLIST_MANAGEMENT', false), ]; diff --git a/database/factories/Auth/UserFactory.php b/database/factories/Auth/UserFactory.php index edf814a04..616d64d24 100644 --- a/database/factories/Auth/UserFactory.php +++ b/database/factories/Auth/UserFactory.php @@ -48,29 +48,10 @@ class UserFactory extends Factory /** * Create and assign permission to user. * - * @param string $ability + * @param string ...$abilities * @return static */ - public function withPermission(string $ability): static - { - return $this->afterCreating( - function (User $user) use ($ability) { - $permission = Permission::findOrCreate($ability); - - App::make(PermissionRegistrar::class)->forgetCachedPermissions(); - - $user->givePermissionTo($permission); - } - ); - } - - /** - * Create and assign permission to user. - * - * @param string[] $abilities - * @return static - */ - public function withPermissions(array $abilities): static + public function withPermissions(string ...$abilities): static { return $this->afterCreating( function (User $user) use ($abilities) { diff --git a/database/factories/Wiki/AnimeFactory.php b/database/factories/Wiki/AnimeFactory.php index 7b224b887..0f269816f 100644 --- a/database/factories/Wiki/AnimeFactory.php +++ b/database/factories/Wiki/AnimeFactory.php @@ -79,17 +79,17 @@ class AnimeFactory extends Factory ->create(); Series::factory() - ->hasAttached($anime, [], 'anime') + ->hasAttached($anime, [], Series::RELATION_ANIME) ->count(fake()->numberBetween(1, 3)) ->create(); ExternalResource::factory() - ->hasAttached($anime, [], 'anime') + ->hasAttached($anime, [], ExternalResource::RELATION_ANIME) ->count(fake()->numberBetween(1, 3)) ->create(); Image::factory() - ->hasAttached($anime, [], 'anime') + ->hasAttached($anime, [], Image::RELATION_ANIME) ->count(fake()->numberBetween(1, 3)) ->create(); } diff --git a/database/factories/Wiki/ArtistFactory.php b/database/factories/Wiki/ArtistFactory.php index d09e1e31c..2b29b23be 100644 --- a/database/factories/Wiki/ArtistFactory.php +++ b/database/factories/Wiki/ArtistFactory.php @@ -59,12 +59,12 @@ class ArtistFactory extends Factory ->create(); Artist::factory() - ->hasAttached($artist, [], 'members') + ->hasAttached($artist, [], Artist::RELATION_MEMBERS) ->count(fake()->randomDigitNotNull()) ->create(); Artist::factory() - ->hasAttached($artist, [], 'groups') + ->hasAttached($artist, [], Artist::RELATION_GROUPS) ->count(fake()->randomDigitNotNull()) ->create(); diff --git a/database/seeders/Admin/Setting/SettingSeeder.php b/database/seeders/Admin/Setting/SettingSeeder.php index b8e1be0cc..77e37a5d5 100644 --- a/database/seeders/Admin/Setting/SettingSeeder.php +++ b/database/seeders/Admin/Setting/SettingSeeder.php @@ -112,5 +112,15 @@ class SettingSeeder extends Seeder Setting::ATTRIBUTE_VALUE => Config::get(WikiConstants::FEATURED_VIDEO_SETTING_QUALIFIED, ''), ] ); + + Setting::query()->firstOrCreate( + [ + Setting::ATTRIBUTE_KEY => FlagConstants::ALLOW_PLAYLIST_MANAGEMENT, + ], + [ + Setting::ATTRIBUTE_KEY => FlagConstants::ALLOW_PLAYLIST_MANAGEMENT, + Setting::ATTRIBUTE_VALUE => 'false', + ] + ); } } diff --git a/tests/Feature/Http/Admin/DumpTest.php b/tests/Feature/Http/Admin/DumpTest.php index 186fc4ab3..acb65117c 100644 --- a/tests/Feature/Http/Admin/DumpTest.php +++ b/tests/Feature/Http/Admin/DumpTest.php @@ -60,7 +60,7 @@ class DumpTest extends TestCase Dump::ATTRIBUTE_PATH => $fsFile, ]); - $user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); + $user = User::factory()->withPermissions(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Admin/LatestDocumentDumpTest.php b/tests/Feature/Http/Admin/LatestDocumentDumpTest.php index d500c482b..5c093c367 100644 --- a/tests/Feature/Http/Admin/LatestDocumentDumpTest.php +++ b/tests/Feature/Http/Admin/LatestDocumentDumpTest.php @@ -88,7 +88,7 @@ class LatestDocumentDumpTest extends TestCase Dump::ATTRIBUTE_PATH => $fsFile, ]); - $user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); + $user = User::factory()->withPermissions(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Admin/LatestWikiDumpTest.php b/tests/Feature/Http/Admin/LatestWikiDumpTest.php index ad87c2672..9ab64f91b 100644 --- a/tests/Feature/Http/Admin/LatestWikiDumpTest.php +++ b/tests/Feature/Http/Admin/LatestWikiDumpTest.php @@ -88,7 +88,7 @@ class LatestWikiDumpTest extends TestCase Dump::ATTRIBUTE_PATH => $fsFile, ]); - $user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); + $user = User::factory()->withPermissions(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementDestroyTest.php b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementDestroyTest.php index f0ec59402..8870c7892 100644 --- a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementDestroyTest.php +++ b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementDestroyTest.php @@ -61,7 +61,7 @@ class AnnouncementDestroyTest extends TestCase $announcement->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class AnnouncementDestroyTest extends TestCase { $announcement = Announcement::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementForceDeleteTest.php b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementForceDeleteTest.php index 3c8e78ea6..eb4903d1c 100644 --- a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementForceDeleteTest.php +++ b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementForceDeleteTest.php @@ -59,7 +59,7 @@ class AnnouncementForceDeleteTest extends TestCase { $announcement = Announcement::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementRestoreTest.php b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementRestoreTest.php index 64a30eca1..44bbea537 100644 --- a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementRestoreTest.php +++ b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementRestoreTest.php @@ -63,7 +63,7 @@ class AnnouncementRestoreTest extends TestCase { $announcement = Announcement::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class AnnouncementRestoreTest extends TestCase $announcement->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementStoreTest.php b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementStoreTest.php index a422a7e9b..406b7e2ad 100644 --- a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementStoreTest.php +++ b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementStoreTest.php @@ -57,7 +57,7 @@ class AnnouncementStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); @@ -77,7 +77,7 @@ class AnnouncementStoreTest extends TestCase { $parameters = Announcement::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementUpdateTest.php b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementUpdateTest.php index 7f9d21d50..e4042ffa3 100644 --- a/tests/Feature/Http/Api/Admin/Announcement/AnnouncementUpdateTest.php +++ b/tests/Feature/Http/Api/Admin/Announcement/AnnouncementUpdateTest.php @@ -67,7 +67,7 @@ class AnnouncementUpdateTest extends TestCase $parameters = Announcement::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class AnnouncementUpdateTest extends TestCase $parameters = Announcement::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Announcement::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Announcement::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Dump/DumpDestroyTest.php b/tests/Feature/Http/Api/Admin/Dump/DumpDestroyTest.php index 338f1712f..88650ef02 100644 --- a/tests/Feature/Http/Api/Admin/Dump/DumpDestroyTest.php +++ b/tests/Feature/Http/Api/Admin/Dump/DumpDestroyTest.php @@ -61,7 +61,7 @@ class DumpDestroyTest extends TestCase $dump->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class DumpDestroyTest extends TestCase { $dump = Dump::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Dump/DumpForceDeleteTest.php b/tests/Feature/Http/Api/Admin/Dump/DumpForceDeleteTest.php index a95b040de..6442edaa2 100644 --- a/tests/Feature/Http/Api/Admin/Dump/DumpForceDeleteTest.php +++ b/tests/Feature/Http/Api/Admin/Dump/DumpForceDeleteTest.php @@ -59,7 +59,7 @@ class DumpForceDeleteTest extends TestCase { $dump = Dump::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Dump/DumpRestoreTest.php b/tests/Feature/Http/Api/Admin/Dump/DumpRestoreTest.php index d59c6f220..dd5a3878c 100644 --- a/tests/Feature/Http/Api/Admin/Dump/DumpRestoreTest.php +++ b/tests/Feature/Http/Api/Admin/Dump/DumpRestoreTest.php @@ -63,7 +63,7 @@ class DumpRestoreTest extends TestCase { $dump = Dump::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class DumpRestoreTest extends TestCase $dump->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Dump/DumpStoreTest.php b/tests/Feature/Http/Api/Admin/Dump/DumpStoreTest.php index 584b81187..36d1e7102 100644 --- a/tests/Feature/Http/Api/Admin/Dump/DumpStoreTest.php +++ b/tests/Feature/Http/Api/Admin/Dump/DumpStoreTest.php @@ -57,7 +57,7 @@ class DumpStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); @@ -77,7 +77,7 @@ class DumpStoreTest extends TestCase { $parameters = Dump::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Admin/Dump/DumpUpdateTest.php b/tests/Feature/Http/Api/Admin/Dump/DumpUpdateTest.php index 80e086373..9b556dcda 100644 --- a/tests/Feature/Http/Api/Admin/Dump/DumpUpdateTest.php +++ b/tests/Feature/Http/Api/Admin/Dump/DumpUpdateTest.php @@ -67,7 +67,7 @@ class DumpUpdateTest extends TestCase $parameters = Dump::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class DumpUpdateTest extends TestCase $parameters = Dump::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Dump::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Dump::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Auth/User/Me/List/Playlist/MyPlaylistIndexTest.php b/tests/Feature/Http/Api/Auth/User/Me/List/Playlist/MyPlaylistIndexTest.php index 8ef187d98..3abfe73d9 100644 --- a/tests/Feature/Http/Api/Auth/User/Me/List/Playlist/MyPlaylistIndexTest.php +++ b/tests/Feature/Http/Api/Auth/User/Me/List/Playlist/MyPlaylistIndexTest.php @@ -66,7 +66,7 @@ class MyPlaylistIndexTest extends TestCase ->count($this->faker->randomDigitNotNull()) ->create(); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(Playlist::class))->createOne(); $playlistCount = $this->faker->randomDigitNotNull(); diff --git a/tests/Feature/Http/Api/Billing/Balance/BalanceDestroyTest.php b/tests/Feature/Http/Api/Billing/Balance/BalanceDestroyTest.php index c434ece57..6d64986f1 100644 --- a/tests/Feature/Http/Api/Billing/Balance/BalanceDestroyTest.php +++ b/tests/Feature/Http/Api/Billing/Balance/BalanceDestroyTest.php @@ -61,7 +61,7 @@ class BalanceDestroyTest extends TestCase $balance->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class BalanceDestroyTest extends TestCase { $balance = Balance::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Balance/BalanceForceDeleteTest.php b/tests/Feature/Http/Api/Billing/Balance/BalanceForceDeleteTest.php index a69b785e0..9f651381b 100644 --- a/tests/Feature/Http/Api/Billing/Balance/BalanceForceDeleteTest.php +++ b/tests/Feature/Http/Api/Billing/Balance/BalanceForceDeleteTest.php @@ -59,7 +59,7 @@ class BalanceForceDeleteTest extends TestCase { $balance = Balance::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Balance/BalanceRestoreTest.php b/tests/Feature/Http/Api/Billing/Balance/BalanceRestoreTest.php index a88c8402e..628f0f25a 100644 --- a/tests/Feature/Http/Api/Billing/Balance/BalanceRestoreTest.php +++ b/tests/Feature/Http/Api/Billing/Balance/BalanceRestoreTest.php @@ -63,7 +63,7 @@ class BalanceRestoreTest extends TestCase { $balance = Balance::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class BalanceRestoreTest extends TestCase $balance->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Balance/BalanceStoreTest.php b/tests/Feature/Http/Api/Billing/Balance/BalanceStoreTest.php index 2c7e3b03c..754741ca0 100644 --- a/tests/Feature/Http/Api/Billing/Balance/BalanceStoreTest.php +++ b/tests/Feature/Http/Api/Billing/Balance/BalanceStoreTest.php @@ -59,7 +59,7 @@ class BalanceStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); @@ -89,7 +89,7 @@ class BalanceStoreTest extends TestCase ] ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Balance/BalanceUpdateTest.php b/tests/Feature/Http/Api/Billing/Balance/BalanceUpdateTest.php index d06a761f0..047f571d2 100644 --- a/tests/Feature/Http/Api/Billing/Balance/BalanceUpdateTest.php +++ b/tests/Feature/Http/Api/Billing/Balance/BalanceUpdateTest.php @@ -87,7 +87,7 @@ class BalanceUpdateTest extends TestCase ] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); @@ -113,7 +113,7 @@ class BalanceUpdateTest extends TestCase ] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Balance::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Balance::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Transaction/TransactionDestroyTest.php b/tests/Feature/Http/Api/Billing/Transaction/TransactionDestroyTest.php index e576a7fa1..59f823670 100644 --- a/tests/Feature/Http/Api/Billing/Transaction/TransactionDestroyTest.php +++ b/tests/Feature/Http/Api/Billing/Transaction/TransactionDestroyTest.php @@ -61,7 +61,7 @@ class TransactionDestroyTest extends TestCase $transaction->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class TransactionDestroyTest extends TestCase { $transaction = Transaction::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Transaction/TransactionForceDeleteTest.php b/tests/Feature/Http/Api/Billing/Transaction/TransactionForceDeleteTest.php index 9ae97fac3..3006a45ef 100644 --- a/tests/Feature/Http/Api/Billing/Transaction/TransactionForceDeleteTest.php +++ b/tests/Feature/Http/Api/Billing/Transaction/TransactionForceDeleteTest.php @@ -59,7 +59,7 @@ class TransactionForceDeleteTest extends TestCase { $transaction = Transaction::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Transaction/TransactionRestoreTest.php b/tests/Feature/Http/Api/Billing/Transaction/TransactionRestoreTest.php index d4a0cd8d3..8909538f6 100644 --- a/tests/Feature/Http/Api/Billing/Transaction/TransactionRestoreTest.php +++ b/tests/Feature/Http/Api/Billing/Transaction/TransactionRestoreTest.php @@ -63,7 +63,7 @@ class TransactionRestoreTest extends TestCase { $transaction = Transaction::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class TransactionRestoreTest extends TestCase $transaction->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Transaction/TransactionStoreTest.php b/tests/Feature/Http/Api/Billing/Transaction/TransactionStoreTest.php index 0910bd404..3db33b200 100644 --- a/tests/Feature/Http/Api/Billing/Transaction/TransactionStoreTest.php +++ b/tests/Feature/Http/Api/Billing/Transaction/TransactionStoreTest.php @@ -58,7 +58,7 @@ class TransactionStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); @@ -84,7 +84,7 @@ class TransactionStoreTest extends TestCase [Transaction::ATTRIBUTE_SERVICE => Service::getRandomInstance()->description] ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Billing/Transaction/TransactionUpdateTest.php b/tests/Feature/Http/Api/Billing/Transaction/TransactionUpdateTest.php index b9c838e8c..29711359b 100644 --- a/tests/Feature/Http/Api/Billing/Transaction/TransactionUpdateTest.php +++ b/tests/Feature/Http/Api/Billing/Transaction/TransactionUpdateTest.php @@ -77,7 +77,7 @@ class TransactionUpdateTest extends TestCase [Transaction::ATTRIBUTE_SERVICE => Service::getRandomInstance()->description] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); @@ -100,7 +100,7 @@ class TransactionUpdateTest extends TestCase [Transaction::ATTRIBUTE_SERVICE => Service::getRandomInstance()->description] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Transaction::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Transaction::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Document/Page/PageDestroyTest.php b/tests/Feature/Http/Api/Document/Page/PageDestroyTest.php index 0844a45ca..b6246228a 100644 --- a/tests/Feature/Http/Api/Document/Page/PageDestroyTest.php +++ b/tests/Feature/Http/Api/Document/Page/PageDestroyTest.php @@ -61,7 +61,7 @@ class PageDestroyTest extends TestCase $page->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Page::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class PageDestroyTest extends TestCase { $page = Page::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Page::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Document/Page/PageForceDeleteTest.php b/tests/Feature/Http/Api/Document/Page/PageForceDeleteTest.php index e080f23c7..c5a86d00b 100644 --- a/tests/Feature/Http/Api/Document/Page/PageForceDeleteTest.php +++ b/tests/Feature/Http/Api/Document/Page/PageForceDeleteTest.php @@ -59,7 +59,7 @@ class PageForceDeleteTest extends TestCase { $page = Page::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Page::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Document/Page/PageRestoreTest.php b/tests/Feature/Http/Api/Document/Page/PageRestoreTest.php index d0c7a3c4e..9102ecf1b 100644 --- a/tests/Feature/Http/Api/Document/Page/PageRestoreTest.php +++ b/tests/Feature/Http/Api/Document/Page/PageRestoreTest.php @@ -63,7 +63,7 @@ class PageRestoreTest extends TestCase { $page = Page::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Page::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class PageRestoreTest extends TestCase $page->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Page::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Document/Page/PageStoreTest.php b/tests/Feature/Http/Api/Document/Page/PageStoreTest.php index 61c2fdd39..a38db6703 100644 --- a/tests/Feature/Http/Api/Document/Page/PageStoreTest.php +++ b/tests/Feature/Http/Api/Document/Page/PageStoreTest.php @@ -57,7 +57,7 @@ class PageStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Page::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class PageStoreTest extends TestCase { $parameters = Page::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Page::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Document/Page/PageUpdateTest.php b/tests/Feature/Http/Api/Document/Page/PageUpdateTest.php index f16bc9530..6ae5ea3a4 100644 --- a/tests/Feature/Http/Api/Document/Page/PageUpdateTest.php +++ b/tests/Feature/Http/Api/Document/Page/PageUpdateTest.php @@ -67,7 +67,7 @@ class PageUpdateTest extends TestCase $parameters = Page::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Page::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class PageUpdateTest extends TestCase $parameters = Page::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Page::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Page::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/List/Playlist/BackwardIndexTest.php b/tests/Feature/Http/Api/List/Playlist/BackwardIndexTest.php index 048e53f97..820e3ed73 100644 --- a/tests/Feature/Http/Api/List/Playlist/BackwardIndexTest.php +++ b/tests/Feature/Http/Api/List/Playlist/BackwardIndexTest.php @@ -72,7 +72,7 @@ class BackwardIndexTest extends TestCase Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE, ]); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); Sanctum::actingAs($user); @@ -88,7 +88,7 @@ class BackwardIndexTest extends TestCase */ public function testPrivatePlaylistTrackCanBeViewedByOwner(): void { - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/ForwardIndexTest.php b/tests/Feature/Http/Api/List/Playlist/ForwardIndexTest.php index a361c25c1..283765030 100644 --- a/tests/Feature/Http/Api/List/Playlist/ForwardIndexTest.php +++ b/tests/Feature/Http/Api/List/Playlist/ForwardIndexTest.php @@ -72,7 +72,7 @@ class ForwardIndexTest extends TestCase Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE, ]); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); Sanctum::actingAs($user); @@ -88,7 +88,7 @@ class ForwardIndexTest extends TestCase */ public function testPrivatePlaylistTrackCanBeViewedByOwner(): void { - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistDestroyTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistDestroyTest.php index b30f9c459..66cc54a63 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistDestroyTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistDestroyTest.php @@ -4,10 +4,14 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Models\Auth\User; use App\Models\List\Playlist; +use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -16,6 +20,7 @@ use Tests\TestCase; */ class PlaylistDestroyTest extends TestCase { + use WithFaker; use WithoutEvents; /** @@ -25,6 +30,8 @@ class PlaylistDestroyTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $response = $this->delete(route('api.playlist.destroy', ['playlist' => $playlist])); @@ -39,6 +46,8 @@ class PlaylistDestroyTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $user = User::factory()->createOne(); @@ -57,11 +66,36 @@ class PlaylistDestroyTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory() ->for(User::factory()) ->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Playlist::class))->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.destroy', ['playlist' => $playlist])); + + $response->assertForbidden(); + } + + /** + * The Playlist Destroy Endpoint shall forbid users from destroying playlists + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Playlist::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); Sanctum::actingAs($user); @@ -77,7 +111,9 @@ class PlaylistDestroyTest extends TestCase */ public function testTrashed(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Playlist::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Playlist::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -99,7 +135,9 @@ class PlaylistDestroyTest extends TestCase */ public function testDeleted(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Playlist::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Playlist::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -112,4 +150,32 @@ class PlaylistDestroyTest extends TestCase $response->assertOk(); static::assertSoftDeleted($playlist); } + + /** + * Users with the bypass feature flag permission shall be permitted to destroy playlists + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testDestroyPermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Playlist::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.destroy', ['playlist' => $playlist])); + + $response->assertOk(); + } } diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistForceDeleteTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistForceDeleteTest.php index 865cd6211..64d4d3cea 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistForceDeleteTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistForceDeleteTest.php @@ -4,10 +4,14 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\ExtendedCrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Models\Auth\User; use App\Models\List\Playlist; +use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -16,6 +20,7 @@ use Tests\TestCase; */ class PlaylistForceDeleteTest extends TestCase { + use WithFaker; use WithoutEvents; /** @@ -25,6 +30,8 @@ class PlaylistForceDeleteTest extends TestCase */ public function testAuthorized(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $response = $this->delete(route('api.playlist.forceDelete', ['playlist' => $playlist])); @@ -37,8 +44,10 @@ class PlaylistForceDeleteTest extends TestCase * * @return void */ - public function testForbidden(): void + public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $user = User::factory()->createOne(); @@ -50,6 +59,27 @@ class PlaylistForceDeleteTest extends TestCase $response->assertForbidden(); } + /** + * The Playlist Force Delete Endpoint shall forbid users from force deleting playlists + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $playlist = Playlist::factory()->createOne(); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Playlist::class))->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.forceDelete', ['playlist' => $playlist])); + + $response->assertForbidden(); + } + /** * The Playlist Force Delete Endpoint shall force delete the playlist. * @@ -57,9 +87,11 @@ class PlaylistForceDeleteTest extends TestCase */ public function testDeleted(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Playlist::class))->createOne(); Sanctum::actingAs($user); @@ -68,4 +100,32 @@ class PlaylistForceDeleteTest extends TestCase $response->assertOk(); static::assertModelMissing($playlist); } + + /** + * Users with the bypass feature flag permission shall be permitted to force delete playlists + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testDeletePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + ExtendedCrudPermission::FORCE_DELETE()->format(Playlist::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.forceDelete', ['playlist' => $playlist])); + + $response->assertOk(); + } } diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistRestoreTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistRestoreTest.php index 02d109d96..19cb9db04 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistRestoreTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistRestoreTest.php @@ -4,10 +4,14 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\ExtendedCrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Models\Auth\User; use App\Models\List\Playlist; +use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -16,6 +20,7 @@ use Tests\TestCase; */ class PlaylistRestoreTest extends TestCase { + use WithFaker; use WithoutEvents; /** @@ -25,6 +30,8 @@ class PlaylistRestoreTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $response = $this->patch(route('api.playlist.restore', ['playlist' => $playlist])); @@ -39,6 +46,8 @@ class PlaylistRestoreTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $user = User::factory()->createOne(); @@ -57,11 +66,38 @@ class PlaylistRestoreTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory() ->for(User::factory()) ->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne(); + + Sanctum::actingAs($user); + + $response = $this->patch(route('api.playlist.restore', ['playlist' => $playlist])); + + $response->assertForbidden(); + } + + /** + * The Playlist Restore Endpoint shall forbid users from restoring playlists + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $playlist->delete(); Sanctum::actingAs($user); @@ -77,7 +113,9 @@ class PlaylistRestoreTest extends TestCase */ public function testTrashed(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -97,7 +135,40 @@ class PlaylistRestoreTest extends TestCase */ public function testRestored(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $playlist->delete(); + + Sanctum::actingAs($user); + + $response = $this->patch(route('api.playlist.restore', ['playlist' => $playlist])); + + $response->assertOk(); + static::assertNotSoftDeleted($playlist); + } + + /** + * Users with the bypass feature flag permission shall be permitted to restore playlists + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testCreatePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + ExtendedCrudPermission::RESTORE()->format(Playlist::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistShowTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistShowTest.php index d2769eac9..5500f9c42 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistShowTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistShowTest.php @@ -64,7 +64,7 @@ class PlaylistShowTest extends TestCase Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE, ]); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(Playlist::class))->createOne(); Sanctum::actingAs($user); @@ -80,7 +80,7 @@ class PlaylistShowTest extends TestCase */ public function testPrivatePlaylistCanBeViewedByOwner(): void { - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(Playlist::class))->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php index 17e5fb7b3..f612a793e 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistStoreTest.php @@ -4,11 +4,15 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; use App\Models\Auth\User; use App\Models\List\Playlist; +use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -17,6 +21,7 @@ use Tests\TestCase; */ class PlaylistStoreTest extends TestCase { + use WithFaker; use WithoutEvents; /** @@ -26,6 +31,8 @@ class PlaylistStoreTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->makeOne(); $response = $this->post(route('api.playlist.store', $playlist->toArray())); @@ -38,8 +45,10 @@ class PlaylistStoreTest extends TestCase * * @return void */ - public function testForbidden(): void + public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->makeOne(); $user = User::factory()->createOne(); @@ -51,6 +60,30 @@ class PlaylistStoreTest extends TestCase $response->assertForbidden(); } + /** + * The Playlist Store Endpoint shall forbid users from creating playlists + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $parameters = array_merge( + Playlist::factory()->raw(), + [Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description], + ); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Playlist::class))->createOne(); + + Sanctum::actingAs($user); + + $response = $this->post(route('api.playlist.store', $parameters)); + + $response->assertForbidden(); + } + /** * The Playlist Store Endpoint shall require name & visibility fields. * @@ -58,7 +91,9 @@ class PlaylistStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Playlist::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Playlist::class))->createOne(); Sanctum::actingAs($user); @@ -77,12 +112,14 @@ class PlaylistStoreTest extends TestCase */ public function testCreate(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $parameters = array_merge( Playlist::factory()->raw(), [Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Playlist::class))->createOne(); Sanctum::actingAs($user); @@ -92,4 +129,33 @@ class PlaylistStoreTest extends TestCase static::assertDatabaseCount(Playlist::TABLE, 1); static::assertDatabaseHas(Playlist::TABLE, [Playlist::ATTRIBUTE_USER => $user->getKey()]); } + + /** + * Users with the bypass feature flag permission shall be permitted to create playlists + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testCreatePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $parameters = array_merge( + Playlist::factory()->raw(), + [Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description], + ); + + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Playlist::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->post(route('api.playlist.store', $parameters)); + + $response->assertCreated(); + } } diff --git a/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php b/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php index 42d71b9d2..1612d9cf4 100644 --- a/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php +++ b/tests/Feature/Http/Api/List/Playlist/PlaylistUpdateTest.php @@ -4,12 +4,15 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; use App\Models\Auth\User; use App\Models\List\Playlist; -use App\Models\List\Playlist\PlaylistTrack; +use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -18,6 +21,7 @@ use Tests\TestCase; */ class PlaylistUpdateTest extends TestCase { + use WithFaker; use WithoutEvents; /** @@ -27,6 +31,8 @@ class PlaylistUpdateTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $parameters = array_merge( @@ -46,6 +52,8 @@ class PlaylistUpdateTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $parameters = array_merge( @@ -69,6 +77,8 @@ class PlaylistUpdateTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory() ->for(User::factory()) ->createOne(); @@ -78,7 +88,37 @@ class PlaylistUpdateTest extends TestCase [Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Playlist::class))->createOne(); + + Sanctum::actingAs($user); + + $response = $this->put(route('api.playlist.update', ['playlist' => $playlist] + $parameters)); + + $response->assertForbidden(); + } + + /** + * The Playlist Update Endpoint shall forbid users from updating playlists + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Playlist::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $parameters = array_merge( + Playlist::factory()->raw(), + [ + Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description, + ], + ); Sanctum::actingAs($user); @@ -94,28 +134,20 @@ class PlaylistUpdateTest extends TestCase */ public function testTrashed(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Playlist::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Playlist::class))->createOne(); $playlist = Playlist::factory() ->for($user) ->createOne(); - $first = PlaylistTrack::factory() - ->for($playlist) - ->createOne(); - - $last = PlaylistTrack::factory() - ->for($playlist) - ->createOne(); - $playlist->delete(); $parameters = array_merge( Playlist::factory()->raw(), [ Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description, - Playlist::ATTRIBUTE_FIRST => $first->getKey(), - Playlist::ATTRIBUTE_LAST => $last->getKey(), ], ); @@ -133,26 +165,53 @@ class PlaylistUpdateTest extends TestCase */ public function testUpdate(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Playlist::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Playlist::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $parameters = array_merge( + Playlist::factory()->raw(), + [ + Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description, + ], + ); + + Sanctum::actingAs($user); + + $response = $this->put(route('api.playlist.update', ['playlist' => $playlist] + $parameters)); + + $response->assertOk(); + } + + /** + * Users with the bypass feature flag permission shall be permitted to update playlists + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testUpdatePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + CrudPermission::UPDATE()->format(Playlist::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); $playlist = Playlist::factory() ->for($user) ->createOne(); - $first = PlaylistTrack::factory() - ->for($playlist) - ->createOne(); - - $last = PlaylistTrack::factory() - ->for($playlist) - ->createOne(); - $parameters = array_merge( Playlist::factory()->raw(), [ Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description, - Playlist::ATTRIBUTE_FIRST => $first->getKey(), - Playlist::ATTRIBUTE_LAST => $last->getKey(), ], ); diff --git a/tests/Feature/Http/Api/List/Playlist/Track/TrackDestroyTest.php b/tests/Feature/Http/Api/List/Playlist/Track/TrackDestroyTest.php index fa2f8e8ff..09c5ccbaf 100644 --- a/tests/Feature/Http/Api/List/Playlist/Track/TrackDestroyTest.php +++ b/tests/Feature/Http/Api/List/Playlist/Track/TrackDestroyTest.php @@ -4,13 +4,16 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist\Track; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; use App\Models\Auth\User; use App\Models\List\Playlist; use App\Models\List\Playlist\PlaylistTrack; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -29,6 +32,8 @@ class TrackDestroyTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->createOne(); @@ -45,6 +50,8 @@ class TrackDestroyTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->createOne(); @@ -65,11 +72,13 @@ class TrackDestroyTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()->for(User::factory())) ->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); Sanctum::actingAs($user); @@ -78,6 +87,33 @@ class TrackDestroyTest extends TestCase $response->assertForbidden(); } + /** + * The Track Destroy Endpoint shall forbid users from destroying playlists tracks + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.track.destroy', ['playlist' => $playlist, 'track' => $track])); + + $response->assertForbidden(); + } + /** * The Track Destroy Endpoint shall scope bindings. * @@ -85,7 +121,9 @@ class TrackDestroyTest extends TestCase */ public function testScoped(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -112,7 +150,9 @@ class TrackDestroyTest extends TestCase */ public function testTrashed(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); $track = PlaylistTrack::factory() ->for(Playlist::factory()->for($user)) @@ -134,7 +174,9 @@ class TrackDestroyTest extends TestCase */ public function testDeleted(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -162,6 +204,38 @@ class TrackDestroyTest extends TestCase static::assertTrue($track->next()->doesntExist()); } + /** + * Users with the bypass feature flag permission shall be permitted to destroy playlist tracks + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testDestroyPermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(PlaylistTrack::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.track.destroy', ['playlist' => $playlist, 'track' => $track])); + + $response->assertOk(); + } + /** * The Track Destroy Endpoint shall delete the first track. * @@ -169,7 +243,9 @@ class TrackDestroyTest extends TestCase */ public function testDestroyFirst(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -206,7 +282,9 @@ class TrackDestroyTest extends TestCase */ public function testDestroyLast(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -243,7 +321,9 @@ class TrackDestroyTest extends TestCase */ public function testDestroySecond(): void { - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/Track/TrackForceDeleteTest.php b/tests/Feature/Http/Api/List/Playlist/Track/TrackForceDeleteTest.php index fddbc2bf9..469cf0ca4 100644 --- a/tests/Feature/Http/Api/List/Playlist/Track/TrackForceDeleteTest.php +++ b/tests/Feature/Http/Api/List/Playlist/Track/TrackForceDeleteTest.php @@ -4,13 +4,16 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist\Track; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\ExtendedCrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; use App\Models\Auth\User; use App\Models\List\Playlist; use App\Models\List\Playlist\PlaylistTrack; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -29,6 +32,8 @@ class TrackForceDeleteTest extends TestCase */ public function testAuthorized(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->createOne(); @@ -43,8 +48,10 @@ class TrackForceDeleteTest extends TestCase * * @return void */ - public function testForbidden(): void + public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->createOne(); @@ -65,7 +72,9 @@ class TrackForceDeleteTest extends TestCase */ public function testScoped(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -85,6 +94,33 @@ class TrackForceDeleteTest extends TestCase $response->assertNotFound(); } + /** + * The Track Force Delete Endpoint shall forbid users from force deleting playlist tracks + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.track.forceDelete', ['playlist' => $playlist, 'track' => $track])); + + $response->assertForbidden(); + } + /** * The Track Force Delete Endpoint shall force delete the sole playlist track. * @@ -92,7 +128,9 @@ class TrackForceDeleteTest extends TestCase */ public function testDeleted(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -116,6 +154,38 @@ class TrackForceDeleteTest extends TestCase static::assertTrue($playlist->last()->doesntExist()); } + /** + * Users with the bypass feature flag permission shall be permitted to force delete playlist tracks + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testDeletePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlist.track.forceDelete', ['playlist' => $playlist, 'track' => $track])); + + $response->assertOk(); + } + /** * The Track Force Delete Endpoint shall delete the first track. * @@ -123,7 +193,9 @@ class TrackForceDeleteTest extends TestCase */ public function testForceDeleteFirst(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -156,7 +228,9 @@ class TrackForceDeleteTest extends TestCase */ public function testForceDeleteLast(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -189,7 +263,9 @@ class TrackForceDeleteTest extends TestCase */ public function testForceDeleteSecond(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/Track/TrackIndexTest.php b/tests/Feature/Http/Api/List/Playlist/Track/TrackIndexTest.php index f98fe53af..4f2cd5add 100644 --- a/tests/Feature/Http/Api/List/Playlist/Track/TrackIndexTest.php +++ b/tests/Feature/Http/Api/List/Playlist/Track/TrackIndexTest.php @@ -78,7 +78,7 @@ class TrackIndexTest extends TestCase Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE, ]); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); Sanctum::actingAs($user); @@ -94,7 +94,7 @@ class TrackIndexTest extends TestCase */ public function testPrivatePlaylistTrackCanBeViewedByOwner(): void { - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/Track/TrackRestoreTest.php b/tests/Feature/Http/Api/List/Playlist/Track/TrackRestoreTest.php index 4da97bcf6..cf032f849 100644 --- a/tests/Feature/Http/Api/List/Playlist/Track/TrackRestoreTest.php +++ b/tests/Feature/Http/Api/List/Playlist/Track/TrackRestoreTest.php @@ -4,14 +4,17 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist\Track; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; use App\Enums\Auth\ExtendedCrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; use App\Models\Auth\User; use App\Models\List\Playlist; use App\Models\List\Playlist\PlaylistTrack; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -30,6 +33,8 @@ class TrackRestoreTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->createOne(); @@ -46,6 +51,8 @@ class TrackRestoreTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->createOne(); @@ -66,11 +73,13 @@ class TrackRestoreTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $track = PlaylistTrack::factory() ->for(Playlist::factory()->for(User::factory())) ->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne(); Sanctum::actingAs($user); @@ -86,7 +95,9 @@ class TrackRestoreTest extends TestCase */ public function testScoped(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -113,7 +124,9 @@ class TrackRestoreTest extends TestCase */ public function testTrashed(): void { - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne(); $track = PlaylistTrack::factory() ->for(Playlist::factory()->for($user)) @@ -126,6 +139,40 @@ class TrackRestoreTest extends TestCase $response->assertForbidden(); } + /** + * The Playlist Restore Endpoint shall forbid users from restoring playlists + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(PlaylistTrack::class), + ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class) + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + Sanctum::actingAs($user); + + $this->delete(route('api.playlist.track.destroy', ['playlist' => $playlist, 'track' => $track])); + + $response = $this->patch(route('api.playlist.track.restore', ['playlist' => $playlist, 'track' => $track])); + + $response->assertForbidden(); + } + /** * The Track Restore Endpoint shall restore the sole playlist track. * @@ -133,7 +180,13 @@ class TrackRestoreTest extends TestCase */ public function testRestored(): void { - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(PlaylistTrack::class), + ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)) + ->createOne(); $playlist = Playlist::factory() ->for($user) @@ -170,7 +223,14 @@ class TrackRestoreTest extends TestCase */ public function testRestoreFirst(): void { - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(PlaylistTrack::class), + ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class) + ) + ->createOne(); $playlist = Playlist::factory() ->for($user) @@ -214,7 +274,14 @@ class TrackRestoreTest extends TestCase */ public function testRestoreLast(): void { - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(PlaylistTrack::class), + ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class) + ) + ->createOne(); $playlist = Playlist::factory() ->for($user) @@ -253,7 +320,14 @@ class TrackRestoreTest extends TestCase */ public function testRestoreSecond(): void { - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(PlaylistTrack::class), + ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class) + ) + ->createOne(); $playlist = Playlist::factory() ->for($user) @@ -291,4 +365,39 @@ class TrackRestoreTest extends TestCase static::assertTrue($third->previous()->is($first)); static::assertTrue($third->next()->is($second)); } + + /** + * Users with the bypass feature flag permission shall be permitted to force delete playlist tracks + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testDeletePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(PlaylistTrack::class), + ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + Sanctum::actingAs($user); + + $this->delete(route('api.playlist.track.destroy', ['playlist' => $playlist, 'track' => $track])); + + $response = $this->patch(route('api.playlist.track.restore', ['playlist' => $playlist, 'track' => $track])); + + $response->assertOk(); + } } diff --git a/tests/Feature/Http/Api/List/Playlist/Track/TrackShowTest.php b/tests/Feature/Http/Api/List/Playlist/Track/TrackShowTest.php index fb0aae969..524f70b54 100644 --- a/tests/Feature/Http/Api/List/Playlist/Track/TrackShowTest.php +++ b/tests/Feature/Http/Api/List/Playlist/Track/TrackShowTest.php @@ -69,7 +69,7 @@ class TrackShowTest extends TestCase ->for($playlist) ->createOne(); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); Sanctum::actingAs($user); @@ -85,7 +85,7 @@ class TrackShowTest extends TestCase */ public function testPrivatePlaylistTrackCanBeViewedByOwner(): void { - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -155,7 +155,7 @@ class TrackShowTest extends TestCase */ public function testScoped(): void { - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) diff --git a/tests/Feature/Http/Api/List/Playlist/Track/TrackStoreTest.php b/tests/Feature/Http/Api/List/Playlist/Track/TrackStoreTest.php index 8542adbbe..7b4bd4688 100644 --- a/tests/Feature/Http/Api/List/Playlist/Track/TrackStoreTest.php +++ b/tests/Feature/Http/Api/List/Playlist/Track/TrackStoreTest.php @@ -4,13 +4,16 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist\Track; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Models\Auth\User; use App\Models\List\Playlist; use App\Models\List\Playlist\PlaylistTrack; use App\Models\Wiki\Video; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -29,6 +32,8 @@ class TrackStoreTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $track = PlaylistTrack::factory() @@ -47,6 +52,8 @@ class TrackStoreTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $track = PlaylistTrack::factory() @@ -69,6 +76,8 @@ class TrackStoreTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory() ->for(User::factory()) ->createOne(); @@ -77,7 +86,35 @@ class TrackStoreTest extends TestCase ->for($playlist) ->makeOne(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + + Sanctum::actingAs($user); + + $response = $this->post(route('api.playlist.track.store', ['playlist' => $playlist] + $track->toArray())); + + $response->assertForbidden(); + } + + /** + * The Track Store Endpoint shall forbid users from creating playlist tracks + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->for(Video::factory()) + ->makeOne(); Sanctum::actingAs($user); @@ -93,7 +130,9 @@ class TrackStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -115,7 +154,9 @@ class TrackStoreTest extends TestCase */ public function testProhibitsNextAndPrevious(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -154,7 +195,9 @@ class TrackStoreTest extends TestCase */ public function testScopeNext(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -187,7 +230,9 @@ class TrackStoreTest extends TestCase */ public function testScopePrevious(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -220,7 +265,9 @@ class TrackStoreTest extends TestCase */ public function testCreate(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -253,7 +300,9 @@ class TrackStoreTest extends TestCase */ public function testCreateAfterLastTrack(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $trackCount = $this->faker->numberBetween(2, 9); @@ -299,7 +348,9 @@ class TrackStoreTest extends TestCase */ public function testCreateAfterFirstTrack(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $trackCount = $this->faker->numberBetween(2, 9); @@ -346,7 +397,9 @@ class TrackStoreTest extends TestCase */ public function testCreateBeforeLastTrack(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $trackCount = $this->faker->numberBetween(2, 9); @@ -393,7 +446,9 @@ class TrackStoreTest extends TestCase */ public function testCreateBeforeFirstTrack(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne(); $trackCount = $this->faker->numberBetween(2, 9); @@ -429,4 +484,37 @@ class TrackStoreTest extends TestCase static::assertTrue($track->previous()->doesntExist()); static::assertTrue($track->next()->is($first)); } + + /** + * Users with the bypass feature flag permission shall be permitted to create playlist tracks + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testCreatePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(PlaylistTrack::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->for(Video::factory()) + ->makeOne(); + + Sanctum::actingAs($user); + + $response = $this->post(route('api.playlist.track.store', ['playlist' => $playlist] + $track->toArray())); + + $response->assertCreated(); + } } diff --git a/tests/Feature/Http/Api/List/Playlist/Track/TrackUpdateTest.php b/tests/Feature/Http/Api/List/Playlist/Track/TrackUpdateTest.php index 1de286777..9d6007b68 100644 --- a/tests/Feature/Http/Api/List/Playlist/Track/TrackUpdateTest.php +++ b/tests/Feature/Http/Api/List/Playlist/Track/TrackUpdateTest.php @@ -4,7 +4,9 @@ declare(strict_types=1); namespace Tests\Feature\Http\Api\List\Playlist\Track; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Enums\Models\List\PlaylistVisibility; use App\Models\Auth\User; use App\Models\List\Playlist; @@ -12,6 +14,7 @@ use App\Models\List\Playlist\PlaylistTrack; use App\Models\Wiki\Video; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -30,6 +33,8 @@ class TrackUpdateTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $track = PlaylistTrack::factory() @@ -53,6 +58,8 @@ class TrackUpdateTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory()->createOne(); $track = PlaylistTrack::factory() @@ -80,6 +87,8 @@ class TrackUpdateTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlist = Playlist::factory() ->for(User::factory()) ->createOne(); @@ -93,7 +102,7 @@ class TrackUpdateTest extends TestCase [PlaylistTrack::ATTRIBUTE_VIDEO => Video::factory()->createOne()->getKey()], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); Sanctum::actingAs($user); @@ -109,7 +118,9 @@ class TrackUpdateTest extends TestCase */ public function testScoped(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -141,7 +152,9 @@ class TrackUpdateTest extends TestCase */ public function testScopePrevious(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -179,7 +192,9 @@ class TrackUpdateTest extends TestCase */ public function testPreviousIsNotSelf(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -213,7 +228,9 @@ class TrackUpdateTest extends TestCase */ public function testScopeNext(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -251,7 +268,9 @@ class TrackUpdateTest extends TestCase */ public function testNextIsNotSelf(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -285,7 +304,9 @@ class TrackUpdateTest extends TestCase */ public function testProhibitsNextAndPrevious(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -322,6 +343,40 @@ class TrackUpdateTest extends TestCase ]); } + /** + * The Playlist Update Endpoint shall forbid users from updating playlists + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + $parameters = array_merge( + PlaylistTrack::factory()->raw(), + [ + PlaylistTrack::ATTRIBUTE_VIDEO => Video::factory()->createOne()->getKey(), + ], + ); + + Sanctum::actingAs($user); + + $response = $this->put(route('api.playlist.track.update', ['playlist' => $playlist, 'track' => $track] + $parameters)); + + $response->assertForbidden(); + } + /** * The Track Update Endpoint shall forbid users from updating a track that is trashed. * @@ -329,7 +384,9 @@ class TrackUpdateTest extends TestCase */ public function testTrashed(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -372,7 +429,9 @@ class TrackUpdateTest extends TestCase */ public function testUpdate(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -403,7 +462,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertFirstAfterSecond(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -449,7 +510,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertFirstAfterThird(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -495,7 +558,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertFirstBeforeThird(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -541,7 +606,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertSecondAfterThird(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -587,7 +654,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertSecondBeforeFirst(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -633,7 +702,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertThirdAfterFirst(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -679,7 +750,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertThirdBeforeSecond(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -725,7 +798,9 @@ class TrackUpdateTest extends TestCase */ public function testInsertThirdBeforeFirst(): void { - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne(); $playlist = Playlist::factory() ->for($user) @@ -763,4 +838,43 @@ class TrackUpdateTest extends TestCase static::assertTrue($third->previous()->doesntExist()); static::assertTrue($third->next()->is($first)); } + + /** + * Users with the bypass feature flag permission shall be permitted to update playlist tracks + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testUpdatePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + CrudPermission::UPDATE()->format(PlaylistTrack::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlist = Playlist::factory() + ->for($user) + ->createOne(); + + $track = PlaylistTrack::factory() + ->for($playlist) + ->createOne(); + + $parameters = array_merge( + PlaylistTrack::factory()->raw(), + [ + PlaylistTrack::ATTRIBUTE_VIDEO => Video::factory()->createOne()->getKey(), + ], + ); + + Sanctum::actingAs($user); + + $response = $this->put(route('api.playlist.track.update', ['playlist' => $playlist, 'track' => $track] + $parameters)); + + $response->assertOk(); + } } diff --git a/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageDestroyTest.php b/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageDestroyTest.php index 7980a165e..ea3108d11 100644 --- a/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageDestroyTest.php @@ -4,12 +4,16 @@ declare(strict_types=1); namespace Http\Api\Pivot\List\PlaylistImage; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Models\Auth\User; use App\Models\List\Playlist; use App\Models\Wiki\Image; use App\Pivots\List\PlaylistImage; +use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -18,6 +22,7 @@ use Tests\TestCase; */ class PlaylistImageDestroyTest extends TestCase { + use WithFaker; use WithoutEvents; /** @@ -27,6 +32,8 @@ class PlaylistImageDestroyTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlistImage = PlaylistImage::factory() ->for(Playlist::factory()) ->for(Image::factory()) @@ -44,6 +51,8 @@ class PlaylistImageDestroyTest extends TestCase */ public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlistImage = PlaylistImage::factory() ->for(Playlist::factory()) ->for(Image::factory()) @@ -65,12 +74,46 @@ class PlaylistImageDestroyTest extends TestCase */ public function testForbiddenIfNotOwnPlaylist(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlistImage = PlaylistImage::factory() ->for(Playlist::factory()->for(User::factory())) ->for(Image::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Playlist::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Playlist::class), + CrudPermission::DELETE()->format(Image::class)) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlistimage.destroy', ['playlist' => $playlistImage->playlist, 'image' => $playlistImage->image])); + + $response->assertForbidden(); + } + + /** + * The Playlist Image Destroy Endpoint shall forbid users from destroying playlist images + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Playlist::class), + CrudPermission::DELETE()->format(Image::class)) + ->createOne(); + + $playlistImage = PlaylistImage::factory() + ->for(Playlist::factory()->for($user)) + ->for(Image::factory()) + ->createOne(); Sanctum::actingAs($user); @@ -86,7 +129,14 @@ class PlaylistImageDestroyTest extends TestCase */ public function testNotFound(): void { - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Playlist::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Playlist::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); $playlist = Playlist::factory() ->for($user) @@ -107,7 +157,14 @@ class PlaylistImageDestroyTest extends TestCase */ public function testDeleted(): void { - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Playlist::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Playlist::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); $playlistImage = PlaylistImage::factory() ->for(Playlist::factory()->for($user)) @@ -121,4 +178,34 @@ class PlaylistImageDestroyTest extends TestCase $response->assertOk(); static::assertModelMissing($playlistImage); } + + /** + * Users with the bypass feature flag permission shall be permitted to destroy playlist images + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testDestroyPermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Playlist::class), + CrudPermission::DELETE()->format(Image::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + $playlistImage = PlaylistImage::factory() + ->for(Playlist::factory()->for($user)) + ->for(Image::factory()) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->delete(route('api.playlistimage.destroy', ['playlist' => $playlistImage->playlist, 'image' => $playlistImage->image])); + + $response->assertOk(); + } } diff --git a/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageShowTest.php b/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageShowTest.php index c8bf88871..b5be5405a 100644 --- a/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageShowTest.php +++ b/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageShowTest.php @@ -93,7 +93,7 @@ class PlaylistImageShowTest extends TestCase ->for(Image::factory()) ->createOne(); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(Playlist::class))->createOne(); Sanctum::actingAs($user); @@ -109,7 +109,7 @@ class PlaylistImageShowTest extends TestCase */ public function testPrivatePlaylistImageCanBeViewedByOwner(): void { - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(Playlist::class))->createOne(); $playlistImage = PlaylistImage::factory() ->for( diff --git a/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageStoreTest.php b/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageStoreTest.php index a6c2844d7..efb3a07cc 100644 --- a/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/List/PlaylistImage/PlaylistImageStoreTest.php @@ -4,12 +4,16 @@ declare(strict_types=1); namespace Http\Api\Pivot\List\PlaylistImage; +use App\Constants\Config\FlagConstants; use App\Enums\Auth\CrudPermission; +use App\Enums\Auth\SpecialPermission; use App\Models\Auth\User; use App\Models\List\Playlist; use App\Models\Wiki\Image; use App\Pivots\List\PlaylistImage; +use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; +use Illuminate\Support\Facades\Config; use Laravel\Sanctum\Sanctum; use Tests\TestCase; @@ -18,6 +22,7 @@ use Tests\TestCase; */ class PlaylistImageStoreTest extends TestCase { + use WithFaker; use WithoutEvents; /** @@ -27,6 +32,8 @@ class PlaylistImageStoreTest extends TestCase */ public function testProtected(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlistImage = PlaylistImage::factory() ->for(Playlist::factory()) ->for(Image::factory()) @@ -42,8 +49,10 @@ class PlaylistImageStoreTest extends TestCase * * @return void */ - public function testForbidden(): void + public function testForbiddenIfMissingPermission(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $playlistImage = PlaylistImage::factory() ->for(Playlist::factory()) ->for(Image::factory()) @@ -58,6 +67,35 @@ class PlaylistImageStoreTest extends TestCase $response->assertForbidden(); } + /** + * The Playlist Image Store Endpoint shall forbid users from creating playlist images + * if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testForbiddenIfFlagDisabled(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, false); + + $parameters = [ + PlaylistImage::ATTRIBUTE_PLAYLIST => Playlist::factory()->createOne()->getKey(), + PlaylistImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(), + ]; + + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Playlist::class), + CrudPermission::CREATE()->format(Image::class) + ) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->post(route('api.playlistimage.store', $parameters)); + + $response->assertForbidden(); + } + /** * The Playlist Image Store Endpoint shall require playlist and image fields. * @@ -65,7 +103,14 @@ class PlaylistImageStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Playlist::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Playlist::class), + CrudPermission::CREATE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -84,12 +129,19 @@ class PlaylistImageStoreTest extends TestCase */ public function testCreate(): void { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, true); + $parameters = [ PlaylistImage::ATTRIBUTE_PLAYLIST => Playlist::factory()->createOne()->getKey(), PlaylistImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(), ]; - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Playlist::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Playlist::class), + CrudPermission::CREATE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -98,4 +150,34 @@ class PlaylistImageStoreTest extends TestCase $response->assertCreated(); static::assertDatabaseCount(PlaylistImage::TABLE, 1); } + + /** + * Users with the bypass feature flag permission shall be permitted to create playlist images + * even if the 'flags.allow_playlist_management' property is disabled. + * + * @return void + */ + public function testCreatePermittedForBypass(): void + { + Config::set(FlagConstants::ALLOW_PLAYLIST_MANAGEMENT_QUALIFIED, $this->faker->boolean()); + + $parameters = [ + PlaylistImage::ATTRIBUTE_PLAYLIST => Playlist::factory()->createOne()->getKey(), + PlaylistImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(), + ]; + + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Playlist::class), + CrudPermission::CREATE()->format(Image::class), + SpecialPermission::BYPASS_FEATURE_FLAGS + ) + ->createOne(); + + Sanctum::actingAs($user); + + $response = $this->post(route('api.playlistimage.store', $parameters)); + + $response->assertCreated(); + } } diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageDestroyTest.php index ed23d943c..978097929 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageDestroyTest.php @@ -68,7 +68,12 @@ class AnimeImageDestroyTest extends TestCase $anime = Anime::factory()->createOne(); $image = Image::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class AnimeImageDestroyTest extends TestCase ->for(Image::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageStoreTest.php index 0ad1de191..e814d5a25 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeImage/AnimeImageStoreTest.php @@ -65,7 +65,11 @@ class AnimeImageStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(Image::class)) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +93,11 @@ class AnimeImageStoreTest extends TestCase AnimeImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(), ]; - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(Image::class)) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceDestroyTest.php index f1b83af83..06aa95c00 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceDestroyTest.php @@ -68,7 +68,12 @@ class AnimeResourceDestroyTest extends TestCase $anime = Anime::factory()->createOne(); $resource = ExternalResource::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class AnimeResourceDestroyTest extends TestCase ->for(ExternalResource::factory(), AnimeResource::RELATION_RESOURCE) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceStoreTest.php index 2002bc547..1a0d3708e 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceStoreTest.php @@ -65,7 +65,12 @@ class AnimeResourceStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -90,7 +95,12 @@ class AnimeResourceStoreTest extends TestCase [AnimeResource::ATTRIBUTE_RESOURCE => ExternalResource::factory()->createOne()->getKey()], ); - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceUpdateTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceUpdateTest.php index 8d75654b2..33fbb5771 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceUpdateTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeResource/AnimeResourceUpdateTest.php @@ -76,7 +76,12 @@ class AnimeResourceUpdateTest extends TestCase $parameters = AnimeResource::factory()->raw(); - $user = User::factory()->withPermissions([CrudPermission::UPDATE()->format(Anime::class), CrudPermission::UPDATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::UPDATE()->format(Anime::class), + CrudPermission::UPDATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesDestroyTest.php index 38d5f7d78..f34a37ced 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesDestroyTest.php @@ -68,7 +68,12 @@ class AnimeSeriesDestroyTest extends TestCase $anime = Anime::factory()->createOne(); $series = Series::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Series::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(Series::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class AnimeSeriesDestroyTest extends TestCase ->for(Series::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Series::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(Series::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesStoreTest.php index 3c26a1d07..c5f8d506d 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeSeries/AnimeSeriesStoreTest.php @@ -65,7 +65,12 @@ class AnimeSeriesStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Series::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(Series::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class AnimeSeriesStoreTest extends TestCase AnimeSeries::ATTRIBUTE_SERIES => Series::factory()->createOne()->getKey(), ]; - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Series::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(Series::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioDestroyTest.php index 40018b3c6..363d7b41c 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioDestroyTest.php @@ -68,7 +68,12 @@ class AnimeStudioDestroyTest extends TestCase $anime = Anime::factory()->createOne(); $studio = Studio::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Studio::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(Studio::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class AnimeStudioDestroyTest extends TestCase ->for(Studio::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Studio::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Anime::class), + CrudPermission::DELETE()->format(Studio::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioStoreTest.php index 123270e5b..ccf76b4b6 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeStudio/AnimeStudioStoreTest.php @@ -65,7 +65,12 @@ class AnimeStudioStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Studio::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(Studio::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class AnimeStudioStoreTest extends TestCase AnimeStudio::ATTRIBUTE_STUDIO => Studio::factory()->createOne()->getKey(), ]; - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Studio::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Anime::class), + CrudPermission::CREATE()->format(Studio::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoDestroyTest.php index fb8c2208a..74f771d9c 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoDestroyTest.php @@ -73,7 +73,12 @@ class AnimeThemeEntryVideoDestroyTest extends TestCase $video = Video::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(AnimeThemeEntry::class), CrudPermission::DELETE()->format(Video::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(AnimeThemeEntry::class), + CrudPermission::DELETE()->format(Video::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -94,7 +99,12 @@ class AnimeThemeEntryVideoDestroyTest extends TestCase ->for(Video::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(AnimeThemeEntry::class), CrudPermission::DELETE()->format(Video::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(AnimeThemeEntry::class), + CrudPermission::DELETE()->format(Video::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoStoreTest.php index f17e4eb98..04305834e 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/AnimeThemeEntryVideo/AnimeThemeEntryVideoStoreTest.php @@ -67,7 +67,12 @@ class AnimeThemeEntryVideoStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(AnimeThemeEntry::class), CrudPermission::CREATE()->format(Video::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(AnimeThemeEntry::class), + CrudPermission::CREATE()->format(Video::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -95,7 +100,12 @@ class AnimeThemeEntryVideoStoreTest extends TestCase AnimeThemeEntryVideo::ATTRIBUTE_VIDEO => Video::factory()->createOne()->getKey(), ]; - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(AnimeThemeEntry::class), CrudPermission::CREATE()->format(Video::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(AnimeThemeEntry::class), + CrudPermission::CREATE()->format(Video::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageDestroyTest.php index 2655083e2..5aad424bd 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageDestroyTest.php @@ -68,7 +68,12 @@ class ArtistImageDestroyTest extends TestCase $artist = Artist::factory()->createOne(); $image = Image::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Artist::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class ArtistImageDestroyTest extends TestCase ->for(Image::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Artist::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageStoreTest.php index cc9788d5f..e7424117e 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistImage/ArtistImageStoreTest.php @@ -65,7 +65,12 @@ class ArtistImageStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Artist::class), + CrudPermission::CREATE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class ArtistImageStoreTest extends TestCase ArtistImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(), ]; - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Artist::class), + CrudPermission::CREATE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberDestroyTest.php index 7cd9ed6c4..0ed960ea5 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberDestroyTest.php @@ -67,7 +67,7 @@ class ArtistMemberDestroyTest extends TestCase $artist = Artist::factory()->createOne(); $member = Artist::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); @@ -88,7 +88,7 @@ class ArtistMemberDestroyTest extends TestCase ->for(Artist::factory(), ArtistMember::RELATION_MEMBER) ->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberShowTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberShowTest.php index cb611e6b0..929e650e6 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberShowTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberShowTest.php @@ -12,7 +12,6 @@ use App\Http\Api\Query\Query; use App\Http\Api\Schema\Pivot\Wiki\ArtistMemberSchema; use App\Http\Resources\Pivot\Wiki\Resource\ArtistMemberResource; use App\Models\Wiki\Artist; -use App\Models\Wiki\Member; use App\Pivots\Wiki\ArtistMember; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\WithoutEvents; diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberStoreTest.php index 407a32285..76aa31aa7 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberStoreTest.php @@ -64,7 +64,7 @@ class ArtistMemberStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); @@ -89,7 +89,7 @@ class ArtistMemberStoreTest extends TestCase [ArtistMember::ATTRIBUTE_MEMBER => Artist::factory()->createOne()->getKey()], ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberUpdateTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberUpdateTest.php index b6093a12b..db4814bbe 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberUpdateTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistMember/ArtistMemberUpdateTest.php @@ -75,7 +75,7 @@ class ArtistMemberUpdateTest extends TestCase $parameters = ArtistMember::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceDestroyTest.php index 256fce8b0..6f81d17f1 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceDestroyTest.php @@ -68,7 +68,12 @@ class ArtistResourceDestroyTest extends TestCase $artist = Artist::factory()->createOne(); $resource = ExternalResource::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Artist::class), + CrudPermission::DELETE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class ArtistResourceDestroyTest extends TestCase ->for(ExternalResource::factory(), ArtistResource::RELATION_RESOURCE) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Artist::class), + CrudPermission::DELETE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceStoreTest.php index 580265825..901a5dcd6 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceStoreTest.php @@ -65,7 +65,12 @@ class ArtistResourceStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Artist::class), + CrudPermission::CREATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -90,7 +95,12 @@ class ArtistResourceStoreTest extends TestCase [ArtistResource::ATTRIBUTE_RESOURCE => ExternalResource::factory()->createOne()->getKey()], ); - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Artist::class), + CrudPermission::CREATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceUpdateTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceUpdateTest.php index e3f3d927b..3a4f497f4 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceUpdateTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistResource/ArtistResourceUpdateTest.php @@ -76,7 +76,12 @@ class ArtistResourceUpdateTest extends TestCase $parameters = ArtistResource::factory()->raw(); - $user = User::factory()->withPermissions([CrudPermission::UPDATE()->format(Artist::class), CrudPermission::UPDATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::UPDATE()->format(Artist::class), + CrudPermission::UPDATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongDestroyTest.php index ad66f41c4..e0feaeecf 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongDestroyTest.php @@ -68,7 +68,12 @@ class ArtistSongDestroyTest extends TestCase $artist = Artist::factory()->createOne(); $song = Song::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(Song::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Artist::class), + CrudPermission::DELETE()->format(Song::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class ArtistSongDestroyTest extends TestCase ->for(Song::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(Song::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Artist::class), + CrudPermission::DELETE()->format(Song::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongStoreTest.php index f685789ce..14f410cd3 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongStoreTest.php @@ -65,7 +65,12 @@ class ArtistSongStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(Song::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Artist::class), + CrudPermission::CREATE()->format(Song::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -90,7 +95,12 @@ class ArtistSongStoreTest extends TestCase [ArtistSong::ATTRIBUTE_SONG => Song::factory()->createOne()->getKey()], ); - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(Song::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Artist::class), + CrudPermission::CREATE()->format(Song::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongUpdateTest.php b/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongUpdateTest.php index 798f6ce4d..5c06775a0 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongUpdateTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/ArtistSong/ArtistSongUpdateTest.php @@ -76,7 +76,12 @@ class ArtistSongUpdateTest extends TestCase $parameters = ArtistSong::factory()->raw(); - $user = User::factory()->withPermissions([CrudPermission::UPDATE()->format(Artist::class), CrudPermission::UPDATE()->format(Song::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::UPDATE()->format(Artist::class), + CrudPermission::UPDATE()->format(Song::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageDestroyTest.php index e27e28332..2baebcfc3 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageDestroyTest.php @@ -68,7 +68,12 @@ class StudioImageDestroyTest extends TestCase $studio = Studio::factory()->createOne(); $image = Image::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Studio::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Studio::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class StudioImageDestroyTest extends TestCase ->for(Image::factory()) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Studio::class), CrudPermission::DELETE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Studio::class), + CrudPermission::DELETE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageStoreTest.php index f98003f72..34f07a3cc 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/StudioImage/StudioImageStoreTest.php @@ -65,7 +65,12 @@ class StudioImageStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Studio::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Studio::class), + CrudPermission::CREATE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class StudioImageStoreTest extends TestCase StudioImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(), ]; - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Studio::class), CrudPermission::CREATE()->format(Image::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Studio::class), + CrudPermission::CREATE()->format(Image::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceDestroyTest.php b/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceDestroyTest.php index 503beb348..86918cb09 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceDestroyTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceDestroyTest.php @@ -68,7 +68,12 @@ class StudioResourceDestroyTest extends TestCase $studio = Studio::factory()->createOne(); $resource = ExternalResource::factory()->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Studio::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Studio::class), + CrudPermission::DELETE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -89,7 +94,12 @@ class StudioResourceDestroyTest extends TestCase ->for(ExternalResource::factory(), StudioResource::RELATION_RESOURCE) ->createOne(); - $user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Studio::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::DELETE()->format(Studio::class), + CrudPermission::DELETE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceStoreTest.php b/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceStoreTest.php index 173475a6b..a08aa6a84 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceStoreTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceStoreTest.php @@ -65,7 +65,12 @@ class StudioResourceStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Studio::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Studio::class), + CrudPermission::CREATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); @@ -90,7 +95,12 @@ class StudioResourceStoreTest extends TestCase [StudioResource::ATTRIBUTE_RESOURCE => ExternalResource::factory()->createOne()->getKey()], ); - $user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Studio::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::CREATE()->format(Studio::class), + CrudPermission::CREATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceUpdateTest.php b/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceUpdateTest.php index d8d283d5e..1c2be5106 100644 --- a/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceUpdateTest.php +++ b/tests/Feature/Http/Api/Pivot/Wiki/StudioResource/StudioResourceUpdateTest.php @@ -76,7 +76,12 @@ class StudioResourceUpdateTest extends TestCase $parameters = StudioResource::factory()->raw(); - $user = User::factory()->withPermissions([CrudPermission::UPDATE()->format(Studio::class), CrudPermission::UPDATE()->format(ExternalResource::class)])->createOne(); + $user = User::factory() + ->withPermissions( + CrudPermission::UPDATE()->format(Studio::class), + CrudPermission::UPDATE()->format(ExternalResource::class) + ) + ->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/ThrottleTest.php b/tests/Feature/Http/Api/ThrottleTest.php index c4d472e4b..65f138637 100644 --- a/tests/Feature/Http/Api/ThrottleTest.php +++ b/tests/Feature/Http/Api/ThrottleTest.php @@ -34,7 +34,7 @@ class ThrottleTest extends TestCase */ public function testClientNotRateLimited(): void { - $user = User::factory()->withPermission(SpecialPermission::BYPASS_API_RATE_LIMITER)->createOne(); + $user = User::factory()->withPermissions(SpecialPermission::BYPASS_API_RATE_LIMITER)->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/AnimeDestroyTest.php b/tests/Feature/Http/Api/Wiki/Anime/AnimeDestroyTest.php index 81a04216c..41bb77a19 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/AnimeDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/AnimeDestroyTest.php @@ -61,7 +61,7 @@ class AnimeDestroyTest extends TestCase $anime->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class AnimeDestroyTest extends TestCase { $anime = Anime::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/AnimeForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Anime/AnimeForceDeleteTest.php index 942892738..dfdcfe04f 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/AnimeForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/AnimeForceDeleteTest.php @@ -59,7 +59,7 @@ class AnimeForceDeleteTest extends TestCase { $anime = Anime::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/AnimeRestoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/AnimeRestoreTest.php index 62b9232b8..948910514 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/AnimeRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/AnimeRestoreTest.php @@ -63,7 +63,7 @@ class AnimeRestoreTest extends TestCase { $anime = Anime::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class AnimeRestoreTest extends TestCase $anime->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/AnimeStoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/AnimeStoreTest.php index dfcbc2c8e..3bbc3edf8 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/AnimeStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/AnimeStoreTest.php @@ -58,7 +58,7 @@ class AnimeStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); @@ -84,7 +84,7 @@ class AnimeStoreTest extends TestCase [Anime::ATTRIBUTE_SEASON => AnimeSeason::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/AnimeUpdateTest.php b/tests/Feature/Http/Api/Wiki/Anime/AnimeUpdateTest.php index e7f707aab..7e66e6412 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/AnimeUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/AnimeUpdateTest.php @@ -77,7 +77,7 @@ class AnimeUpdateTest extends TestCase [Anime::ATTRIBUTE_SEASON => AnimeSeason::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); @@ -100,7 +100,7 @@ class AnimeUpdateTest extends TestCase [Anime::ATTRIBUTE_SEASON => AnimeSeason::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Anime::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Anime::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymDestroyTest.php b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymDestroyTest.php index 29ca3739e..4705ae9d4 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymDestroyTest.php @@ -62,7 +62,7 @@ class SynonymDestroyTest extends TestCase $synonym->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); @@ -80,7 +80,7 @@ class SynonymDestroyTest extends TestCase { $synonym = AnimeSynonym::factory()->for(Anime::factory())->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymForceDeleteTest.php index 9b25d007d..db02d1aa2 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymForceDeleteTest.php @@ -60,7 +60,7 @@ class SynonymForceDeleteTest extends TestCase { $synonym = AnimeSynonym::factory()->for(Anime::factory())->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymRestoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymRestoreTest.php index dd706016b..ce80c6a11 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymRestoreTest.php @@ -64,7 +64,7 @@ class SynonymRestoreTest extends TestCase { $synonym = AnimeSynonym::factory()->for(Anime::factory())->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); @@ -84,7 +84,7 @@ class SynonymRestoreTest extends TestCase $synonym->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymStoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymStoreTest.php index 32f4656b1..28aacdafd 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymStoreTest.php @@ -58,7 +58,7 @@ class SynonymStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class SynonymStoreTest extends TestCase [AnimeSynonym::ATTRIBUTE_ANIME => $anime->getKey()], ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymUpdateTest.php b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymUpdateTest.php index a0d107f33..42fb65ea1 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Synonym/SynonymUpdateTest.php @@ -68,7 +68,7 @@ class SynonymUpdateTest extends TestCase $parameters = AnimeSynonym::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::VIEW()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::VIEW()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); @@ -88,7 +88,7 @@ class SynonymUpdateTest extends TestCase $parameters = AnimeSynonym::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(AnimeSynonym::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(AnimeSynonym::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryDestroyTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryDestroyTest.php index 9402431f6..766b6b605 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryDestroyTest.php @@ -69,7 +69,7 @@ class EntryDestroyTest extends TestCase $entry->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); @@ -89,7 +89,7 @@ class EntryDestroyTest extends TestCase ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryForceDeleteTest.php index 1c94179b4..82c0af68e 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryForceDeleteTest.php @@ -67,7 +67,7 @@ class EntryForceDeleteTest extends TestCase ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryRestoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryRestoreTest.php index 1995665ff..b7a089339 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryRestoreTest.php @@ -71,7 +71,7 @@ class EntryRestoreTest extends TestCase ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); @@ -93,7 +93,7 @@ class EntryRestoreTest extends TestCase $entry->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryStoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryStoreTest.php index 77a555513..70d658c2f 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryStoreTest.php @@ -63,7 +63,7 @@ class EntryStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); @@ -88,7 +88,7 @@ class EntryStoreTest extends TestCase [AnimeThemeEntry::ATTRIBUTE_THEME => $theme->getKey()], ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryUpdateTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryUpdateTest.php index bdc395f76..ede72f79d 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/Entry/EntryUpdateTest.php @@ -75,7 +75,7 @@ class EntryUpdateTest extends TestCase $parameters = AnimeThemeEntry::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); @@ -97,7 +97,7 @@ class EntryUpdateTest extends TestCase $parameters = AnimeThemeEntry::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(AnimeThemeEntry::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(AnimeThemeEntry::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeDestroyTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeDestroyTest.php index 3f6c16c3e..9e8e4c1e3 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeDestroyTest.php @@ -62,7 +62,7 @@ class ThemeDestroyTest extends TestCase $theme->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); @@ -80,7 +80,7 @@ class ThemeDestroyTest extends TestCase { $theme = AnimeTheme::factory()->for(Anime::factory())->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeForceDeleteTest.php index de45234cc..290bda6f5 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeForceDeleteTest.php @@ -60,7 +60,7 @@ class ThemeForceDeleteTest extends TestCase { $theme = AnimeTheme::factory()->for(Anime::factory())->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeRestoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeRestoreTest.php index 047a9d625..f11725bda 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeRestoreTest.php @@ -64,7 +64,7 @@ class ThemeRestoreTest extends TestCase { $theme = AnimeTheme::factory()->for(Anime::factory())->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); @@ -84,7 +84,7 @@ class ThemeRestoreTest extends TestCase $theme->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeStoreTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeStoreTest.php index deca5fea1..d963f33b3 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeStoreTest.php @@ -59,7 +59,7 @@ class ThemeStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class ThemeStoreTest extends TestCase [AnimeTheme::ATTRIBUTE_ANIME => $anime->getKey()], ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeUpdateTest.php b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeUpdateTest.php index 27e291bc6..f1152712c 100644 --- a/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Anime/Theme/ThemeUpdateTest.php @@ -78,7 +78,7 @@ class ThemeUpdateTest extends TestCase [AnimeTheme::ATTRIBUTE_TYPE => ThemeType::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); @@ -101,7 +101,7 @@ class ThemeUpdateTest extends TestCase [AnimeTheme::ATTRIBUTE_TYPE => ThemeType::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(AnimeTheme::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(AnimeTheme::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Artist/ArtistDestroyTest.php b/tests/Feature/Http/Api/Wiki/Artist/ArtistDestroyTest.php index 833d77a6e..604ef8070 100644 --- a/tests/Feature/Http/Api/Wiki/Artist/ArtistDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Artist/ArtistDestroyTest.php @@ -61,7 +61,7 @@ class ArtistDestroyTest extends TestCase $artist->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class ArtistDestroyTest extends TestCase { $artist = Artist::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Artist/ArtistForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Artist/ArtistForceDeleteTest.php index a7c8c5d4b..7de7c4478 100644 --- a/tests/Feature/Http/Api/Wiki/Artist/ArtistForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Artist/ArtistForceDeleteTest.php @@ -59,7 +59,7 @@ class ArtistForceDeleteTest extends TestCase { $artist = Artist::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Artist/ArtistRestoreTest.php b/tests/Feature/Http/Api/Wiki/Artist/ArtistRestoreTest.php index 355e3054a..aaaa4ea69 100644 --- a/tests/Feature/Http/Api/Wiki/Artist/ArtistRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Artist/ArtistRestoreTest.php @@ -63,7 +63,7 @@ class ArtistRestoreTest extends TestCase { $artist = Artist::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class ArtistRestoreTest extends TestCase $artist->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Artist/ArtistStoreTest.php b/tests/Feature/Http/Api/Wiki/Artist/ArtistStoreTest.php index bf134ded9..693a25811 100644 --- a/tests/Feature/Http/Api/Wiki/Artist/ArtistStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Artist/ArtistStoreTest.php @@ -57,7 +57,7 @@ class ArtistStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); @@ -78,7 +78,7 @@ class ArtistStoreTest extends TestCase { $parameters = Artist::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Artist/ArtistUpdateTest.php b/tests/Feature/Http/Api/Wiki/Artist/ArtistUpdateTest.php index 96f0bb3ab..bfdee3909 100644 --- a/tests/Feature/Http/Api/Wiki/Artist/ArtistUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Artist/ArtistUpdateTest.php @@ -67,7 +67,7 @@ class ArtistUpdateTest extends TestCase $parameters = Artist::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class ArtistUpdateTest extends TestCase $parameters = Artist::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Artist::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Artist::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Audio/AudioDestroyTest.php b/tests/Feature/Http/Api/Wiki/Audio/AudioDestroyTest.php index 186d8d837..ec51dfba2 100644 --- a/tests/Feature/Http/Api/Wiki/Audio/AudioDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Audio/AudioDestroyTest.php @@ -61,7 +61,7 @@ class AudioDestroyTest extends TestCase $audio->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class AudioDestroyTest extends TestCase { $audio = Audio::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Audio/AudioForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Audio/AudioForceDeleteTest.php index eefaff28c..74a780e06 100644 --- a/tests/Feature/Http/Api/Wiki/Audio/AudioForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Audio/AudioForceDeleteTest.php @@ -59,7 +59,7 @@ class AudioForceDeleteTest extends TestCase { $audio = Audio::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Audio/AudioRestoreTest.php b/tests/Feature/Http/Api/Wiki/Audio/AudioRestoreTest.php index 875bcc1af..851554560 100644 --- a/tests/Feature/Http/Api/Wiki/Audio/AudioRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Audio/AudioRestoreTest.php @@ -63,7 +63,7 @@ class AudioRestoreTest extends TestCase { $audio = Audio::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class AudioRestoreTest extends TestCase $audio->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Audio/AudioStoreTest.php b/tests/Feature/Http/Api/Wiki/Audio/AudioStoreTest.php index 3f6355af4..2c61d39ca 100644 --- a/tests/Feature/Http/Api/Wiki/Audio/AudioStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Audio/AudioStoreTest.php @@ -57,7 +57,7 @@ class AudioStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); @@ -81,7 +81,7 @@ class AudioStoreTest extends TestCase { $parameters = Audio::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Audio/AudioUpdateTest.php b/tests/Feature/Http/Api/Wiki/Audio/AudioUpdateTest.php index 3e5794be9..a8f4f0257 100644 --- a/tests/Feature/Http/Api/Wiki/Audio/AudioUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Audio/AudioUpdateTest.php @@ -67,7 +67,7 @@ class AudioUpdateTest extends TestCase $parameters = Audio::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class AudioUpdateTest extends TestCase $parameters = Audio::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Audio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Audio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceDestroyTest.php b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceDestroyTest.php index 5a9df9484..c6ba55e09 100644 --- a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceDestroyTest.php @@ -61,7 +61,7 @@ class ExternalResourceDestroyTest extends TestCase $resource->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class ExternalResourceDestroyTest extends TestCase { $resource = ExternalResource::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceForceDeleteTest.php index 89560db09..2a79e83da 100644 --- a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceForceDeleteTest.php @@ -59,7 +59,7 @@ class ExternalResourceForceDeleteTest extends TestCase { $resource = ExternalResource::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceRestoreTest.php b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceRestoreTest.php index cd8a0e4aa..77523638e 100644 --- a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceRestoreTest.php @@ -63,7 +63,7 @@ class ExternalResourceRestoreTest extends TestCase { $resource = ExternalResource::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class ExternalResourceRestoreTest extends TestCase $resource->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceStoreTest.php b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceStoreTest.php index 0156758a1..dc2d1d243 100644 --- a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceStoreTest.php @@ -58,7 +58,7 @@ class ExternalResourceStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); @@ -82,7 +82,7 @@ class ExternalResourceStoreTest extends TestCase [ExternalResource::ATTRIBUTE_SITE => ResourceSite::getDescription(ResourceSite::OFFICIAL_SITE)], ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceUpdateTest.php b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceUpdateTest.php index 0578a540f..4c1fa30c1 100644 --- a/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/ExternalResource/ExternalResourceUpdateTest.php @@ -79,7 +79,7 @@ class ExternalResourceUpdateTest extends TestCase [ExternalResource::ATTRIBUTE_SITE => ResourceSite::getDescription(ResourceSite::OFFICIAL_SITE)] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); @@ -104,7 +104,7 @@ class ExternalResourceUpdateTest extends TestCase [ExternalResource::ATTRIBUTE_SITE => ResourceSite::getDescription(ResourceSite::OFFICIAL_SITE)] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(ExternalResource::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(ExternalResource::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Image/ImageDestroyTest.php b/tests/Feature/Http/Api/Wiki/Image/ImageDestroyTest.php index 67c7d317c..4ec7b52fb 100644 --- a/tests/Feature/Http/Api/Wiki/Image/ImageDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Image/ImageDestroyTest.php @@ -61,7 +61,7 @@ class ImageDestroyTest extends TestCase $image->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Image::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class ImageDestroyTest extends TestCase { $image = Image::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Image::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Image/ImageForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Image/ImageForceDeleteTest.php index aaa486754..7be7b51e3 100644 --- a/tests/Feature/Http/Api/Wiki/Image/ImageForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Image/ImageForceDeleteTest.php @@ -59,7 +59,7 @@ class ImageForceDeleteTest extends TestCase { $image = Image::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Image::class))->createOne(); Sanctum::actingAs($user); $response = $this->delete(route('api.image.forceDelete', ['image' => $image])); diff --git a/tests/Feature/Http/Api/Wiki/Image/ImageRestoreTest.php b/tests/Feature/Http/Api/Wiki/Image/ImageRestoreTest.php index 8270ffd4f..c31ac1d8f 100644 --- a/tests/Feature/Http/Api/Wiki/Image/ImageRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Image/ImageRestoreTest.php @@ -63,7 +63,7 @@ class ImageRestoreTest extends TestCase { $image = Image::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Image::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class ImageRestoreTest extends TestCase $image->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Image::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Image/ImageStoreTest.php b/tests/Feature/Http/Api/Wiki/Image/ImageStoreTest.php index 74ab2796e..229f967f5 100644 --- a/tests/Feature/Http/Api/Wiki/Image/ImageStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Image/ImageStoreTest.php @@ -64,7 +64,7 @@ class ImageStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Image::class))->createOne(); Sanctum::actingAs($user); @@ -86,7 +86,7 @@ class ImageStoreTest extends TestCase $parameters = [Image::ATTRIBUTE_FACET => ImageFacet::getRandomInstance()->description]; - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Image::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Image/ImageUpdateTest.php b/tests/Feature/Http/Api/Wiki/Image/ImageUpdateTest.php index 45c81d18c..3d7cdd208 100644 --- a/tests/Feature/Http/Api/Wiki/Image/ImageUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Image/ImageUpdateTest.php @@ -77,7 +77,7 @@ class ImageUpdateTest extends TestCase [Image::ATTRIBUTE_FACET => ImageFacet::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Image::class))->createOne(); Sanctum::actingAs($user); @@ -100,7 +100,7 @@ class ImageUpdateTest extends TestCase [Image::ATTRIBUTE_FACET => ImageFacet::getRandomInstance()->description], ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Image::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Image::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Series/SeriesDestroyTest.php b/tests/Feature/Http/Api/Wiki/Series/SeriesDestroyTest.php index a77577090..248344c17 100644 --- a/tests/Feature/Http/Api/Wiki/Series/SeriesDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Series/SeriesDestroyTest.php @@ -61,7 +61,7 @@ class SeriesDestroyTest extends TestCase $series->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Series::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class SeriesDestroyTest extends TestCase { $series = Series::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Series::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Series/SeriesForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Series/SeriesForceDeleteTest.php index eb004d48a..16217c2f0 100644 --- a/tests/Feature/Http/Api/Wiki/Series/SeriesForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Series/SeriesForceDeleteTest.php @@ -59,7 +59,7 @@ class SeriesForceDeleteTest extends TestCase { $series = Series::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Series::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Series/SeriesRestoreTest.php b/tests/Feature/Http/Api/Wiki/Series/SeriesRestoreTest.php index 999b1941f..cf24bbf0e 100644 --- a/tests/Feature/Http/Api/Wiki/Series/SeriesRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Series/SeriesRestoreTest.php @@ -63,7 +63,7 @@ class SeriesRestoreTest extends TestCase { $series = Series::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Series::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class SeriesRestoreTest extends TestCase $series->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Series::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Series/SeriesStoreTest.php b/tests/Feature/Http/Api/Wiki/Series/SeriesStoreTest.php index 4dfae5d5c..1fbdbd94a 100644 --- a/tests/Feature/Http/Api/Wiki/Series/SeriesStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Series/SeriesStoreTest.php @@ -57,7 +57,7 @@ class SeriesStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Series::class))->createOne(); Sanctum::actingAs($user); @@ -78,7 +78,7 @@ class SeriesStoreTest extends TestCase { $parameters = Series::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Series::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Series/SeriesUpdateTest.php b/tests/Feature/Http/Api/Wiki/Series/SeriesUpdateTest.php index 5fec251a8..faa27c4bb 100644 --- a/tests/Feature/Http/Api/Wiki/Series/SeriesUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Series/SeriesUpdateTest.php @@ -67,7 +67,7 @@ class SeriesUpdateTest extends TestCase $parameters = Series::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Series::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class SeriesUpdateTest extends TestCase $parameters = Series::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Series::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Series::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Song/SongDestroyTest.php b/tests/Feature/Http/Api/Wiki/Song/SongDestroyTest.php index 9ba8d6614..ecf6ea00f 100644 --- a/tests/Feature/Http/Api/Wiki/Song/SongDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Song/SongDestroyTest.php @@ -61,7 +61,7 @@ class SongDestroyTest extends TestCase $song->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Song::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class SongDestroyTest extends TestCase { $song = Song::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Song::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Song/SongForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Song/SongForceDeleteTest.php index 01272f3b9..ab6a957c8 100644 --- a/tests/Feature/Http/Api/Wiki/Song/SongForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Song/SongForceDeleteTest.php @@ -59,7 +59,7 @@ class SongForceDeleteTest extends TestCase { $song = Song::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Song::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Song/SongRestoreTest.php b/tests/Feature/Http/Api/Wiki/Song/SongRestoreTest.php index ebaa5b371..864f12204 100644 --- a/tests/Feature/Http/Api/Wiki/Song/SongRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Song/SongRestoreTest.php @@ -63,7 +63,7 @@ class SongRestoreTest extends TestCase { $song = Song::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Song::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class SongRestoreTest extends TestCase $song->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Song::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Song/SongStoreTest.php b/tests/Feature/Http/Api/Wiki/Song/SongStoreTest.php index 7c66d0581..f52ff25fb 100644 --- a/tests/Feature/Http/Api/Wiki/Song/SongStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Song/SongStoreTest.php @@ -59,7 +59,7 @@ class SongStoreTest extends TestCase { $parameters = Song::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Song::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Song/SongUpdateTest.php b/tests/Feature/Http/Api/Wiki/Song/SongUpdateTest.php index d6a72df78..eebb27e4b 100644 --- a/tests/Feature/Http/Api/Wiki/Song/SongUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Song/SongUpdateTest.php @@ -67,7 +67,7 @@ class SongUpdateTest extends TestCase $parameters = Song::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Song::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class SongUpdateTest extends TestCase $parameters = Song::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Song::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Song::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Studio/StudioDestroyTest.php b/tests/Feature/Http/Api/Wiki/Studio/StudioDestroyTest.php index 7e90456ce..81cc6581d 100644 --- a/tests/Feature/Http/Api/Wiki/Studio/StudioDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Studio/StudioDestroyTest.php @@ -61,7 +61,7 @@ class StudioDestroyTest extends TestCase $studio->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class StudioDestroyTest extends TestCase { $studio = Studio::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Studio/StudioForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Studio/StudioForceDeleteTest.php index 4a46c1a63..4de4d361f 100644 --- a/tests/Feature/Http/Api/Wiki/Studio/StudioForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Studio/StudioForceDeleteTest.php @@ -59,7 +59,7 @@ class StudioForceDeleteTest extends TestCase { $studio = Studio::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Studio/StudioRestoreTest.php b/tests/Feature/Http/Api/Wiki/Studio/StudioRestoreTest.php index fb8cace35..1f9c10736 100644 --- a/tests/Feature/Http/Api/Wiki/Studio/StudioRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Studio/StudioRestoreTest.php @@ -63,7 +63,7 @@ class StudioRestoreTest extends TestCase { $studio = Studio::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class StudioRestoreTest extends TestCase $studio->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Studio/StudioStoreTest.php b/tests/Feature/Http/Api/Wiki/Studio/StudioStoreTest.php index a47023e53..cf85a9c22 100644 --- a/tests/Feature/Http/Api/Wiki/Studio/StudioStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Studio/StudioStoreTest.php @@ -57,7 +57,7 @@ class StudioStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); @@ -78,7 +78,7 @@ class StudioStoreTest extends TestCase { $parameters = Studio::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Studio/StudioUpdateTest.php b/tests/Feature/Http/Api/Wiki/Studio/StudioUpdateTest.php index 7795151f5..c5ea727b4 100644 --- a/tests/Feature/Http/Api/Wiki/Studio/StudioUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Studio/StudioUpdateTest.php @@ -67,7 +67,7 @@ class StudioUpdateTest extends TestCase $parameters = Studio::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class StudioUpdateTest extends TestCase $parameters = Studio::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Studio::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Studio::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptDestroyTest.php b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptDestroyTest.php index f7fb0d526..8546a6d70 100644 --- a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptDestroyTest.php @@ -61,7 +61,7 @@ class ScriptDestroyTest extends TestCase $script->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class ScriptDestroyTest extends TestCase { $script = VideoScript::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptForceDeleteTest.php index b611286af..e6ee9cd7d 100644 --- a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptForceDeleteTest.php @@ -59,7 +59,7 @@ class ScriptForceDeleteTest extends TestCase { $script = VideoScript::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptRestoreTest.php b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptRestoreTest.php index 72e08fc46..31beb2761 100644 --- a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptRestoreTest.php @@ -63,7 +63,7 @@ class ScriptRestoreTest extends TestCase { $script = VideoScript::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class ScriptRestoreTest extends TestCase $script->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptStoreTest.php b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptStoreTest.php index ee62b31c2..61821fa56 100644 --- a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptStoreTest.php @@ -57,7 +57,7 @@ class ScriptStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); @@ -77,7 +77,7 @@ class ScriptStoreTest extends TestCase { $parameters = VideoScript::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptUpdateTest.php b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptUpdateTest.php index 495a69b50..5979bbbcd 100644 --- a/tests/Feature/Http/Api/Wiki/Video/Script/ScriptUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/Script/ScriptUpdateTest.php @@ -67,7 +67,7 @@ class ScriptUpdateTest extends TestCase $parameters = VideoScript::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); @@ -87,7 +87,7 @@ class ScriptUpdateTest extends TestCase $parameters = VideoScript::factory()->raw(); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(VideoScript::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(VideoScript::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/VideoDestroyTest.php b/tests/Feature/Http/Api/Wiki/Video/VideoDestroyTest.php index 7649e565c..00b5d8a97 100644 --- a/tests/Feature/Http/Api/Wiki/Video/VideoDestroyTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/VideoDestroyTest.php @@ -61,7 +61,7 @@ class VideoDestroyTest extends TestCase $video->delete(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Video::class))->createOne(); Sanctum::actingAs($user); @@ -79,7 +79,7 @@ class VideoDestroyTest extends TestCase { $video = Video::factory()->createOne(); - $user = User::factory()->withPermission(CrudPermission::DELETE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::DELETE()->format(Video::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/VideoForceDeleteTest.php b/tests/Feature/Http/Api/Wiki/Video/VideoForceDeleteTest.php index 4b8d8cded..9a707d7ad 100644 --- a/tests/Feature/Http/Api/Wiki/Video/VideoForceDeleteTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/VideoForceDeleteTest.php @@ -59,7 +59,7 @@ class VideoForceDeleteTest extends TestCase { $video = Video::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::FORCE_DELETE()->format(Video::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/VideoRestoreTest.php b/tests/Feature/Http/Api/Wiki/Video/VideoRestoreTest.php index bcf83fb43..0e89a8a2f 100644 --- a/tests/Feature/Http/Api/Wiki/Video/VideoRestoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/VideoRestoreTest.php @@ -63,7 +63,7 @@ class VideoRestoreTest extends TestCase { $video = Video::factory()->createOne(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Video::class))->createOne(); Sanctum::actingAs($user); @@ -83,7 +83,7 @@ class VideoRestoreTest extends TestCase $video->delete(); - $user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(ExtendedCrudPermission::RESTORE()->format(Video::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/VideoStoreTest.php b/tests/Feature/Http/Api/Wiki/Video/VideoStoreTest.php index c253472d2..8b2c1dc99 100644 --- a/tests/Feature/Http/Api/Wiki/Video/VideoStoreTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/VideoStoreTest.php @@ -59,7 +59,7 @@ class VideoStoreTest extends TestCase */ public function testRequiredFields(): void { - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Video::class))->createOne(); Sanctum::actingAs($user); @@ -89,7 +89,7 @@ class VideoStoreTest extends TestCase ] ); - $user = User::factory()->withPermission(CrudPermission::CREATE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::CREATE()->format(Video::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Api/Wiki/Video/VideoUpdateTest.php b/tests/Feature/Http/Api/Wiki/Video/VideoUpdateTest.php index b52eb50bf..c799b25f9 100644 --- a/tests/Feature/Http/Api/Wiki/Video/VideoUpdateTest.php +++ b/tests/Feature/Http/Api/Wiki/Video/VideoUpdateTest.php @@ -87,7 +87,7 @@ class VideoUpdateTest extends TestCase ] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Video::class))->createOne(); Sanctum::actingAs($user); @@ -113,7 +113,7 @@ class VideoUpdateTest extends TestCase ] ); - $user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Video::class))->createOne(); + $user = User::factory()->withPermissions(CrudPermission::UPDATE()->format(Video::class))->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Wiki/Audio/AudioTest.php b/tests/Feature/Http/Wiki/Audio/AudioTest.php index e5c7c897b..0918a071d 100644 --- a/tests/Feature/Http/Wiki/Audio/AudioTest.php +++ b/tests/Feature/Http/Wiki/Audio/AudioTest.php @@ -61,7 +61,7 @@ class AudioTest extends TestCase $audio = Audio::factory()->createOne(); - $user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); + $user = User::factory()->withPermissions(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Wiki/Video/Script/ScriptTest.php b/tests/Feature/Http/Wiki/Video/Script/ScriptTest.php index 8cdb2d9af..f9d217f43 100644 --- a/tests/Feature/Http/Wiki/Video/Script/ScriptTest.php +++ b/tests/Feature/Http/Wiki/Video/Script/ScriptTest.php @@ -60,7 +60,7 @@ class ScriptTest extends TestCase VideoScript::ATTRIBUTE_PATH => $fsFile, ]); - $user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); + $user = User::factory()->withPermissions(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); Sanctum::actingAs($user); diff --git a/tests/Feature/Http/Wiki/Video/VideoTest.php b/tests/Feature/Http/Wiki/Video/VideoTest.php index c1bdba87f..f419d6fd8 100644 --- a/tests/Feature/Http/Wiki/Video/VideoTest.php +++ b/tests/Feature/Http/Wiki/Video/VideoTest.php @@ -100,7 +100,7 @@ class VideoTest extends TestCase $video = Video::factory()->createOne(); - $user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); + $user = User::factory()->withPermissions(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne(); Sanctum::actingAs($user);