aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/attach.php6
-rw-r--r--tests/upload_test.php29
2 files changed, 32 insertions, 3 deletions
diff --git a/include/attach.php b/include/attach.php
index a959a5bcb..1bba88c63 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -108,9 +108,9 @@ function z_mime_content_type($filename) {
'oth' => 'application/vnd.oasis.opendocument.text-web'
);
- $dot = strpos($filename, '.');
- if ($dot !== false) {
- $ext = strtolower(substr($filename, $dot + 1));
+ $last_dot = strrpos($filename, '.');
+ if ($last_dot !== false) {
+ $ext = strtolower(substr($filename, $last_dot + 1));
if (array_key_exists($ext, $mime_types)) {
return $mime_types[$ext];
}
diff --git a/tests/upload_test.php b/tests/upload_test.php
new file mode 100644
index 000000000..031315fba
--- /dev/null
+++ b/tests/upload_test.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * this file contains tests for the uploader
+ *
+ * @package test.util
+ */
+
+/** required, it is the file under test */
+require_once('include/attach.php');
+
+/**
+ * TestCase for the uploader
+ *
+ * @author ken restivo
+ * @package test.util
+ */
+class UploadTest extends PHPUnit_Framework_TestCase {
+ public function testFileNameMutipleDots() {
+ $multidots = "foo.bar.baz.0.1.3.ogg";
+ $this->assertEquals("audio/ogg", z_mime_content_type($multidots));
+ $this->assertNotEquals("application/octet-stream", z_mime_content_type($multidots));
+ }
+
+ public function testFileNameOneDot() {
+ $multidots = "foo.ogg";
+ $this->assertEquals("audio/ogg", z_mime_content_type($multidots));
+ $this->assertNotEquals("application/octet-stream", z_mime_content_type($multidots));
+ }
+} \ No newline at end of file