'MimeDetect Test', 'description' => 'Ensure that the class MimeDetect works as expected', 'group' => 'Islandora', ); } /** * Call the parent setup function for the test. */ public function setUp() { parent::setUp(array('islandora')); } /** * Test all mime and extension types. */ public function testMimeTypes() { // Create a mime array to assert against the MimeDetect Class. $mime_type_list = array( 'ez' => 'application/andrew-inset' , 'atom' => 'application/atom' , 'atomcat' => 'application/atomcat+xml' , 'atomsrv' => 'application/atomserv+xml' , 'pcap' => 'application/cap' , 'cu' => 'application/cu-seeme' , 'tsp' => 'application/dsptype' , 'hta' => 'application/hta' , 'jar' => 'application/java-archive' , 'ser' => 'application/java-serialized-object' , 'class' => 'application/java-vm' , 'hqx' => 'application/mac-binhex40' , 'nb' => 'application/mathematica' , 'mdb' => 'application/msaccess' , 'doc' => 'application/msword' , 'bin' => 'application/octet-stream' , 'oda' => 'application/oda' , 'ogx' => 'application/ogg' , 'pdf' => 'application/pdf' , 'key' => 'application/pgp-keys' , 'pgp' => 'application/pgp-signature' , 'prf' => 'application/pics-rules' , 'ps' => 'application/postscript' , 'rar' => 'application/rar' , 'rdf' => 'application/rdf+xml' , 'rss' => 'application/rss+xml' , 'rtf' => 'application/rtf' , 'smil' => 'application/smil' , 'cdy' => 'application/vnd.cinderella' , 'kml' => 'application/vnd.google-earth.kml+xml' , 'kmz' => 'application/vnd.google-earth.kmz' , 'xul' => 'application/vnd.mozilla.xul+xml' , 'xls' => 'application/vnd.ms-excel' , 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12' , 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' , 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12' , 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12' , 'cat' => 'application/vnd.ms-pki.seccat' , 'stl' => 'application/vnd.ms-pki.stl' , 'ppt' => 'application/vnd.ms-powerpoint' , 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12' , 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' , 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' , 'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12' , 'docm' => 'application/vnd.ms-word.document.macroEnabled.12' , 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12' , 'xps' => 'application/vnd.ms-xpsdocument' , 'odc' => 'application/vnd.oasis.opendocument.chart' , 'odb' => 'application/vnd.oasis.opendocument.database' , 'odf' => 'application/vnd.oasis.opendocument.formula' , 'odg' => 'application/vnd.oasis.opendocument.graphics' , 'otg' => 'application/vnd.oasis.opendocument.graphics-template' , 'odi' => 'application/vnd.oasis.opendocument.image' , 'odp' => 'application/vnd.oasis.opendocument.presentation' , 'otp' => 'application/vnd.oasis.opendocument.presentation-template' , 'ods' => 'application/vnd.oasis.opendocument.spreadsheet' , 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template' , 'odt' => 'application/vnd.oasis.opendocument.text' , 'odm' => 'application/vnd.oasis.opendocument.text-master' , 'ott' => 'application/vnd.oasis.opendocument.text-template' , 'oth' => 'application/vnd.oasis.opendocument.text-web' , 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation' , 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' , 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template' , 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' , 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' , 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' , 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' , 'cod' => 'application/vnd.rim.cod' , 'mmf' => 'application/vnd.smaf' , 'sdc' => 'application/vnd.stardivision.calc' , 'sds' => 'application/vnd.stardivision.chart' , 'sda' => 'application/vnd.stardivision.draw' , 'sdd' => 'application/vnd.stardivision.impress' , 'sdw' => 'application/vnd.stardivision.writer' , 'sgl' => 'application/vnd.stardivision.writer-global' , 'sxc' => 'application/vnd.sun.xml.calc' , 'stc' => 'application/vnd.sun.xml.calc.template' , 'sxd' => 'application/vnd.sun.xml.draw' , 'std' => 'application/vnd.sun.xml.draw.template' , 'sxi' => 'application/vnd.sun.xml.impress' , 'sti' => 'application/vnd.sun.xml.impress.template' , 'sxm' => 'application/vnd.sun.xml.math' , 'sxw' => 'application/vnd.sun.xml.writer' , 'sxg' => 'application/vnd.sun.xml.writer.global' , 'stw' => 'application/vnd.sun.xml.writer.template' , 'sis' => 'application/vnd.symbian.install' , 'vsd' => 'application/vnd.visio' , 'wbxml' => 'application/vnd.wap.wbxml' , 'wmlc' => 'application/vnd.wap.wmlc' , 'wmlsc' => 'application/vnd.wap.wmlscriptc' , 'wpd' => 'application/wordperfect' , 'wp5' => 'application/wordperfect5.1' , 'wk' => 'application/x-123' , '7z' => 'application/x-7z-compressed' , 'abw' => 'application/x-abiword' , 'dmg' => 'application/x-apple-diskimage' , 'bcpio' => 'application/x-bcpio' , 'torrent' => 'application/x-bittorrent' , 'cab' => 'application/x-cab' , 'cbr' => 'application/x-cbr' , 'cbz' => 'application/x-cbz' , 'cdf' => 'application/x-cdf' , 'vcd' => 'application/x-cdlink' , 'pgn' => 'application/x-chess-pgn' , 'cpio' => 'application/x-cpio' , 'deb' => 'application/x-debian-package' , 'dcr' => 'application/x-director' , 'dms' => 'application/x-dms' , 'wad' => 'application/x-doom' , 'dvi' => 'application/x-dvi' , 'flac' => 'application/x-flac' , 'mm' => 'application/x-freemind' , 'spl' => 'application/x-futuresplash' , 'gnumeric' => 'application/x-gnumeric' , 'sgf' => 'application/x-go-sgf' , 'gcf' => 'application/x-graphing-calculator' , 'tgz' => 'application/x-gtar' , 'hdf' => 'application/x-hdf' , 'rhtml' => 'application/x-httpd-eruby' , 'php' => 'application/x-httpd-php' , 'phps' => 'application/x-httpd-php-source' , 'php3' => 'application/x-httpd-php3' , 'php3p' => 'application/x-httpd-php3-preprocessed' , 'php4' => 'application/x-httpd-php4' , 'ica' => 'application/x-ica' , 'isp' => 'application/x-internet-signup' , 'iii' => 'application/x-iphone' , 'iso' => 'application/x-iso9660-image' , 'jnlp' => 'application/x-java-jnlp-file' , 'js' => 'application/x-javascript' , 'jmz' => 'application/x-jmol' , 'chrt' => 'application/x-kchart' , 'kil' => 'application/x-killustrator' , 'skt' => 'application/x-koan' , 'kpt' => 'application/x-kpresenter' , 'ksp' => 'application/x-kspread' , 'kwt' => 'application/x-kword' , 'latex' => 'application/x-latex' , 'lha' => 'application/x-lha' , 'lyx' => 'application/x-lyx' , 'lzh' => 'application/x-lzh' , 'lzx' => 'application/x-lzx' , 'fbdoc' => 'application/x-maker' , 'mif' => 'application/x-mif' , 'wmd' => 'application/x-ms-wmd' , 'wmz' => 'application/x-ms-wmz' , 'com' => 'application/x-msdos-program' , 'msi' => 'application/x-msi' , 'nc' => 'application/x-netcdf' , 'pac' => 'application/x-ns-proxy-autoconfig' , 'nwc' => 'application/x-nwc' , 'o' => 'application/x-object' , 'oza' => 'application/x-oz-application' , 'p7r' => 'application/x-pkcs7-certreqresp' , 'crl' => 'application/x-pkcs7-crl' , 'pyc' => 'application/x-python-code' , 'qtl' => 'application/x-quicktimeplayer' , 'rpm' => 'application/x-redhat-package-manager' , 'shar' => 'application/x-shar' , 'swfl' => 'application/x-shockwave-flash' , 'sit' => 'application/x-stuffit' , 'sv4cpio' => 'application/x-sv4cpio' , 'sv4crc' => 'application/x-sv4crc' , 'tar' => 'application/x-tar' , 'gf' => 'application/x-tex-gf' , 'pk' => 'application/x-tex-pk' , 'texinfo' => 'application/x-texinfo' , 'old' => 'application/x-trash' , 'tr' => 'application/x-troff' , 'man' => 'application/x-troff-man' , 'me' => 'application/x-troff-me' , 'ms' => 'application/x-troff-ms' , 'ustar' => 'application/x-ustar' , 'src' => 'application/x-wais-source' , 'wz' => 'application/x-wingz' , 'crt' => 'application/x-x509-ca-cert' , 'xcf' => 'application/x-xcf' , 'fig' => 'application/x-xfig' , 'xpi' => 'application/x-xpinstall' , 'xhtml' => 'application/xhtml+xml' , 'xsl' => 'application/xml' , 'zip' => 'application/zip' , 'snd' => 'audio/basic' , 'kar' => 'audio/midi' , 'mp2' => 'audio/mpeg' , 'spx' => 'audio/ogg' , 'sid' => 'audio/prs.sid' , 'aifc' => 'audio/x-aiff' , 'gsm' => 'audio/x-gsm' , 'm3u' => 'audio/x-mpegurl' , 'wax' => 'audio/x-ms-wax' , 'wma' => 'audio/x-ms-wma' , 'ram' => 'audio/x-pn-realaudio' , 'ra' => 'audio/x-realaudio' , 'pls' => 'audio/x-scpls' , 'sd2' => 'audio/x-sd2' , 'wav' => 'audio/x-wav' , 'alc' => 'chemical/x-alchemy' , 'cache' => 'chemical/x-cache' , 'csf' => 'chemical/x-cache-csf' , 'ctab' => 'chemical/x-cactvs-binary' , 'cdx' => 'chemical/x-cdx' , 'cer' => 'chemical/x-cerius' , 'c3d' => 'chemical/x-chem3d' , 'chm' => 'chemical/x-chemdraw' , 'cif' => 'chemical/x-cif' , 'cmdf' => 'chemical/x-cmdf' , 'cml' => 'chemical/x-cml' , 'cpa' => 'chemical/x-compass' , 'bsd' => 'chemical/x-crossfire' , 'csm' => 'chemical/x-csml' , 'ctx' => 'chemical/x-ctx' , 'cef' => 'chemical/x-cxf' , 'embl' => 'chemical/x-embl-dl-nucleotide' , 'spc' => 'chemical/x-galactic-spc' , 'gamin' => 'chemical/x-gamess-input' , 'fch' => 'chemical/x-gaussian-checkpoint' , 'cub' => 'chemical/x-gaussian-cube' , 'gjc' => 'chemical/x-gaussian-input' , 'gal' => 'chemical/x-gaussian-log' , 'gcg' => 'chemical/x-gcg8-sequence' , 'gen' => 'chemical/x-genbank' , 'hin' => 'chemical/x-hin' , 'ist' => 'chemical/x-isostar' , 'jdx' => 'chemical/x-jcamp-dx' , 'kin' => 'chemical/x-kinemage' , 'mcm' => 'chemical/x-macmolecule' , 'mmod' => 'chemical/x-macromodel-input' , 'mol' => 'chemical/x-mdl-molfile' , 'rd' => 'chemical/x-mdl-rdfile' , 'rxn' => 'chemical/x-mdl-rxnfile' , 'sd' => 'chemical/x-mdl-sdfile' , 'tgf' => 'chemical/x-mdl-tgf' , 'mcif' => 'chemical/x-mmcif' , 'mol2' => 'chemical/x-mol2' , 'b' => 'chemical/x-molconn-Z' , 'mop' => 'chemical/x-mopac-input' , 'moo' => 'chemical/x-mopac-out' , 'mvb' => 'chemical/x-mopac-vib' , 'prt' => 'chemical/x-ncbi-asn1-ascii' , 'val' => 'chemical/x-ncbi-asn1-binary' , 'asn' => 'chemical/x-ncbi-asn1-spec' , 'pdb' => 'chemical/x-pdb' , 'ros' => 'chemical/x-rosdal' , 'sw' => 'chemical/x-swissprot' , 'vms' => 'chemical/x-vamas-iso14976' , 'vmd' => 'chemical/x-vmd' , 'xtel' => 'chemical/x-xtel' , 'xyz' => 'chemical/x-xyz' , 'gif' => 'image/gif' , 'ief' => 'image/ief' , 'jpg' => 'image/jpeg' , 'pcx' => 'image/pcx' , 'png' => 'image/png' , 'svg' => 'image/svg+xml' , 'tiff' => 'image/tiff' , 'djv' => 'image/vnd.djvu' , 'ico' => 'image/vnd.microsoft.icon' , 'wbmp' => 'image/vnd.wap.wbmp' , 'ras' => 'image/x-cmu-raster' , 'cdr' => 'image/x-coreldraw' , 'pat' => 'image/x-coreldrawpattern' , 'cdt' => 'image/x-coreldrawtemplate' , 'cpt' => 'image/x-corelphotopaint' , 'art' => 'image/x-jg' , 'jng' => 'image/x-jng' , 'bmp' => 'image/x-ms-bmp' , 'psd' => 'image/x-photoshop' , 'pnm' => 'image/x-portable-anymap' , 'pbm' => 'image/x-portable-bitmap' , 'pgm' => 'image/x-portable-graymap' , 'ppm' => 'image/x-portable-pixmap' , 'rgb' => 'image/x-rgb' , 'xbm' => 'image/x-xbitmap' , 'xpm' => 'image/x-xpixmap' , 'xwd' => 'image/x-xwindowdump' , 'eml' => 'message/rfc822' , 'iges' => 'model/iges' , 'mesh' => 'model/mesh' , 'ics' => 'text/calendar' , 'css' => 'text/css' , 'csv' => 'text/csv' , '323' => 'text/h323' , 'shtml' => 'text/html' , 'uls' => 'text/iuls' , 'mml' => 'text/mathml' , 'asc' => 'text/plain' , 'rtx' => 'text/richtext' , 'sct' => 'text/scriptlet' , 'tsv' => 'text/tab-separated-values' , 'tm' => 'text/texmacs' , 'jad' => 'text/vnd.sun.j2me.app-descriptor' , 'wml' => 'text/vnd.wap.wml' , 'wmls' => 'text/vnd.wap.wmlscript' , 'bib' => 'text/x-bibtex' , 'boo' => 'text/x-boo' , 'hxx' => 'text/x-c++hdr' , 'c++' => 'text/x-c++src' , 'h' => 'text/x-chdr' , 'htc' => 'text/x-component' , 'csh' => 'text/x-csh' , 'c' => 'text/x-csrc' , 'diff' => 'text/x-diff' , 'd' => 'text/x-dsrc' , 'hs' => 'text/x-haskell' , 'java' => 'text/x-java' , 'lhs' => 'text/x-literate-haskell' , 'moc' => 'text/x-moc' , 'p' => 'text/x-pascal' , 'gcd' => 'text/x-pcs-gcd' , 'pl' => 'text/x-perl' , 'py' => 'text/x-python' , 'etx' => 'text/x-setext' , 'sh' => 'text/x-sh' , 'tcl' => 'text/x-tcl' , 'tex' => 'text/x-tex' , 'vcs' => 'text/x-vcalendar' , 'vcf' => 'text/x-vcard' , '3gp' => 'video/3gpp' , 'dl' => 'video/dl' , 'dv' => 'video/dv' , 'fli' => 'video/fli' , 'gl' => 'video/gl' , 'f4p' => 'video/mp4' , 'mpg' => 'video/mpeg' , 'ogv' => 'video/ogg' , 'mov' => 'video/quicktime' , 'mxu' => 'video/vnd.mpegurl' , 'lsx' => 'video/x-la-asf' , 'mng' => 'video/x-mng' , 'asf' => 'video/x-ms-asf' , 'wm' => 'video/x-ms-wm' , 'wmv' => 'video/x-ms-wmv' , 'wmx' => 'video/x-ms-wmx' , 'wvx' => 'video/x-ms-wvx' , 'avi' => 'video/x-msvideo' , 'movie' => 'video/x-sgi-movie' , 'ice' => 'x-conference/x-cooltalk' , 'sisx' => 'x-epoc/x-sisx-app' , 'vrml' => 'x-world/x-vrml' , 'f4b' => 'audio/mp4' , 'flv' => 'video/x-flv' , 'm4v' => 'video/x-m4v'); // Insantiate the mime class. $mime_detect = new MimeDetect(); // Test the mapping list. foreach ($mime_type_list as $ext => $type) { $detected_ext = $mime_detect->getExtension($type); $detected_mimetype = $mime_detect->getMimetype($ext); $this->assertEqual($detected_ext, $ext, "The detected extension:$detected_ext matched the expected extension:$ext"); $this->assertEqual($detected_mimetype, $type, "The detected mimetype:$detected_mimetype, matched the expected mimetype:$type."); } // Test invalid mime type. $result = $mime_detect->getExtension("obviously_not_a_valid_mimetype"); $default = MimeDetect::DEFAULT_EXTENSION; $this->assertEqual($result, $default, "MimeDetect returned:$result which should match generic mimetype:$default when an invalid extension was given."); // Test invalid extension. $result = $mime_detect->getMimetype("banana.aqswswswerawerqfasdzc"); $default = MimeDetect::DEFAULT_MIMETYPE; $this->assertEqual($result, $default, "MimeDetect returned:$result a generic extension which should match:$default."); } }