From c7d105653826f5892215aef509885dc7ac721c59 Mon Sep 17 00:00:00 2001 From: Stephane Epardaud Date: Tue, 10 Mar 2020 14:41:36 +0100 Subject: [PATCH] Tests for checked templates --- .../resteasy/deployment/HelloResource.java | 65 ++++++++++++++++++- .../TemplateResponseFilterTest.java | 6 ++ .../resteasy/deployment/TypeErrorTest.java | 28 ++++++++ .../resteasy/deployment/TypeErrorTest2.java | 29 +++++++++ .../templates/HelloResource/hello.txt | 1 + .../templates/HelloResource/typeError.txt | 1 + .../templates/HelloResource/typeError2.txt | 1 + .../templates/HelloResource/typedTemplate.txt | 1 + 8 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest.java create mode 100644 extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest2.java create mode 100644 extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/hello.txt create mode 100644 extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError.txt create mode 100644 extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError2.txt create mode 100644 extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typedTemplate.txt diff --git a/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/HelloResource.java b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/HelloResource.java index 9f4e68ecaaf46..b56793c7dcee6 100644 --- a/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/HelloResource.java +++ b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/HelloResource.java @@ -1,25 +1,86 @@ package io.quarkus.qute.resteasy.deployment; +import java.util.Map; + import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; -import javax.ws.rs.QueryParam; + +import org.jboss.resteasy.annotations.jaxrs.QueryParam; import io.quarkus.qute.Template; import io.quarkus.qute.TemplateInstance; +import io.quarkus.qute.api.CheckedTemplateInstance; +import io.quarkus.resteasy.qute.runtime.ResteasyTemplate; @Path("hello") public class HelloResource { + public static class typeError2 extends CheckedTemplateInstance { + public typeError2(String name) { + } + } + + public static class typedTemplate extends CheckedTemplateInstance { + // // GENERATED + // private final Map bindings = new HashMap<>(); + + public typedTemplate(String name, Map other) { + // // GENERATED + // bindings.put("name", name); + } + + // // GENERATED + // @Override + // protected String getTemplateId() { + // return "HelloResource/typedTemplate"; + // } + // + // // GENERATED + // @Override + // protected Map getBindings() { + // return bindings; + // } + } + @Inject Template hello; @GET - public TemplateInstance get(@QueryParam("name") String name) { + public TemplateInstance get(@QueryParam String name) { if (name == null) { name = "world"; } return hello.data("name", name); } + @Path("no-injection") + @GET + public TemplateInstance hello(@QueryParam String name) { + if (name == null) { + name = "world"; + } + return ResteasyTemplate.data("name", name); + } + + @Path("type-error") + @GET + public TemplateInstance typeError() { + return ResteasyTemplate.data("name", "world"); + } + + @Path("type-error2") + @GET + public typeError2 typeError2() { + return new typeError2("world"); + } + + @Path("typed-template") + @GET + public typedTemplate typedTemplate(@QueryParam String name) { + if (name == null) { + name = "world"; + } + return new typedTemplate(name, null); + } } diff --git a/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TemplateResponseFilterTest.java b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TemplateResponseFilterTest.java index a5bef18d4b9f4..b042dc33b05d3 100644 --- a/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TemplateResponseFilterTest.java +++ b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TemplateResponseFilterTest.java @@ -17,12 +17,18 @@ public class TemplateResponseFilterTest { static final QuarkusUnitTest config = new QuarkusUnitTest() .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) .addClass(HelloResource.class) + .addAsResource("templates/HelloResource/hello.txt") + .addAsResource("templates/HelloResource/typedTemplate.txt") .addAsResource(new StringAsset("Hello {name}!"), "templates/hello.txt")); @Test public void testFilter() { when().get("/hello").then().body(Matchers.is("Hello world!")); when().get("/hello?name=Joe").then().body(Matchers.is("Hello Joe!")); + when().get("/hello/no-injection").then().body(Matchers.is("Salut world!")); + when().get("/hello/no-injection?name=Joe").then().body(Matchers.is("Salut Joe!")); + when().get("/hello/typed-template").then().body(Matchers.is("Salut world!")); + when().get("/hello/typed-template?name=Joe").then().body(Matchers.is("Salut Joe!")); } } diff --git a/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest.java b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest.java new file mode 100644 index 0000000000000..5a8c91ea8b96d --- /dev/null +++ b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest.java @@ -0,0 +1,28 @@ +package io.quarkus.qute.resteasy.deployment; + +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.StringAsset; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.wildfly.common.Assert; + +import io.quarkus.test.QuarkusUnitTest; + +public class TypeErrorTest { + + @RegisterExtension + static final QuarkusUnitTest configError = new QuarkusUnitTest() + .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) + .addClass(HelloResource.class) + .addAsResource("templates/HelloResource/hello.txt") + .addAsResource("templates/HelloResource/typeError.txt") + .addAsResource(new StringAsset("Hello {name}!"), "templates/hello.txt")) + .assertException(t -> { + Assert.assertTrue(t.getMessage().contains("Incorrect expression: name.foo()")); + }); + + @Test + public void emptyTest() { + } +} diff --git a/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest2.java b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest2.java new file mode 100644 index 0000000000000..645574b60973a --- /dev/null +++ b/extensions/resteasy-qute/deployment/src/test/java/io/quarkus/qute/resteasy/deployment/TypeErrorTest2.java @@ -0,0 +1,29 @@ +package io.quarkus.qute.resteasy.deployment; + +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.StringAsset; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.wildfly.common.Assert; + +import io.quarkus.test.QuarkusUnitTest; + +public class TypeErrorTest2 { + + @RegisterExtension + static final QuarkusUnitTest configError = new QuarkusUnitTest() + .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) + .addClass(HelloResource.class) + .addAsResource("templates/HelloResource/hello.txt") + .addAsResource("templates/HelloResource/typeError2.txt") + .addAsResource(new StringAsset("Hello {name}!"), "templates/hello.txt")) + .assertException(t -> { + t.printStackTrace(); + Assert.assertTrue(t.getMessage().contains("Incorrect expression: name.foo()")); + }); + + @Test + public void emptyTest() { + } +} diff --git a/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/hello.txt b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/hello.txt new file mode 100644 index 0000000000000..8c2a722b8984a --- /dev/null +++ b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/hello.txt @@ -0,0 +1 @@ +Salut {name}! \ No newline at end of file diff --git a/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError.txt b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError.txt new file mode 100644 index 0000000000000..7b7d4ddcdae5e --- /dev/null +++ b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError.txt @@ -0,0 +1 @@ +{@java.lang.String name}Salut {name.foo()}! \ No newline at end of file diff --git a/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError2.txt b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError2.txt new file mode 100644 index 0000000000000..e6a6bf71b26d6 --- /dev/null +++ b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typeError2.txt @@ -0,0 +1 @@ +Salut {name.foo()}! \ No newline at end of file diff --git a/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typedTemplate.txt b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typedTemplate.txt new file mode 100644 index 0000000000000..8c2a722b8984a --- /dev/null +++ b/extensions/resteasy-qute/deployment/src/test/resources/templates/HelloResource/typedTemplate.txt @@ -0,0 +1 @@ +Salut {name}! \ No newline at end of file