From 401384743bb47b05bc109c2ecec82a79cbb0de30 Mon Sep 17 00:00:00 2001 From: Rizqy H Date: Wed, 22 Jan 2025 14:28:02 +0700 Subject: [PATCH 1/2] backport `laravel / framework #35419` --- src/Illuminate/Validation/Validator.php | 2 +- tests/Validation/ValidationValidatorTest.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Validation/Validator.php b/src/Illuminate/Validation/Validator.php index 5ed4d7b6c..c10156efd 100755 --- a/src/Illuminate/Validation/Validator.php +++ b/src/Illuminate/Validation/Validator.php @@ -1204,7 +1204,7 @@ protected function validateActiveUrl($attribute, $value) */ protected function validateImage($attribute, $value) { - return $this->validateMimes($attribute, $value, array('jpeg', 'png', 'gif', 'bmp')); + return $this->validateMimes($attribute, $value, array('jpg', 'jpeg', 'png', 'gif', 'bmp')); } /** diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 1a9773949..39b984592 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -1010,6 +1010,12 @@ public function testValidateImage() $file5->expects($this->any())->method('guessExtension')->willReturn('png'); $v->setFiles(['x' => $file5]); $this->assertTrue($v->passes()); + + $file6 = $this->getMock(UploadedFile::class, ['guessExtension', 'getClientOriginalExtension'], $uploadedFile); + $file6->expects($this->any())->method('guessExtension')->willReturn('jpg'); + $file6->expects($this->any())->method('getClientOriginalExtension')->willReturn('jpg'); + $v->setFiles(['x' => $file6]); + $this->assertTrue($v->passes()); } From c4ec31d6fe0359885ff072c2c1d0fa1ea12d743c Mon Sep 17 00:00:00 2001 From: Rizqy H Date: Wed, 22 Jan 2025 14:37:08 +0700 Subject: [PATCH 2/2] backport `laravel / framework #35518` --- src/Illuminate/Validation/Validator.php | 4 +++ tests/Validation/ValidationValidatorTest.php | 29 ++++++++++++++------ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/Illuminate/Validation/Validator.php b/src/Illuminate/Validation/Validator.php index c10156efd..6417a7f9e 100755 --- a/src/Illuminate/Validation/Validator.php +++ b/src/Illuminate/Validation/Validator.php @@ -1222,6 +1222,10 @@ protected function validateMimes($attribute, $value, $parameters) return false; } + if (in_array('jpg', $parameters) || in_array('jpeg', $parameters)) { + $parameters = array_unique(array_merge($parameters, ['jpg', 'jpeg'])); + } + return $value->getPath() != '' && in_array($value->guessExtension(), $parameters); } diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 39b984592..efd2865bb 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -991,11 +991,18 @@ public function testValidateImage() $this->assertFalse($v->passes()); $v = new Validator($trans, [], ['x' => 'Image']); - $file2 = $this->getMock(UploadedFile::class, ['guessExtension'], $uploadedFile); - $file2->expects($this->any())->method('guessExtension')->willReturn('jpeg'); + $file2 = $this->getMock(UploadedFile::class, ['guessExtension', 'getClientOriginalExtension'], $uploadedFile); + $file2->expects($this->any())->method('guessExtension')->willReturn('jpg'); + $file2->expects($this->any())->method('getClientOriginalExtension')->willReturn('jpeg'); $v->setFiles(['x' => $file2]); $this->assertTrue($v->passes()); + $file2 = $this->getMock(UploadedFile::class, ['guessExtension', 'getClientOriginalExtension'], $uploadedFile); + $file2->expects($this->any())->method('guessExtension')->willReturn('jpg'); + $file2->expects($this->any())->method('getClientOriginalExtension')->willReturn('jpg'); + $v->setFiles(['x' => $file2]); + $this->assertTrue($v->passes()); + $file3 = $this->getMock(UploadedFile::class, ['guessExtension'], $uploadedFile); $file3->expects($this->any())->method('guessExtension')->willReturn('gif'); $v->setFiles(['x' => $file3]); @@ -1010,12 +1017,6 @@ public function testValidateImage() $file5->expects($this->any())->method('guessExtension')->willReturn('png'); $v->setFiles(['x' => $file5]); $this->assertTrue($v->passes()); - - $file6 = $this->getMock(UploadedFile::class, ['guessExtension', 'getClientOriginalExtension'], $uploadedFile); - $file6->expects($this->any())->method('guessExtension')->willReturn('jpg'); - $file6->expects($this->any())->method('getClientOriginalExtension')->willReturn('jpg'); - $v->setFiles(['x' => $file6]); - $this->assertTrue($v->passes()); } @@ -1036,6 +1037,18 @@ public function testValidateMime() $v = new Validator($trans, [], ['x' => 'mimes:php']); $v->setFiles(['x' => $file2]); $this->assertFalse($v->passes()); + + $file = $this->getMock(UploadedFile::class, ['guessExtension', 'getClientOriginalExtension'], $uploadedFile); + $file->expects($this->any())->method('guessExtension')->willReturn('jpg'); + $file->expects($this->any())->method('getClientOriginalExtension')->willReturn('jpg'); + $v = new Validator($trans, ['x' => $file], ['x' => 'mimes:jpeg']); + $this->assertTrue($v->passes()); + + $file = $this->getMock(UploadedFile::class, ['guessExtension', 'getClientOriginalExtension'], $uploadedFile); + $file->expects($this->any())->method('guessExtension')->willReturn('jpg'); + $file->expects($this->any())->method('getClientOriginalExtension')->willReturn('jpeg'); + $v = new Validator($trans, ['x' => $file], ['x' => 'mimes:jpg']); + $this->assertTrue($v->passes()); }