mirror of https://github.com/jacekkow/keycloak-protocol-cas

Matthias Piepkorn
2017-02-14 de7d254562ee04401894b82e3ee18f46d79ea357
Do not fail on invalid Accept header
2 files modified
11 ■■■■ changed files
src/main/java/org/keycloak/protocol/cas/utils/ContentTypeHelper.java 10 ●●●● patch | view | raw | blame | history
src/test/java/org/keycloak/protocol/cas/ContentTypeHelperTest.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/keycloak/protocol/cas/utils/ContentTypeHelper.java
@@ -1,5 +1,6 @@
package org.keycloak.protocol.cas.utils;
import org.jboss.resteasy.spi.BadRequestException;
import org.jboss.resteasy.spi.HttpRequest;
import org.keycloak.protocol.cas.CASLoginProtocol;
@@ -22,7 +23,12 @@
            //if parameter is set, it overrides all header values (see spec section 2.5.1)
            request.getMutableHeaders().putSingle(HttpHeaders.ACCEPT, "application/" + format.toLowerCase());
        }
        Variant variant = restRequest.selectVariant(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_JSON_TYPE).build());
        return variant == null ? MediaType.APPLICATION_XML_TYPE : variant.getMediaType();
        try {
            Variant variant = restRequest.selectVariant(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_JSON_TYPE).build());
            return variant == null ? MediaType.APPLICATION_XML_TYPE : variant.getMediaType();
        } catch (BadRequestException e) {
            //the default Accept header set by java.net.HttpURLConnection is invalid (cf. RESTEASY-960)
            return MediaType.APPLICATION_XML_TYPE;
        }
    }
}
src/test/java/org/keycloak/protocol/cas/ContentTypeHelperTest.java
@@ -29,6 +29,7 @@
        assertEquals(MediaType.APPLICATION_XML_TYPE, get("http://example.com/?format=xml", MediaType.APPLICATION_JSON).selectResponseType());
        assertEquals(MediaType.APPLICATION_XML_TYPE, get("http://example.com/", MediaType.TEXT_PLAIN).selectResponseType());
        assertEquals(MediaType.APPLICATION_XML_TYPE, get("http://example.com/", "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2").selectResponseType());
    }
    private ContentTypeHelper get(String uri, String acceptHeader) throws Exception {