From 5b7b9e0ec8cd1b1bdadc3c6f434954e2d69e8b49 Mon Sep 17 00:00:00 2001 From: Ni Nelli Date: Thu, 20 Nov 2025 13:00:57 +0900 Subject: [PATCH 1/2] refactor: add user model check to create method refs: https://github.com/RonasIT/laravel-media/issues/74 --- src/Services/MediaService.php | 6 ++- tests/MediaTest.php | 27 ++++++++++ tests/Models/custom/CustomUser.php | 50 +++++++++++++++++++ .../MediaTest/create_null_owner_id.json | 14 ++++++ .../media/create_null_owner_id.json | 30 +++++++++++ 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100755 tests/Models/custom/CustomUser.php create mode 100755 tests/fixtures/MediaTest/create_null_owner_id.json create mode 100755 tests/fixtures/MediaTest/db_changes/media/create_null_owner_id.json diff --git a/src/Services/MediaService.php b/src/Services/MediaService.php index 2950969..6086eaf 100644 --- a/src/Services/MediaService.php +++ b/src/Services/MediaService.php @@ -209,7 +209,11 @@ protected function createPreviews(string $fileName, array &$data, int $ownerId = protected function prepareMediaData(array $data, string $filePath): array { if (empty($data['owner_id'])) { - $data['owner_id'] = (Auth::check()) ? Auth::id() : null; + $user = Auth::user(); + + $data['owner_id'] = ($user && (config('media.classes.user_model') === get_class($user))) + ? $user->getAuthIdentifier() + : null; } $data['name'] = $filePath; diff --git a/tests/MediaTest.php b/tests/MediaTest.php index c110ebd..ea2d4b3 100755 --- a/tests/MediaTest.php +++ b/tests/MediaTest.php @@ -10,6 +10,7 @@ use PHPUnit\Framework\Attributes\DataProvider; use RonasIT\Media\Contracts\Services\MediaServiceContract; use RonasIT\Media\Models\Media; +use RonasIT\Media\Tests\Models\custom\CustomUser; use RonasIT\Media\Tests\Models\User; use RonasIT\Media\Tests\Support\MediaTestTrait; use RonasIT\Media\Tests\Support\ModelTestState; @@ -48,6 +49,32 @@ public function testCreateFromStream(): void $this->assertEqualsFixture('create_from_stream_response', $response->json()); } + public function testCreateNotConfigUserModel(): void + { + Config::set('media.classes.user_model', 'RonasIT\Tests\Models\User'); + + $response = $this->actingAs(self::$user)->json('post', '/media', ['file' => self::$file]); + + $response->assertCreated(); + + self::$mediaTestState->assertChangesEqualsFixture('create_null_owner_id'); + + $this->assertEqualsFixture('create_null_owner_id', $response->json()); + } + + public function testCreateCustomAuthProvider() + { + $user = new CustomUser(354665, 'Sam', '123456'); + + $response = $this->actingAs($user)->json('post', '/media', ['file' => self::$file]); + + $response->assertCreated(); + + self::$mediaTestState->assertChangesEqualsFixture('create_null_owner_id'); + + $this->assertEqualsFixture('create_null_owner_id', $response->json()); + } + public function testCreatePublic(): void { $response = $this->actingAs(self::$user)->json('post', '/media', [ diff --git a/tests/Models/custom/CustomUser.php b/tests/Models/custom/CustomUser.php new file mode 100755 index 0000000..fd08ae9 --- /dev/null +++ b/tests/Models/custom/CustomUser.php @@ -0,0 +1,50 @@ +username; + } + + public function getAuthIdentifier(): int + { + return $this->id; + } + + public function getAuthPasswordName(): string + { + return 'password'; + } + + public function getAuthPassword(): string + { + return $this->password; + } + + public function getRememberToken() + { + // TODO: Implement getRememberToken() method. + } + + public function setRememberToken($value) + { + // TODO: Implement setRememberToken() method. + } + + public function getRememberTokenName() + { + // TODO: Implement getRememberTokenName() method. + } +} \ No newline at end of file diff --git a/tests/fixtures/MediaTest/create_null_owner_id.json b/tests/fixtures/MediaTest/create_null_owner_id.json new file mode 100755 index 0000000..0b7a055 --- /dev/null +++ b/tests/fixtures/MediaTest/create_null_owner_id.json @@ -0,0 +1,14 @@ +{ + "id": 12, + "link": "\/storage\/WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "name": "WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "is_public": false, + "meta": [], + "preview": { + "id": 11, + "link": "\/storage\/preview_WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "name": "preview_WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "is_public": false, + "meta": [] + } +} \ No newline at end of file diff --git a/tests/fixtures/MediaTest/db_changes/media/create_null_owner_id.json b/tests/fixtures/MediaTest/db_changes/media/create_null_owner_id.json new file mode 100755 index 0000000..186330a --- /dev/null +++ b/tests/fixtures/MediaTest/db_changes/media/create_null_owner_id.json @@ -0,0 +1,30 @@ +{ + "updated": [], + "created": [ + { + "id": 11, + "created_at": "2024-01-01 00:00:00", + "updated_at": "2024-01-01 00:00:00", + "link": "\/storage\/preview_WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "name": "preview_WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "is_public": false, + "meta": [], + "owner_id": null, + "preview_id": null, + "blur_hash": null + }, + { + "id": 12, + "created_at": "2024-01-01 00:00:00", + "updated_at": "2024-01-01 00:00:00", + "link": "\/storage\/WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "name": "WpaDXtsDIc4IbC19IqHClOEHwTTlpyszZsm7Sb20.png", + "is_public": false, + "meta": [], + "owner_id": null, + "preview_id": 11, + "blur_hash": null + } + ], + "deleted": [] +} \ No newline at end of file From 4e27fb685bf81b0d828e900f48a00091f96fd0dc Mon Sep 17 00:00:00 2001 From: Ni Nelli Date: Thu, 20 Nov 2025 13:25:55 +0900 Subject: [PATCH 2/2] test: delete redundant code refs: https://github.com/RonasIT/laravel-media/issues/74 --- tests/MediaTest.php | 14 --------- tests/Models/custom/CustomUser.php | 50 ------------------------------ 2 files changed, 64 deletions(-) delete mode 100755 tests/Models/custom/CustomUser.php diff --git a/tests/MediaTest.php b/tests/MediaTest.php index ea2d4b3..21740a8 100755 --- a/tests/MediaTest.php +++ b/tests/MediaTest.php @@ -10,7 +10,6 @@ use PHPUnit\Framework\Attributes\DataProvider; use RonasIT\Media\Contracts\Services\MediaServiceContract; use RonasIT\Media\Models\Media; -use RonasIT\Media\Tests\Models\custom\CustomUser; use RonasIT\Media\Tests\Models\User; use RonasIT\Media\Tests\Support\MediaTestTrait; use RonasIT\Media\Tests\Support\ModelTestState; @@ -62,19 +61,6 @@ public function testCreateNotConfigUserModel(): void $this->assertEqualsFixture('create_null_owner_id', $response->json()); } - public function testCreateCustomAuthProvider() - { - $user = new CustomUser(354665, 'Sam', '123456'); - - $response = $this->actingAs($user)->json('post', '/media', ['file' => self::$file]); - - $response->assertCreated(); - - self::$mediaTestState->assertChangesEqualsFixture('create_null_owner_id'); - - $this->assertEqualsFixture('create_null_owner_id', $response->json()); - } - public function testCreatePublic(): void { $response = $this->actingAs(self::$user)->json('post', '/media', [ diff --git a/tests/Models/custom/CustomUser.php b/tests/Models/custom/CustomUser.php deleted file mode 100755 index fd08ae9..0000000 --- a/tests/Models/custom/CustomUser.php +++ /dev/null @@ -1,50 +0,0 @@ -username; - } - - public function getAuthIdentifier(): int - { - return $this->id; - } - - public function getAuthPasswordName(): string - { - return 'password'; - } - - public function getAuthPassword(): string - { - return $this->password; - } - - public function getRememberToken() - { - // TODO: Implement getRememberToken() method. - } - - public function setRememberToken($value) - { - // TODO: Implement setRememberToken() method. - } - - public function getRememberTokenName() - { - // TODO: Implement getRememberTokenName() method. - } -} \ No newline at end of file