Skip to content

Commit

Permalink
Add a test to validate fix for #1368
Browse files Browse the repository at this point in the history
  • Loading branch information
lburgazzoli committed Jun 20, 2020
1 parent 7896a1f commit e40ba5e
Showing 1 changed file with 98 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.quarkus.main.deployment;

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

import io.quarkus.test.QuarkusUnitTest;
import org.apache.camel.BeanInject;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.quarkus.main.CamelMain;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.Asset;
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 static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;

public class CamelMainInjectTest {
@RegisterExtension
static final QuarkusUnitTest CONFIG = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(MyRoutes.class, MyProcessor.class)
.addAsResource(applicationProperties(), "application.properties"));

@Inject
CamelMain main;

public static Asset applicationProperties() {
Writer writer = new StringWriter();

Properties props = new Properties();
props.setProperty("quarkus.banner.enabled", "false");
props.setProperty("quarkus.arc.remove-unused-beans", "false");

try {
props.store(writer, "");
} catch (IOException e) {
throw new RuntimeException(e);
}

return new StringAsset(writer.toString());
}

@Test
public void testInject() {
// ensure the camel context is started before doing any assertion
await().atMost(10, TimeUnit.SECONDS).until(main::isStarted);

// ensure Camel's DI works
assertThat(main.configure().getRoutesBuilders())
.first()
.isInstanceOfSatisfying(MyRoutes.class, route -> assertThat(route.processor).isNotNull());
}

public static class MyRoutes extends RouteBuilder {
@BeanInject
MyProcessor processor;

@Override
public void configure() throws Exception {
from("direct:start")
.process(processor);
}
}

@ApplicationScoped
public static class MyProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
}
}
}

0 comments on commit e40ba5e

Please sign in to comment.