package org.jooby; import java.util.List; import org.jooby.test.ServerFeature; import org.junit.Test; public class AcceptHeaderFeature extends ServerFeature { { get("/", req -> req.accept()); get("/accept", req -> { List<MediaType> types = req.param("type").toList(MediaType.class); return req.accepts(types) .map(MediaType::toString).orElse("nope"); }); } @Test public void defaultAccept() throws Exception { request() .get("/") .expect("[*/*]"); } @Test public void htmlAccept() throws Exception { request() .get("/") .header("accept", "text/html") .expect("[text/html]"); } @Test public void multipleAcceptHeader() throws Exception { request() .get("/") .header("accept", "text/html,*/*") .expect("[text/html, */*]"); } @Test public void accepts() throws Exception { request() .get("/accept?type=text/html") .header("accept", "text/html") .expect("text/html"); request() .get("/accept?type=text/html") .header("accept", "text/*, application/json") .expect("text/html"); request() .get("/accept?type=application/json&type=text/plain") .header("accept", "text/*, application/json") .expect("application/json"); request(). get("/accept?type=application/json") .header("accept", "text/*, application/json") .expect("application/json"); request().get("/accept?type=image/png") .header("accept", "text/*, application/json") .expect("nope"); request() .get("/accept?type=text/html&type=application/json") .header("accept", "text/*;q=.5, application/json") .expect("application/json"); } }