package org.jooby.internal; import static org.junit.Assert.assertEquals; import java.util.Arrays; import org.jooby.Route; import org.jooby.Route.Before; import org.jooby.WebSocket; import org.junit.Test; import org.slf4j.LoggerFactory; import com.google.common.collect.Sets; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigValueFactory; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; public class AppPrinterTest { @Test public void print() { String setup = new AppPrinter( Sets.newLinkedHashSet( Arrays.asList(before("/"), beforeSend("/"), after("/"), route("/"), route("/home"))), Sets.newLinkedHashSet(Arrays.asList(socket("/ws"))), config("/")) .toString(); assertEquals(" GET {before}/ [*/*] [*/*] (/anonymous)\n" + " GET {after}/ [*/*] [*/*] (/anonymous)\n" + " GET {complete}/ [*/*] [*/*] (/anonymous)\n" + " GET / [*/*] [*/*] (/anonymous)\n" + " GET /home [*/*] [*/*] (/anonymous)\n" + " WS /ws [text/plain] [text/plain]\n" + "\n" + "listening on:\n" + " http://localhost:8080/", setup); } @Test public void printConfig() { AppPrinter printer = new AppPrinter( Sets.newLinkedHashSet( Arrays.asList(before("/"), beforeSend("/"), after("/"), route("/"), route("/home"))), Sets.newLinkedHashSet(Arrays.asList(socket("/ws"))), config("/")); Logger log = (Logger) LoggerFactory.getLogger(AppPrinterTest.class); log.setLevel(Level.DEBUG); printer.printConf(log, config("/")); } @Test public void printHttps() { String setup = new AppPrinter( Sets.newLinkedHashSet(Arrays.asList(route("/"), route("/home"))), Sets.newLinkedHashSet(Arrays.asList(socket("/ws"))), config("/").withValue("application.securePort", ConfigValueFactory.fromAnyRef(8443))) .toString(); assertEquals(" GET / [*/*] [*/*] (/anonymous)\n" + " GET /home [*/*] [*/*] (/anonymous)\n" + " WS /ws [text/plain] [text/plain]\n" + "\n" + "listening on:\n" + " http://localhost:8080/\n" + " https://localhost:8443/", setup); } @Test public void printHttp2() { String setup = new AppPrinter( Sets.newLinkedHashSet(Arrays.asList(route("/"), route("/home"))), Sets.newLinkedHashSet(Arrays.asList(socket("/ws"))), config("/") .withValue("server.http2.enabled", ConfigValueFactory.fromAnyRef(true)) .withValue("application.securePort", ConfigValueFactory.fromAnyRef(8443))) .toString(); assertEquals(" GET / [*/*] [*/*] (/anonymous)\n" + " GET /home [*/*] [*/*] (/anonymous)\n" + " WS /ws [text/plain] [text/plain]\n" + "\n" + "listening on:\n" + " http://localhost:8080/ +h2\n" + " https://localhost:8443/ +h2", setup); } @Test public void printHttp2Https() { String setup = new AppPrinter( Sets.newLinkedHashSet(Arrays.asList(route("/"), route("/home"))), Sets.newLinkedHashSet(Arrays.asList(socket("/ws"))), config("/") .withValue("server.http2.cleartext", ConfigValueFactory.fromAnyRef(false)) .withValue("server.http2.enabled", ConfigValueFactory.fromAnyRef(true)) .withValue("application.securePort", ConfigValueFactory.fromAnyRef(8443))) .toString(); assertEquals(" GET / [*/*] [*/*] (/anonymous)\n" + " GET /home [*/*] [*/*] (/anonymous)\n" + " WS /ws [text/plain] [text/plain]\n" + "\n" + "listening on:\n" + " http://localhost:8080/\n" + " https://localhost:8443/ +h2", setup); } @Test public void printHttp2ClearText() { String setup = new AppPrinter( Sets.newLinkedHashSet(Arrays.asList(route("/"), route("/home"))), Sets.newLinkedHashSet(Arrays.asList(socket("/ws"))), config("/") .withValue("server.http2.cleartext", ConfigValueFactory.fromAnyRef(true)) .withValue("server.http2.enabled", ConfigValueFactory.fromAnyRef(true))) .toString(); assertEquals(" GET / [*/*] [*/*] (/anonymous)\n" + " GET /home [*/*] [*/*] (/anonymous)\n" + " WS /ws [text/plain] [text/plain]\n" + "\n" + "listening on:\n" + " http://localhost:8080/ +h2", setup); } private Config config(final String path) { return ConfigFactory.empty() .withValue("application.host", ConfigValueFactory.fromAnyRef("localhost")) .withValue("application.port", ConfigValueFactory.fromAnyRef("8080")) .withValue("server.http2.enabled", ConfigValueFactory.fromAnyRef(false)) .withValue("server.http2.cleartext", ConfigValueFactory.fromAnyRef(true)) .withValue("application.path", ConfigValueFactory.fromAnyRef(path)); } @Test public void printWithPath() { String setup = new AppPrinter( Sets.newLinkedHashSet(Arrays.asList(route("/"), route("/home"))), Sets.newLinkedHashSet(Arrays.asList(socket("/ws"))), config("/app")) .toString(); assertEquals(" GET / [*/*] [*/*] (/anonymous)\n" + " GET /home [*/*] [*/*] (/anonymous)\n" + " WS /ws [text/plain] [text/plain]\n" + "\n" + "listening on:\n" + " http://localhost:8080/app", setup); } @Test public void printNoSockets() { String setup = new AppPrinter( Sets.newLinkedHashSet(Arrays.asList(route("/"), route("/home"))), Sets.newLinkedHashSet(), config("/app")) .toString(); assertEquals(" GET / [*/*] [*/*] (/anonymous)\n" + " GET /home [*/*] [*/*] (/anonymous)\n" + "\n" + "listening on:\n" + " http://localhost:8080/app", setup); } private Route.Definition route(final String pattern) { return new Route.Definition("GET", pattern, (req, rsp) -> { }); } private Route.Definition before(final String pattern) { return new Route.Definition("GET", pattern, (Before) (req, rsp) -> { }); } private Route.Definition beforeSend(final String pattern) { return new Route.Definition("GET", pattern, (Route.After) (req, rsp, r) -> { return r; }); } private Route.Definition after(final String pattern) { return new Route.Definition("GET", pattern, (Route.Complete) (req, rsp, r) -> { }); } private WebSocket.Definition socket(final String pattern) { return new WebSocket.Definition(pattern, (req, ws) -> { }); } }