diff --git a/src/Illuminate/Validation/Validator.php b/src/Illuminate/Validation/Validator.php index 5ed4d7b6c..6417a7f9e 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')); } /** @@ -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 1a9773949..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]); @@ -1030,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()); }