package org.jooby;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Optional;
import java.util.Set;
import com.google.common.collect.Sets;
import org.jooby.test.ServerFeature;
import org.junit.Test;
import com.google.common.base.Splitter;
public class RequestLocalsFeature extends ServerFeature {
{
get("/locals", (req) -> {
assertFalse(req.isSet("l1"));
req.set("l1", "v1");
assertTrue(req.isSet("l1"));
return req.ifGet("l1");
});
get("/locals/unset", (req) -> {
req.set("l1", "v1");
Optional<Object> val = req.unset("l1");
assertFalse(req.isSet("l1"));
return val;
});
get("/locals/attributes", (req) -> {
req.set("l1", "v1");
return req.attributes();
});
}
@Test
public void locals() throws Exception {
request()
.get("/locals")
.expect("Optional[v1]");
}
@Test
public void unset() throws Exception {
request()
.get("/locals/unset")
.expect("Optional[v1]");
}
@Test
public void attributes() throws Exception {
request()
.get("/locals/attributes")
.expect(c -> {
String s = c.substring(1, c.length() - 1).trim();
Set<String> values = Sets.newHashSet(Splitter.on(",").trimResults().split(s));
assertEquals(Sets.newHashSet("contextPath=", "path=/locals/attributes", "l1=v1"), values);
});
}
}