/**
* Copyright (c) Codice Foundation
* <p>
* 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 3 of the
* License, or any later version.
* <p>
* This program 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. A copy of the GNU Lesser General Public License
* is distributed along with this program and can be found at
* <http://www.gnu.org/licenses/lgpl.html>.
*/
package ddf.mime.custom;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.List;
import java.util.Map;
import org.junit.Test;
public class CustomMimeTypeResolverTest {
@Test
public void testGetCustomFileExtensionsToMimeTypesMap() {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
Map<String, String> fileExtensionsToMimeTypes =
resolver.getCustomFileExtensionsToMimeTypesMap();
assertTrue(fileExtensionsToMimeTypes.size() == 0);
}
@Test
public void testGetCustomMimeTypesToFileExtensionsMap() {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
Map<String, List<String>> mimeTypesToFileExtensions =
resolver.getCustomMimeTypesToFileExtensionsMap();
assertTrue(mimeTypesToFileExtensions.size() == 0);
}
@Test
public void testSetSingleCustomMimeTypes() {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf"});
Map<String, List<String>> mimeTypesToFileExtensions =
resolver.getCustomMimeTypesToFileExtensionsMap();
assertTrue(mimeTypesToFileExtensions.containsKey("image/nitf"));
List<String> fileExtensions = mimeTypesToFileExtensions.get("image/nitf");
assertTrue(fileExtensions.contains("nitf"));
Map<String, String> fileExtensionsMimeTypes =
resolver.getCustomFileExtensionsToMimeTypesMap();
assertTrue(fileExtensionsMimeTypes.containsKey("nitf"));
assertEquals("image/nitf", fileExtensionsMimeTypes.get("nitf"));
}
@Test
public void testSetMultipleFileExtensionsToSameCustomMimeType() {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf", "ntf=image/nitf"});
Map<String, List<String>> mimeTypesToFileExtensions =
resolver.getCustomMimeTypesToFileExtensionsMap();
assertTrue(mimeTypesToFileExtensions.containsKey("image/nitf"));
List<String> fileExtensions = mimeTypesToFileExtensions.get("image/nitf");
assertTrue(fileExtensions.contains("nitf"));
assertTrue(fileExtensions.contains("ntf"));
Map<String, String> fileExtensionsMimeTypes =
resolver.getCustomFileExtensionsToMimeTypesMap();
assertTrue(fileExtensionsMimeTypes.containsKey("nitf"));
assertEquals("image/nitf", fileExtensionsMimeTypes.get("nitf"));
assertTrue(fileExtensionsMimeTypes.containsKey("ntf"));
assertEquals("image/nitf", fileExtensionsMimeTypes.get("ntf"));
}
@Test
public void testSetMultipleCustomMimeTypesToSameFileExtension() {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"xml=text/xml", "xml=application/xml"});
Map<String, List<String>> mimeTypesToFileExtensions =
resolver.getCustomMimeTypesToFileExtensionsMap();
assertTrue(mimeTypesToFileExtensions.containsKey("text/xml"));
assertTrue(mimeTypesToFileExtensions.containsKey("application/xml"));
List<String> fileExtensions = mimeTypesToFileExtensions.get("text/xml");
assertTrue(fileExtensions.contains("xml"));
fileExtensions = mimeTypesToFileExtensions.get("application/xml");
assertTrue(fileExtensions.contains("xml"));
Map<String, String> fileExtensionsMimeTypes =
resolver.getCustomFileExtensionsToMimeTypesMap();
assertTrue(fileExtensionsMimeTypes.containsKey("xml"));
// assertEquals( "text/xml", fileExtensionsMimeTypes.get( "xml" ) );
assertEquals("application/xml", fileExtensionsMimeTypes.get("xml"));
}
@Test
public void testSetCustomMimeTypeWithMimeParameter() {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"json=application/json;id=geojson"});
Map<String, List<String>> mimeTypesToFileExtensions =
resolver.getCustomMimeTypesToFileExtensionsMap();
assertTrue(mimeTypesToFileExtensions.containsKey("application/json;id=geojson"));
assertFalse(mimeTypesToFileExtensions.containsKey("application/json"));
List<String> fileExtensions = mimeTypesToFileExtensions.get("application/json;id=geojson");
assertTrue(fileExtensions.contains("json"));
Map<String, String> fileExtensionsMimeTypes =
resolver.getCustomFileExtensionsToMimeTypesMap();
assertTrue(fileExtensionsMimeTypes.containsKey("json"));
assertEquals("application/json;id=geojson", fileExtensionsMimeTypes.get("json"));
}
@Test
public void testGetFileExtensionForMimeType() throws Exception {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf"});
String fileExtension = resolver.getFileExtensionForMimeType("image/nitf");
assertEquals(".nitf", fileExtension);
}
@Test
public void testGetFileExtensionForMimeTypeMultipleMappings() throws Exception {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf", "ntf=image/nitf"});
String fileExtension = resolver.getFileExtensionForMimeType("image/nitf");
assertEquals(".nitf", fileExtension);
}
@Test
public void testGetMimeTypeForFileExtension() throws Exception {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf", "ntf=image/nitf"});
String mimeType = resolver.getMimeTypeForFileExtension("ntf");
assertEquals("image/nitf", mimeType);
}
@Test
public void testGetFileExtensionForNullMimeType() throws Exception {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf", "ntf=image/nitf"});
String fileExtension = resolver.getFileExtensionForMimeType(null);
assertEquals(null, fileExtension);
}
@Test
public void testGetMimeTypeForNullFileExtension() throws Exception {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf", "ntf=image/nitf"});
String mimeType = resolver.getMimeTypeForFileExtension(null);
assertEquals(null, mimeType);
}
@Test
public void testGetFileExtensionForEmptyMimeType() throws Exception {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf", "ntf=image/nitf"});
String fileExtension = resolver.getFileExtensionForMimeType("");
assertEquals(null, fileExtension);
}
@Test
public void testGetMimeTypeForEmptyFileExtension() throws Exception {
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(new String[] {"nitf=image/nitf", "ntf=image/nitf"});
String mimeType = resolver.getMimeTypeForFileExtension("");
assertEquals(null, mimeType);
}
@Test
public void testGetMimeTypes() throws Exception {
String[] mimeTypes = new String[] {"abc=123/456"};
CustomMimeTypeResolver resolver = new CustomMimeTypeResolver();
resolver.setCustomMimeTypes(mimeTypes);
mimeTypes[0] = "1234";
String[] mimeTypeTest = resolver.getCustomMimeTypes();
assertEquals(mimeTypeTest[0], "abc=123/456");
mimeTypeTest[0] = "1234";
assertEquals(resolver.getCustomMimeTypes()[0], "abc=123/456");
}
}