package org.openstack.atlas.api.filters.helpers; import org.junit.Ignore; import junit.framework.Assert; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class AcceptTypesTest { private String[] initString = new String[]{ "audio/*;q=0.2,audio/basic", "text/*,text/html,text/html;level=1,*/*", "text/*;q=0.3,text/html;q=0.7,text/html;level=1,text/html;level=2;q=0.4,*/*;q=0.5,text/html;level=3;q=0.7" }; private String[] expectedMTypes = new String[]{ "audio/basic,audio/*", "text/html;level=1,text/html,text/*,*/*", "text/html;level=1,text/html;level=3,text/html,*/*,text/html;level=2,text/*" }; private String XML = "application/xml"; private String JSON = "application/json"; private String HTML = "text/html"; private String XHTML = "application/xhtml+xml"; private String PLAIN = "text/plain"; List<AcceptTypes> acceptTypes; @Before public void setUp() { acceptTypes = new ArrayList<AcceptTypes>(); int i; for (i = 0; i < initString.length; i++) { acceptTypes.add(AcceptTypes.getPrefferedAcceptTypes(initString[i])); } } @Test public void testPrecedence() { int j; int i; for (j = 0; j < acceptTypes.size(); j++) { i = 0; for (String mMap : expectedMTypes[j].split(",")) { AcceptType o = AcceptType.newInstance(mMap); AcceptType t = acceptTypes.get(j).getAcceptTypeList().get(i); Assert.assertTrue(AcceptType.mediaMatch(t, o)); i++; } } } @Test public void shouldFindSuitableMediaType() { String accept = "text/html,application/xhtml+xml,audio/*,audio/mp3,application/xml;q=0.9,*/*;q=0.8"; AcceptTypes ats = AcceptTypes.getPrefferedAcceptTypes(accept); Assert.assertEquals("application/xhtml+xml", ats.findSuitableMediaType("application/xml", "text/plain", "audio/*", "application/xhtml+xml")); Assert.assertEquals("audio/mp3", ats.findSuitableMediaType("audio/mp3","text/plain")); Assert.assertEquals("audio/iTunes", ats.findSuitableMediaType("application/mp3","audio/iTunes", "text/plain")); Assert.assertEquals("application/json", ats.findSuitableMediaType("application/json","text/plain")); ats = AcceptTypes.getPrefferedAcceptTypes("application/xml,application/json;q=0.9,*/*"); Assert.assertEquals("application/xml", ats.findSuitableMediaType("application/xml","application/json")); Assert.assertEquals("application/xml", ats.findSuitableMediaType("application/json","application/xml")); ats = AcceptTypes.getPrefferedAcceptTypes("application/json;q=0.9,application/xml,*/*"); Assert.assertEquals("application/xml", ats.findSuitableMediaType("application/xml","application/json")); Assert.assertEquals("application/xml", ats.findSuitableMediaType("application/json","application/xml")); Assert.assertEquals("application/xml", ats.findSuitableMediaType("application/octet-stream","application/json","application/xml")); } }