osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Unit Testing REST DSL Endpoints


Hey Claus,

Thanks for responding! I was actually just considering routing the REST DSL
Endpoints directly to the "direct" endpoint and then testing from the
direct Endpoint onward.

Just to clarify, you are suggesting something similar to:

rest("/test")
    .post()
    .route()
    .to("direct:process")
    .endRest();

from("direct:process")
    .process(testProcessor)
    .to("direct:out");

Where "direct:process" would be the start of any real processing and thus
what ought to be tested?

On Thu, Dec 20, 2018 at 5:18 PM Claus Ibsen <claus.ibsen@xxxxxxxxx> wrote:

> So what you should/can advice is the route that you are calling via
> direct, eg the route that you may have the starts from direct:out
>
>
> On Thu, Dec 20, 2018 at 11:13 PM Claus Ibsen <claus.ibsen@xxxxxxxxx>
> wrote:
> >
> > Hi
> >
> > The advice with functionality is for regular Camel routes, eg they
> > start via from()
> > So what you do is not supported.
> >
> > On Thu, Dec 20, 2018 at 10:15 PM Bradford Fisher
> > <bradford@xxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > I'm trying to replace a REST DSL "from" Endpoint using adviceWith and
> > > replaceFromWith appears to be failing because Camel is appending a
> routeId
> > > parameter to the end of the direct URI.
> > >
> > > Any suggestions on how to fix this? I've included below a sample Test
> class
> > > illustrating the issue as well as the failure.
> > >
> > > ######################################################
> > > # Test Program
> > > ######################################################
> > >
> > > package com.theperducogroup;
> > >
> > > import org.apache.camel.builder.RouteBuilder;
> > > import org.apache.camel.builder.AdviceWithRouteBuilder;
> > > import org.apache.camel.model.RouteDefinition;
> > > import org.apache.camel.test.junit4.CamelTestSupport;
> > >
> > > import org.junit.Test;
> > >
> > > public class RestfulRouteTest extends CamelTestSupport
> > > {
> > >     @Test
> > >     public void doSomething()
> > >     {
> > >         try
> > >         {
> > >             context.getRouteDefinition("test").adviceWith(context, new
> > > AdviceWithRouteBuilder()
> > >             {
> > >                 public void configure()
> > >                 {
> > >                     replaceFromWith("direct:test");
> > >                 }
> > >             });
> > >         }
> > >         catch (Exception e)
> > >         {
> > >             System.out.println(e);
> > >         }
> > >     }
> > >
> > >     @Override
> > >     protected RouteBuilder createRouteBuilder()
> > >     {
> > >         return new RouteBuilder()
> > >         {
> > >             public void configure()
> > >             {
> > >                 restConfiguration()
> > >                     .component("undertow");
> > >
> > >                 rest("/test").post().route()
> > >                     .routeId("test")
> > >                     .to("direct:out")
> > >                     .endRest();
> > >             }
> > >         };
> > >     }
> > > }
> > >
> > > ######################################################
> > > # Exception
> > > ######################################################
> > >
> > > org.apache.camel.FailedToCreateRouteException: Failed to create route
> test:
> > > Route(test)[[From[direct://test?routeId=test]] -> [To[direct...
> because of
> > > Failed to resolve endpoint: direct://test?routeId=test due to: Failed
> to
> > > resolve endpoint: direct://test?routeId=test due to: There are 1
> parameters
> > > that couldn't be set on the endpoint. Check the uri if the parameters
> are
> > > spelt correctly and that they are properties of the endpoint. Unknown
> > > parameters=[{routeId=test}]
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>