Skip to content

Commit d489dd1

Browse files
committed
fix: change file extensions to lowercase before validation
1 parent e4a3a33 commit d489dd1

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/LfmUploadValidator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public function mimetypeIsNotExcutable($excutable_mimetypes)
7474

7575
public function extensionIsNotExcutable($excutable_extensions)
7676
{
77-
$extension = $this->file->getClientOriginalExtension();
77+
$extension = strtolower($this->file->getClientOriginalExtension());
7878

7979
if (in_array($extension, $excutable_extensions)) {
8080
throw new ExcutableFileException();

tests/LfmUploadValidatorTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,42 @@ public function testFailsMimeTypeIsValid()
136136
$validator->mimeTypeIsValid(['image/png']);
137137
}
138138

139+
public function testPassesExtensionIsNotExcutable()
140+
{
141+
$uploaded_file = m::mock(UploadedFile::class);
142+
$uploaded_file->shouldReceive('getClientOriginalExtension')->andReturn('jpeg');
143+
144+
$validator = new LfmUploadValidator($uploaded_file);
145+
146+
$this->expectNotToPerformAssertions();
147+
148+
$validator->extensionIsNotExcutable(['php', 'html']);
149+
}
150+
151+
public function testFailsExtensionIsNotExcutable()
152+
{
153+
$uploaded_file = m::mock(UploadedFile::class);
154+
$uploaded_file->shouldReceive('getClientOriginalExtension')->andReturn('html');
155+
156+
$validator = new LfmUploadValidator($uploaded_file);
157+
158+
$this->expectException(ExcutableFileException::class);
159+
160+
$validator->extensionIsNotExcutable(['php', 'html']);
161+
}
162+
163+
public function testFailsExtensionIsNotExcutableWithExtensionNotLowerCase()
164+
{
165+
$uploaded_file = m::mock(UploadedFile::class);
166+
$uploaded_file->shouldReceive('getClientOriginalExtension')->andReturn('Html');
167+
168+
$validator = new LfmUploadValidator($uploaded_file);
169+
170+
$this->expectException(ExcutableFileException::class);
171+
172+
$validator->extensionIsNotExcutable(['php', 'html']);
173+
}
174+
139175
public function testPassesSizeIsLowerThanConfiguredMaximum()
140176
{
141177
$uploaded_file = m::mock(UploadedFile::class);

0 commit comments

Comments
 (0)