/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.test.module.extension;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.junit.Assert.assertThat;
import static org.mule.runtime.api.message.Message.of;
import org.mule.runtime.core.api.Event;
import org.mule.runtime.extension.api.runtime.ConfigurationProvider;
import org.mule.test.heisenberg.extension.HeisenbergExtension;
import org.mule.test.module.extension.internal.util.ExtensionsTestUtils;
import javax.inject.Inject;
import javax.inject.Named;
import org.junit.Test;
public class ExtensionAsInjectedDependenciesTestCase extends AbstractExtensionFunctionalTestCase {
private static final String STATIC_HEISENBERG = "staticHeisenberg";
private static final String DYNAMIC_AGE_HEISENBERG = "dynamicAgeHeisenberg";
private Dependent dependent;
@Override
protected void doSetUp() throws Exception {
super.doSetUp();
dependent = muleContext.getInjector().inject(new Dependent());
}
@Override
protected String getConfigFile() {
return "heisenberg-injected.xml";
}
@Test
public void staticHeisenbergWasInjected() throws Exception {
assertCorrectProviderInjected(STATIC_HEISENBERG, dependent.getStaticHeisenberg());
HeisenbergExtension heisenberg =
ExtensionsTestUtils.getConfigurationFromRegistry(STATIC_HEISENBERG, testEvent(), muleContext);
assertThat(heisenberg.getPersonalInfo().getAge(), is(50));
}
@Test
public void dynamicHeisenbergWasInjected() throws Exception {
assertCorrectProviderInjected(DYNAMIC_AGE_HEISENBERG, dependent.getDynamicAgeHeisenberg());
final int age = 52;
Event event = eventBuilder().message(of("")).addVariable("age", age).build();
HeisenbergExtension heisenberg = ExtensionsTestUtils.getConfigurationFromRegistry(DYNAMIC_AGE_HEISENBERG, event, muleContext);
assertThat(heisenberg.getPersonalInfo().getAge(), is(age));
}
private void assertCorrectProviderInjected(String key, ConfigurationProvider expected) {
assertThat(expected, is(sameInstance(muleContext.getRegistry().get(key))));
}
public static class Dependent {
@Inject
@Named(STATIC_HEISENBERG)
private ConfigurationProvider staticHeisenberg;
@Inject
@Named(DYNAMIC_AGE_HEISENBERG)
private ConfigurationProvider dynamicAgeHeisenberg;
public ConfigurationProvider getStaticHeisenberg() {
return staticHeisenberg;
}
public ConfigurationProvider getDynamicAgeHeisenberg() {
return dynamicAgeHeisenberg;
}
}
}