View Javadoc

1   /*
2    * $Id: FileFunctionalTestCase.java 22491 2011-07-21 10:04:30Z claude.mamo $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transport.file;
12  
13  import org.mule.api.MuleMessage;
14  import org.mule.module.client.MuleClient;
15  
16  import java.io.BufferedReader;
17  import java.io.File;
18  import java.io.FileReader;
19  import java.io.FileWriter;
20  import java.io.Writer;
21  import java.util.HashMap;
22  import java.util.Map;
23  
24  import org.junit.Test;
25  
26  import static org.junit.Assert.assertEquals;
27  import static org.junit.Assert.assertTrue;
28  
29  /**
30   * We are careful here to access the file sstem in a generic way.  This means setting directories
31   * dynamically.
32   */
33  public class FileFunctionalTestCase extends AbstractFileFunctionalTestCase
34  {
35  
36      public FileFunctionalTestCase(ConfigVariant variant, String configResources)
37      {
38          super(variant, configResources);
39      }
40  
41      @Test
42      public void testSend() throws Exception
43      {
44          File target = File.createTempFile("mule-file-test-", ".txt");
45          target.deleteOnExit();
46  
47          FileConnector connector =
48                  (FileConnector) muleContext.getRegistry().lookupConnector("sendConnector");
49          connector.setWriteToDirectory(target.getParent());
50          Map<String, String> props = new HashMap<String, String>();
51          props.put(TARGET_FILE, target.getName());
52  
53          MuleClient client = new MuleClient(muleContext);
54          client.dispatch("send", TEST_MESSAGE, props);
55          waitForFileSystem();
56  
57          String result = new BufferedReader(new FileReader(target)).readLine();
58          assertEquals(TEST_MESSAGE, result);
59      }
60  
61      @Test
62      public void testDirectRequest() throws Exception
63      {
64          File target = initForRequest();
65          MuleClient client = new MuleClient(muleContext);
66          String url = fileToUrl(target) + "?connector=receiveConnector";
67          logger.debug(url);
68          MuleMessage message = client.request(url, 100000);
69          checkReceivedMessage(message);
70      }
71      
72      @Test
73      public void testRecursive() throws Exception
74      {
75          File directory = new File("./.mule/in");
76          File subDirectory = new File(directory.getAbsolutePath() + "/sub");
77          boolean success = subDirectory.mkdir();
78          assertTrue(success);
79          subDirectory.deleteOnExit();
80  
81          File target = File.createTempFile("mule-file-test-", ".txt", subDirectory);
82          Writer out = new FileWriter(target);
83          out.write(TEST_MESSAGE);
84          out.close();
85          target.deleteOnExit();
86  
87          MuleClient client = new MuleClient(muleContext);
88          Thread.sleep(1000);
89          MuleMessage message = client.request("vm://receive?connector=vmQueue", 100000);
90          assertEquals(TEST_MESSAGE, message.getPayloadAsString());
91      }
92  }