/*
* Copyright (C) 2009 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.exoplatform.commons.utils;
import junit.framework.TestCase;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by The eXo Platform SAS.
*
* Date: 3 02 2011
*
* @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
* @version $Id: TestMimeTypeResolver.java 34360 2010-11-11 11:11:11Z tolusha $
*/
public class TestMimeTypeResolver extends TestCase
{
private MimeTypeResolver resolver = new MimeTypeResolver();
/**
* Here we're going to test MimeTypeResolver to obtain corresponding or
* at least most corresponding mime types for files with extensions.
*/
public void testGetMimeTypeFromExtension()
{
// should return default mime type for unknown extension
assertEquals(resolver.getDefaultMimeType(), resolver.getMimeType("file.unknown-file-extension"));
// shoud return mime type based on last part separated by "." symbol
// i. e. should return corresponding mime type for "unknown-file-extension"
// but not for "pdf"
assertEquals(resolver.getDefaultMimeType(), resolver.getMimeType("file.pdf.unknown-file-extension"));
assertEquals("application/vnd.ms-outlook", resolver.getMimeType("my.msg"));
assertEquals("application/msword", resolver.getMimeType("my.doc"));
assertEquals("application/vnd.openxmlformats-officedocument.wordprocessingml.document",
resolver.getMimeType("my.docx"));
assertEquals("application/vnd.ms-excel", resolver.getMimeType("my.xls"));
assertEquals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", resolver.getMimeType("my.xlsx"));
assertEquals("application/pdf", resolver.getMimeType("my.pdf"));
assertEquals("image/jpeg", resolver.getMimeType("my.jpg"));
assertEquals("application/vnd.oasis.opendocument.text", resolver.getMimeType("my.odt"));
assertEquals("application/vnd.ms-word.document.macroenabled.12", resolver.getMimeType("my.docm"));
assertEquals("application/msword", resolver.getMimeType("my.dot"));
assertEquals("application/vnd.ms-word.template.macroenabled.12", resolver.getMimeType("my.dotm"));
assertEquals("application/vnd.openxmlformats-officedocument.wordprocessingml.template", resolver.getMimeType("my.dotx"));
assertEquals("application/vnd.ms-powerpoint.presentation.macroenabled.12", resolver.getMimeType("my.pptm"));
assertEquals("application/vnd.openxmlformats-officedocument.presentationml.slideshow", resolver.getMimeType("my.ppsx"));
assertEquals("application/vnd.ms-powerpoint.slideshow.macroenabled.12", resolver.getMimeType("my.ppsm"));
assertEquals("application/vnd.ms-powerpoint", resolver.getMimeType("my.pps"));
assertEquals("application/vnd.ms-powerpoint.addin.macroenabled.12", resolver.getMimeType("my.ppam"));
assertEquals("application/vnd.ms-powerpoint", resolver.getMimeType("my.ppa"));
assertEquals("application/vnd.openxmlformats-officedocument.presentationml.template", resolver.getMimeType("my.potx"));
assertEquals("application/vnd.ms-powerpoint.template.macroenabled.12", resolver.getMimeType("my.potm"));
assertEquals("application/vnd.ms-powerpoint", resolver.getMimeType("my.pot"));
assertEquals("application/vnd.openxmlformats-officedocument.spreadsheetml.template", resolver.getMimeType("my.xltx"));
assertEquals("application/vnd.ms-excel.template.macroenabled.12", resolver.getMimeType("my.xltm"));
assertEquals("application/vnd.ms-excel", resolver.getMimeType("my.xlt"));
assertEquals("application/vnd.ms-excel.sheet.macroenabled.12", resolver.getMimeType("my.xlsm"));
assertEquals("application/vnd.ms-excel.sheet.binary.macroenabled.12", resolver.getMimeType("my.xlsb"));
assertEquals("application/vnd.ms-excel.addin.macroenabled.12", resolver.getMimeType("my.xlam"));
assertEquals("application/vnd.ms-excel", resolver.getMimeType("my.xla"));
assertEquals("application/vnd.ms-excel", resolver.getMimeType("my.xll"));
}
/**
* Here we're going to test MimeTypeResolver to obtain corresponding or
* at least most corresponding mime types for files without extensions.
*/
public void testGetMimeTypeFromContent() throws IOException
{
// should return default mime type as file name has no extension
// and file does not exist to read its content
assertEquals(resolver.getDefaultMimeType(), resolver.getMimeType("unknown-file-extension"));
// should return default mime type as file name has no extension
// (though it has "." its extension is empty string == no extension)
// and file does not exist to read its content
assertEquals(resolver.getDefaultMimeType(), resolver.getMimeType("file."));
InputStream is;
is = TestMimeTypeResolver.class.getResourceAsStream("/testjpg");
assertEquals("image/jpeg", resolver.getMimeType("testjpg", is));
is.close();
is = TestMimeTypeResolver.class.getResourceAsStream("/testpdf");
assertEquals("application/pdf", resolver.getMimeType("testpdf", is));
is.close();
is = TestMimeTypeResolver.class.getResourceAsStream("/testdoc");
assertEquals("application/msword", resolver.getMimeType("testdoc", is));
is.close();
is = TestMimeTypeResolver.class.getResourceAsStream("/testxml");
assertEquals("text/xml", resolver.getMimeType("testxml", is));
is.close();
is = TestMimeTypeResolver.class.getResourceAsStream("/testxls");
assertEquals("application/msword", resolver.getMimeType("testxls", is));
is.close();
}
public void testGetExtension()
{
assertEquals("jpeg", resolver.getExtension("image/jpeg"));
assertEquals("jpeg", resolver.getExtension("image/pjpeg"));
assertEquals("", resolver.getExtension(""));
assertEquals("", resolver.getExtension("unknown-mimetype"));
assertEquals("", resolver.getExtension(resolver.getDefaultMimeType()));
assertEquals("msg", resolver.getExtension("application/vnd.ms-outlook"));
// there are two file extension for audio/midi MIMEType [mid, midi]
// should be returned "midi" as MIMEType ends with "midi"
assertEquals("midi", resolver.getExtension("audio/midi"));
// there are two file extension for application/x-director MIMEType [dcr, dir]
// should be returned "dcr" as first occurred
assertEquals("dcr", resolver.getExtension("application/x-director"));
}
public void testGetMimeTypeFromExtensionInUpperCase()
{
assertEquals(resolver.getDefaultMimeType(), resolver.getMimeType("FILE.UNKNOWN-FILE-EXTENSION"));
assertEquals(resolver.getDefaultMimeType(), resolver.getMimeType("FILE.PDF.UNKNOWN-FILE-EXTENSION"));
assertEquals("application/vnd.ms-outlook", resolver.getMimeType("MY.MSG"));
assertEquals("application/msword", resolver.getMimeType("MY.DOC"));
assertEquals("application/vnd.openxmlformats-officedocument.wordprocessingml.document",
resolver.getMimeType("MY.DOCX"));
assertEquals("application/vnd.ms-excel", resolver.getMimeType("MY.XLS"));
assertEquals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", resolver.getMimeType("MY.XLSX"));
assertEquals("application/pdf", resolver.getMimeType("MY.PDF"));
assertEquals("image/jpeg", resolver.getMimeType("MY.JPG"));
assertEquals("application/vnd.oasis.opendocument.text", resolver.getMimeType("MY.ODT"));
}
}