From 7681cb2d65bc94120998be2848d53f70f7ed4c91 Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Mon, 14 Mar 2022 23:35:32 +0100 Subject: [PATCH] BAEL-5234 - Apache Camel Routes Testing in Spring Boot (#11925) * BAEL-4706 - Spring Boot with Spring Batch * BAEL-3948 - Fix test(s) in spring-batch which leaves repository.sqlite changed * BAEL-4736 - Convert JSONArray to List of Object using camel-jackson * BAEL-4756 - Mockito MockSettings * BAEL-4756 - Mockito MockSettings - fix spelling * BAEL-2674 - Upgrade the Okhttp article * BAEL-4204 - Adding Interceptors in OkHTTP * BAEL-4836 - Mocking Static Methods with Mockito * BAEL-4205 - A Guide to Events in OkHTTP * BAEL-5408 - Update Camel version in spring-boot-camel module * BAEL-5234 - Apache Camel Routes Testing in Spring Boot * BAEL-5234 - Apache Camel Routes Testing in Spring Boot Co-authored-by: Jonathan Cook --- .../spring-boot-camel/.gitignore | 1 + spring-boot-modules/spring-boot-camel/pom.xml | 9 ++++++ .../boot/testing/GreetingsFileRouter.java | 19 +++++++++++ .../GreetingsFileSpringApplication.java | 13 ++++++++ .../testing/GreetingsFileRouterUnitTest.java | 32 +++++++++++++++++++ 5 files changed, 74 insertions(+) create mode 100644 spring-boot-modules/spring-boot-camel/.gitignore create mode 100644 spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileRouter.java create mode 100644 spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileSpringApplication.java create mode 100644 spring-boot-modules/spring-boot-camel/src/test/java/com/baeldung/camel/boot/testing/GreetingsFileRouterUnitTest.java diff --git a/spring-boot-modules/spring-boot-camel/.gitignore b/spring-boot-modules/spring-boot-camel/.gitignore new file mode 100644 index 0000000000..16be8f2193 --- /dev/null +++ b/spring-boot-modules/spring-boot-camel/.gitignore @@ -0,0 +1 @@ +/output/ diff --git a/spring-boot-modules/spring-boot-camel/pom.xml b/spring-boot-modules/spring-boot-camel/pom.xml index 5bda1b2351..ecf7143808 100644 --- a/spring-boot-modules/spring-boot-camel/pom.xml +++ b/spring-boot-modules/spring-boot-camel/pom.xml @@ -44,6 +44,12 @@ spring-boot-starter-test test + + org.apache.camel + camel-test-spring-junit5 + ${camel.version} + test + @@ -57,6 +63,9 @@ repackage + + com.baeldung.camel.boot.testing.GreetingsFileSpringApplication + diff --git a/spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileRouter.java b/spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileRouter.java new file mode 100644 index 0000000000..670af5e08c --- /dev/null +++ b/spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileRouter.java @@ -0,0 +1,19 @@ +package com.baeldung.camel.boot.testing; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; + +@Component +public class GreetingsFileRouter extends RouteBuilder { + + @Override + public void configure() throws Exception { + + from("direct:start") + .routeId("greetings-route") + .setBody(constant("Hello Baeldung Readers!")) + .to("file:output"); + + } + +} diff --git a/spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileSpringApplication.java b/spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileSpringApplication.java new file mode 100644 index 0000000000..a4e862e65d --- /dev/null +++ b/spring-boot-modules/spring-boot-camel/src/main/java/com/baeldung/camel/boot/testing/GreetingsFileSpringApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.camel.boot.testing; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GreetingsFileSpringApplication { + + public static void main(String[] args) { + SpringApplication.run(GreetingsFileSpringApplication.class, args); + } + +} diff --git a/spring-boot-modules/spring-boot-camel/src/test/java/com/baeldung/camel/boot/testing/GreetingsFileRouterUnitTest.java b/spring-boot-modules/spring-boot-camel/src/test/java/com/baeldung/camel/boot/testing/GreetingsFileRouterUnitTest.java new file mode 100644 index 0000000000..baeb1fd39c --- /dev/null +++ b/spring-boot-modules/spring-boot-camel/src/test/java/com/baeldung/camel/boot/testing/GreetingsFileRouterUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.camel.boot.testing; + +import org.apache.camel.EndpointInject; +import org.apache.camel.ProducerTemplate; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.spring.junit5.CamelSpringBootTest; +import org.apache.camel.test.spring.junit5.MockEndpoints; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +@CamelSpringBootTest +@MockEndpoints("file:output") +class GreetingsFileRouterUnitTest { + + @Autowired + private ProducerTemplate template; + + @EndpointInject("mock:file:output") + private MockEndpoint mock; + + @Test + void whenSendBody_thenGreetingReceivedSuccessfully() throws InterruptedException { + mock.expectedBodiesReceived("Hello Baeldung Readers!"); + + template.sendBody("direct:start", null); + + mock.assertIsSatisfied(); + } + +}