Browse Source

Merge pull request #13323 from andrej-griniuk/issue/13075-case-insensitive-mime-type-validation

Make mime type validation case insensitive for capitalized mime types
Mark Story 6 years ago
parent
commit
6ebfc98f85

+ 1 - 1
src/Validation/Validation.php

@@ -1186,7 +1186,7 @@ class Validation
             $mimeTypes[$key] = strtolower($val);
         }
 
-        return in_array($mime, $mimeTypes);
+        return in_array(strtolower($mime), $mimeTypes);
     }
 
     /**

+ 19 - 0
tests/Fixture/sample.a68

@@ -0,0 +1,19 @@
+MODE ELEMENT = STRING;
+MODE NODE = 
+  STRUCT ( ELEMENT value, REF NODE next );
+MODE LIST = REF NODE;
+LIST empty = NIL;
+PROC append = ( REF LIST list, ELEMENT val ) VOID:
+BEGIN
+  IF list IS empty
+  THEN
+    list := HEAP NODE := ( val, empty )
+  ELSE
+    REF LIST tail := list;
+    WHILE next OF tail ISNT empty
+    DO
+      tail := next OF tail
+    OD;
+    next OF tail := HEAP NODE := ( val, empty )
+  FI
+END;

+ 19 - 0
tests/TestCase/Validation/ValidationTest.php

@@ -2538,6 +2538,25 @@ class ValidationTest extends TestCase
     }
 
     /**
+     * testMimeTypeCaseInsensitive method
+     *
+     * @return void
+     */
+    public function testMimeTypeCaseInsensitive()
+    {
+        $algol68 = CORE_TESTS . 'Fixture/sample.a68';
+        $File = new File($algol68, false);
+
+        $this->skipIf($File->mime() != 'text/x-Algol68', 'Cannot determine text/x-Algol68 mimeType');
+
+        $this->assertTrue(Validation::mimeType($algol68, ['text/x-Algol68']));
+        $this->assertTrue(Validation::mimeType($algol68, ['text/x-algol68']));
+        $this->assertTrue(Validation::mimeType($algol68, ['text/X-ALGOL68']));
+
+        $this->assertFalse(Validation::mimeType($algol68, ['image/png']));
+    }
+
+    /**
      * Test mimetype with a PSR7 object
      *
      * @return void