I'm having issue with camel route mocking. It was not able to count the route messages instead its returning "0" message count. Here is my test case and route. Can someone assist me with this ?
WatcherRouteTest.java
@CamelSpringBootTest
@SpringBootTest
@MockEndpoints
@UseAdviceWith
public class RouteTest {
@Autowired
CamelContext camelContext;
@Autowired
ProducerTemplate producerTemplate;
File resultFile;
@EndpointInject("mock:azure-storage-blob")
MockEndpoint storageMockEndpoint;
@Test
void testFlow() throws Exception {
AdviceWith.adviceWith(camelContext, "uploadFile", a ->
a.replaceFromWith("direct:start")
);
storageMockEndpoint.expectedMessageCount(1);
storageMockEndpoint.message(0)
.header(Exchange.FILE_NAME).isEqualTo("text.csv");
InputStream body = fetchFileFromResourcesFolderAsStream("test-files/text.csv");
Map<String, Object> headers = new HashMap<>();
headers.put(Exchange.FILE_NAME, "text.csv");
headers.put("CamelAzureStorageBlobContainerName","abc");
headers.put("header.CamelAzureStorageBlobSourceBlobAccountName","abcd");
camelContext.start();
producerTemplate.sendBodyAndHeaders("direct:start", body, headers);
storageMockEndpoint.assertIsSatisfied();
resultFile = fileCreationUtility( "text.csv");
assertTrue(resultFile.exists());
}
}
Here is my actual implementation:
from("direct:upload")
.routeId("uploadFile")
.setHeader("CamelAzureStorageBlobSourceBlobAccountName",constant(storageAccountName))
.toD(BLOB_URL)
.log(LoggingLevel.INFO,"${header.CamelFileName} Uploaded to ${header.CamelAzureStorageBlobContainerName} Container Successfully")
.end();
Exception Occurred:
java.lang.AssertionError: mock://azure-storage-blob Received message count. Expected: <1> but was: <0>
Expected :<1>
Actual :<0>