Contact Us 1-800-596-4880

Configuring FTP Server Utility in an MUnit Test

Assume that you want to test the following Mule application:

<sftp:config name="SFTP_Config">
    <sftp:connection host="${ftp.host}" port="${ftp.port}" username="${ftp.user}" password="${ftp.password}"/>
</sftp:config>

<configuration-properties file="ftp.properties" />

<flow name="listFlow">
    <sftp:list config-ref="SFTP_Config" directoryPath="."/>
    <foreach>
        <logger level="INFO" message="#[attributes.fileName]"/>
    </foreach>
</flow>

The ftp.properties in src/main/resources has the following content:

ftp.host=localhost
ftp.port=22
ftp.user=max
ftp.password=munittest

The username field cannot be empty. If you do not have a username-password pair, set the username to anonymous and don’t set any password. By default, the anonymous attribute is set to true.

Install the FTP Server

  1. From Anypoint Studio, go to the Mule Palette view and locate Search in Exchange…​.

  2. In the search bar look for MUnit Utils FTP Server and add the module to your project:

    <!-- Ftp Server Dependency -->
    <dependency>
        <groupId>com.mulesoft.munit.utils</groupId>
        <artifactId>munit-ftpserver-module</artifactId>
        <version>2.0.1</version>
        <classifier>mule-plugin</classifier>
        <scope>test</scope>
    </dependency>

    The MUnit FTP server artifact in your POM file must have the test scope.

Define the FTP Server

  1. In your Studio canvas, go to the Global Elements tab and select your MUnit FTP Server Config element.

  2. Click Edit and complete the fields:

    Attribute Value

    Name

    MUnit_FTP_Server_Config

    Port

    ${ftp.port}

    Username

    ${ftp.user}

    Password

    ${ftp.password}

    Secure

    true

    homeDir

    ${app.home}

    <ftpserver:config name="MUnit_FTP_Server_Config">
        <ftpserver:connection port="${ftp.port}" username="${ftp.user}" password="${ftp.password}" secure="true" homeDir="${app.home}"/>
    </ftpserver:config>

Run the Test

After configuring the FTP server you can run the test:

<munit:test name="listFlowTest" description="Test listFlow" >
    <munit:execution>
        <flow-ref name="listFlow"/>
    </munit:execution>
    <munit:validation>
        <munit-tools:assert-that expression="#[sizeOf(payload)]" is="#[MunitTools::greaterThan(0)]"/>
    </munit:validation>
</munit:test>

This FTP accepts any user, so there is no need to set up a user database or list.

See Also