package com.muleinaction;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;
import java.io.File;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import org.mule.DefaultMuleMessage;
import org.mule.api.MuleMessage;
import org.mule.api.el.ExpressionLanguage;
import org.mule.module.client.MuleClient;
import org.mule.tck.junit4.FunctionalTestCase;
import org.xml.sax.InputSource;
public class ExpressionsTestCase extends FunctionalTestCase
{
@Override
protected String getConfigResources()
{
return "expressions.xml";
}
@Test
public void string() throws Exception
{
MuleClient muleClient = new MuleClient(muleContext);
MuleMessage result = muleClient.send("vm://string-expression.in",
"<payment />", null);
String idValue = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse(
new InputSource(new StringReader(
result.getPayloadAsString())))
.getDocumentElement()
.getAttribute("tid");
assertThat("Got: " + result.getPayloadAsString(),
idValue.split("-").length, is(5));
}
@Test
public void logger() throws Exception
{
MuleClient muleClient = new MuleClient(muleContext);
muleClient.send("vm://logger.in", "<invoice id='123' />", null);
}
@Test
public void ensureAttached() throws Exception
{
MuleClient muleClient = new MuleClient(muleContext);
MuleMessage muleMessage = new DefaultMuleMessage("foo",
muleContext);
assertThat(muleClient.send("vm://ensure.attached", muleMessage)
.getPayloadAsString(), is("ERROR: no attachment!"));
muleMessage.addOutboundAttachment("data", "bar", "text/plain");
assertThat(muleClient.send("vm://ensure.attached", muleMessage)
.getPayloadAsString(), is("OK"));
}
@Test
public void dynamicDispatcher() throws Exception
{
assertThat(
new MuleClient(muleContext).send("vm://ticker.fetcher",
"GOOG".getBytes(), null)
.getPayloadAsString()
.contains("Google"), is(true));
}
@Test
public void evaluationFromCode() throws Exception
{
//<start id="lis_02_expressions-5"/>
ExpressionLanguage mel = muleContext.getExpressionLanguage();
String applicationName = mel.evaluate("app.name");
//<end id="lis_02_expressions-5"/>
assertThat(mel.isValid("'test'"), is(true));
assertThat(StringUtils.isNotBlank(applicationName), is(true));
String testEl = "targetDir = new java.io.File(server.tmpDir, 'target');targetDir.mkdir();targetDir";
File targetDir = mel.evaluate(testEl);
assertThat(targetDir, is(notNullValue()));
}
}