Added an unit test for camel-http redirect according to the mailing list
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b6a87991 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b6a87991 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b6a87991 Branch: refs/heads/master Commit: b6a87991c7049e21d8b7249d69101c8584ab4d7d Parents: a7cd3b7 Author: Willem Jiang <[email protected]> Authored: Tue Jun 17 11:57:15 2014 +0800 Committer: Willem Jiang <[email protected]> Committed: Wed Jun 18 14:56:15 2014 +0800 ---------------------------------------------------------------------- .../camel/component/jetty/HttpRedirectTest.java | 48 ++++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b6a87991/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRedirectTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRedirectTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRedirectTest.java index e139e47..cd26dae 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRedirectTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRedirectTest.java @@ -21,10 +21,11 @@ import org.apache.camel.Processor; import org.apache.camel.RuntimeCamelException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.http.HttpOperationFailedException; +import org.apache.camel.component.mock.MockEndpoint; import org.junit.Test; /** - * @version + * @version */ public class HttpRedirectTest extends BaseJettyTest { @@ -34,7 +35,8 @@ public class HttpRedirectTest extends BaseJettyTest { template.requestBody("http://localhost:{{port}}/test", "Hello World", String.class); fail("Should have thrown an exception"); } catch (RuntimeCamelException e) { - HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, e.getCause()); + HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, + e.getCause()); assertEquals(301, cause.getStatusCode()); assertEquals(true, cause.isRedirectError()); assertEquals(true, cause.hasRedirectLocation()); @@ -43,19 +45,45 @@ public class HttpRedirectTest extends BaseJettyTest { } } + @Test + public void testHttpRedirectFromCamelRoute() throws Exception { + MockEndpoint errorEndpoint = context.getEndpoint("mock:error", MockEndpoint.class); + errorEndpoint.expectedMessageCount(1); + MockEndpoint resultEndpoint = context.getEndpoint("mock:result", MockEndpoint.class); + resultEndpoint.expectedMessageCount(0); + try { + template.requestBody("direct:start", "Hello World", String.class); + fail("Should have thrown an exception"); + } catch (RuntimeCamelException e) { + HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, + e.getCause()); + assertEquals(302, cause.getStatusCode()); + } + errorEndpoint.assertIsSatisfied(); + resultEndpoint.assertIsSatisfied(); + } + @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { - from("jetty://http://localhost:{{port}}/test") - .process(new Processor() { - public void process(Exchange exchange) throws Exception { - exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 301); - exchange.getOut().setHeader("location", "http://localhost:" + getPort() + "/newtest"); - } - }); + from("jetty://http://localhost:{{port}}/test").process(new Processor() { + public void process(Exchange exchange) throws Exception { + exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 301); + exchange.getOut().setHeader("location", "http://localhost:" + getPort() + "/newtest"); + } + }); + from("jetty://http://localhost:{{port}}/remove").process(new Processor() { + public void process(Exchange exchange) throws Exception { + exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 302); + } + }); + + from("direct:start").onException(HttpOperationFailedException.class).to("mock:error").end() + .to("http://localhost:{{port}}/remove?throwExceptionOnFailure=true").to("mock:result"); + } }; } -} \ No newline at end of file +}
