Package org.mule.test.integration.message

Source Code of org.mule.test.integration.message.AttachmentsPropagationTestCase

/*
* 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.integration.message;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import org.mule.api.MuleEventContext;
import org.mule.api.MuleMessage;
import org.mule.api.client.MuleClient;
import org.mule.tck.functional.EventCallback;
import org.mule.tck.functional.FunctionalTestComponent;
import org.mule.tck.junit4.FunctionalTestCase;
import org.mule.transport.email.transformers.PlainTextDataSource;

import javax.activation.DataHandler;

import org.junit.Test;

public class AttachmentsPropagationTestCase extends FunctionalTestCase implements EventCallback
{
    private static final String ATTACHMENT_CONTENT = "<content>";

    @Override
    protected String getConfigFile()
    {
        return "org/mule/test/message/attachment-propagation.xml";
    }

    @Override
    protected void doSetUp() throws Exception
    {
        super.doSetUp();

        FunctionalTestComponent ftc = (FunctionalTestComponent) getComponent("SINGLE");
        ftc.setEventCallback(this);

        ftc = (FunctionalTestComponent) getComponent("CHAINED");
        ftc.setEventCallback(this);
    }

    @Override
    public void eventReceived(MuleEventContext context, Object component) throws Exception
    {
        MuleMessage message = context.getMessage();

        // copy all inbound attachments to outbound
        for (String attachmentName : message.getInboundAttachmentNames())
        {
            DataHandler inboundAttachment = message.getInboundAttachment(attachmentName);
            message.addOutboundAttachment(attachmentName, inboundAttachment);
        }

        // add an attachment, named after the componentname...
        String attachmentName = context.getFlowConstruct().getName();
        DataHandler dataHandler = new DataHandler(new PlainTextDataSource("text/plain", ATTACHMENT_CONTENT));
        message.addOutboundAttachment(attachmentName, dataHandler);

        // return the list of attachment names
        FunctionalTestComponent fc = (FunctionalTestComponent) component;
        fc.setReturnData(message.getOutboundAttachmentNames().toString());
    }

    @Test
    public void singleFlowShouldReceiveAttachment() throws Exception
    {
        MuleClient client = muleContext.getClient();
        MuleMessage result = client.send("vm://Single", "", null);
        assertNotNull(result);

        // expect SINGLE attachment from SINGLE service
        assertEquals("[SINGLE]", result.getPayloadAsString());

        DataHandler attachment = result.getInboundAttachment("SINGLE");
        assertNotNull(attachment);
        assertEquals(ATTACHMENT_CONTENT, attachment.getContent().toString());
    }

    @Test
    public void chainedFlowShouldReceiveAttachments() throws Exception
    {
        MuleClient client = muleContext.getClient();
        MuleMessage result = client.send("vm://Chained", "", null);
        assertNotNull(result);

        // expect CHAINED attachment from CHAINED service
        // and SINGLE attachment from SINGLE service
        assertEquals("[CHAINED, SINGLE]", result.getPayloadAsString());

        // don't check the attachments now - it seems they're not copied properly from inbound
        // to outbound on flow boundaries
//        DataHandler attachment = result.getInboundAttachment("SINGLE");
//        assertNotNull(attachment);
//        assertEquals(ATTACHMENT_CONTENT, attachment.getContent().toString());
//
//        attachment = result.getInboundAttachment("CHAINED");
//        assertNotNull(attachment);
//        assertEquals(ATTACHMENT_CONTENT, attachment.getContent().toString());
    }
}
TOP

Related Classes of org.mule.test.integration.message.AttachmentsPropagationTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.