package org.jooby.pac4j; import com.fasterxml.jackson.databind.SerializationFeature; import org.jooby.json.Jackson; import org.jooby.test.ServerFeature; import org.junit.Test; import org.pac4j.core.context.WebContext; import java.util.LinkedHashMap; import java.util.Map; public class WebContextFeature extends ServerFeature { { use(new Jackson().doWith(mapper -> mapper.enable(SerializationFeature.INDENT_OUTPUT))); get("/auth/ctx", req -> { WebContext ctx = req.require(WebContext.class); Map<String, Object> map = new LinkedHashMap<>(); map.put("fullRequestURL", ctx.getFullRequestURL()); map.put("requestMethod", ctx.getRequestMethod()); map.put("requestParameters", ctx.getRequestParameters()); map.put("scheme", ctx.getScheme()); map.put("serverName", ctx.getServerName()); map.put("serverPort", ctx.getServerPort()); map.put("toString", ctx.toString()); return map; }); get("/auth/session", req -> { WebContext ctx = req.require(WebContext.class); ctx.setSessionAttribute("x", "y"); return req.session().get("x").value(); }); use(new Auth().basic()); } @Test public void webContext() throws Exception { request() .get("/auth/ctx?p1=v1") .expect("{\n" + " \"fullRequestURL\" : \"http://localhost:" + port + "/auth/ctx?p1=v1\",\n" + " \"requestMethod\" : \"GET\",\n" + " \"requestParameters\" : {\n" + " \"p1\" : [ \"v1\" ]\n" + " },\n" + " \"scheme\" : \"http\",\n" + " \"serverName\" : \"localhost\",\n" + " \"serverPort\" : " + port + ",\n" + " \"toString\" : \"| Method | Path | Source | Name | Pattern | Consumes | Produces |\\n|--------|-----------|--------------------------------------|------------|-----------|----------|----------|\\n| GET | /auth/ctx | org.jooby.pac4j.WebContextFeature:17 | /anonymous | /auth/ctx | [*/*] | [*/*] |\"\n" + "}"); } @Test public void session() throws Exception { request() .get("/auth/session") .expect("\"y\""); } }