/*
* 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.junit.Assert.assertThat;
import org.mule.functional.junit4.FlowRunner;
import org.mule.runtime.core.api.Event;
import org.mule.tck.probe.JUnitLambdaProbe;
import org.mule.tck.probe.PollingProber;
import org.mule.test.heisenberg.extension.HeisenbergExtension;
import org.junit.Test;
public class DynamicConfigExpirationTestCase extends AbstractExtensionFunctionalTestCase {
@Override
protected String getConfigFile() {
return "dynamic-config-expiration.xml";
}
@Test
public void expireDynamicConfig() throws Exception {
final String myName = "Walt";
FlowRunner runner = flowRunner("dynamic").withPayload(myName);
final Event event = runner.buildEvent();
String returnedName = getPayloadAsString(runner.run().getMessage());
HeisenbergExtension config =
(HeisenbergExtension) muleContext.getExtensionManager().getConfiguration("heisenberg", event).getValue();
// validate we actually hit the correct dynamic config
assertThat(returnedName, is(myName));
assertThat(config.getPersonalInfo().getName(), is(myName));
PollingProber prober = new PollingProber(5000, 1000);
prober.check(new JUnitLambdaProbe(() -> {
assertThat(config.getStop(), is(1));
assertThat(config.getDispose(), is(1));
return true;
}, "config was not stopped or disposed"));
assertThat(config.getInitialise(), is(1));
assertThat(config.getStart(), is(1));
}
}