Package org.mule.transport.file

Source Code of org.mule.transport.file.FileAutoDeleteOnExceptionTestCase

/*
* 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.transport.file;

import static org.junit.Assert.assertFalse;

import org.mule.api.construct.FlowConstruct;
import org.mule.tck.junit4.FunctionalTestCase;
import org.mule.tck.probe.PollingProber;
import org.mule.tck.probe.Probe;
import org.mule.tck.probe.Prober;
import org.mule.tck.probe.file.FileExists;

import java.io.File;
import java.io.IOException;

import org.junit.Before;
import org.junit.Test;

public class FileAutoDeleteOnExceptionTestCase extends FunctionalTestCase
{
    public String testFolder1;
    public String testFolder2;

    private Prober prober;

    public FileAutoDeleteOnExceptionTestCase()
    {
        setStartContext(false);
    }

    @Override
    protected String getConfigFile()
    {
        return "file-auto-delete-on-exception-config.xml";
    }

    @Before
    public void setUp() throws IOException
    {
        prober = new PollingProber(10000, 100);
        testFolder1 = getFileInsideWorkingDirectory("testData1").getAbsolutePath();
        testFolder2 = getFileInsideWorkingDirectory("testData2").getAbsolutePath();
    }

    private File createTestFile(String folder) throws IOException
    {
        File testFolder = new File(folder);
        testFolder.mkdirs();
        prober.check(new FileExists(testFolder));

        File target = File.createTempFile("mule-file-test-", ".txt", testFolder);
        target.deleteOnExit();
        prober.check(new FileExists(target));
        return target;
    }

    @Test
    public void testDoesNotAutoDeleteFileOnException() throws Exception
    {
        File target = createTestFile(testFolder1);
        // Starts file endpoint polling
        muleContext.start();

        // Exception strategy should be stopped after processing the file
        final FlowConstruct fileFlow = muleContext.getRegistry().lookupFlowConstruct("fileTest");
        prober.check(new FlowStopped(fileFlow));

        // Checks that the source file was not deleted after the exception processing
        prober.check(new FileExists(target));
    }

    @Test
    public void testAutoDeletesFileOnExceptionIfFileWasTransformed() throws Exception
    {
        File target = createTestFile(testFolder2);

        // Starts file endpoint polling
        muleContext.start();

        // Exception strategy should be stopped after processing the file
        final FlowConstruct fileFlow = muleContext.getRegistry().lookupFlowConstruct("fileTestWithTransformation");
        prober.check(new FlowStopped(fileFlow));

        // Checks that the source file was deleted after the exception processing
        assertFalse(target.exists());
    }

    private static class FlowStopped implements Probe
    {

        private final FlowConstruct fileFlow;

        public FlowStopped(FlowConstruct fileFlow)
        {
            this.fileFlow = fileFlow;
        }

        public boolean isSatisfied()
        {
            return fileFlow.getLifecycleState().isStopped();
        }

        public String describeFailure()
        {
            return "Flow was not stopped after processing the exception";
        }
    }
}
TOP

Related Classes of org.mule.transport.file.FileAutoDeleteOnExceptionTestCase

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.