View Javadoc

1   /*
2    * $Id: FileNamespaceHandlerTestCase.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 static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertFalse;
15  import static org.junit.Assert.assertNotNull;
16  import static org.junit.Assert.assertTrue;
17  
18  import org.mule.api.endpoint.InboundEndpoint;
19  import org.mule.api.routing.filter.Filter;
20  import org.mule.api.service.Service;
21  import org.mule.construct.Flow;
22  import org.mule.service.ServiceCompositeMessageSource;
23  import org.mule.tck.AbstractServiceAndFlowTestCase;
24  import org.mule.transport.file.filters.FilenameRegexFilter;
25  import org.mule.transport.file.transformers.FileToByteArray;
26  import org.mule.transport.file.transformers.FileToString;
27  import org.mule.util.FileUtils;
28  
29  import java.io.File;
30  import java.util.Arrays;
31  import java.util.Collection;
32  import java.util.List;
33  
34  import org.junit.Test;
35  import org.junit.runners.Parameterized.Parameters;
36  
37  public class FileNamespaceHandlerTestCase extends AbstractServiceAndFlowTestCase
38  {
39      public FileNamespaceHandlerTestCase(ConfigVariant variant, String configResources)
40      {
41          super(variant, configResources);
42      }
43  
44      @Parameters
45      public static Collection<Object[]> parameters()
46      {
47          return Arrays.asList(new Object[][]{{ConfigVariant.SERVICE, "file-namespace-config-service.xml"},
48              {ConfigVariant.FLOW, "file-namespace-config-flow.xml"}});
49      }
50  
51      @Override
52      protected void doTearDown() throws Exception
53      {
54          File workDir = new File(".mule");
55          assertTrue(FileUtils.deleteTree(workDir));
56  
57          super.doTearDown();
58      }
59  
60      @Test
61      public void testConfig() throws Exception
62      {
63          FileConnector c = (FileConnector) muleContext.getRegistry().lookupConnector("fileConnector");
64          assertNotNull(c);
65  
66          assertEquals(1234, c.getFileAge());
67          assertEquals("abc", c.getMoveToDirectory());
68          assertEquals("bcd", c.getMoveToPattern());
69          assertEquals("cde", c.getOutputPattern());
70          assertEquals(2345, c.getPollingFrequency());
71          assertEquals(".mule/readFromDirectory", c.getReadFromDirectory());
72          assertEquals(".mule/writeToDirectory", c.getWriteToDirectory());
73          assertEquals(".mule/workDirectory", c.getWorkDirectory());
74          assertEquals("#[function:uuid]", c.getWorkFileNamePattern());
75          assertEquals(false, c.isAutoDelete());
76          assertEquals(true, c.isOutputAppend());
77          assertEquals(true, c.isSerialiseObjects());
78          assertEquals(false, c.isStreaming());
79          assertTrue(c.isRecursive());
80  
81          // Not implemented yet, see MULE-2671
82          // assertNull(c.getComparator());
83          // assertFalse(c.isReverseOrder());
84  
85          FilenameParser parser = c.getFilenameParser();
86          assertTrue(parser.getClass().getName(), c.getFilenameParser() instanceof DummyFilenameParser);
87  
88          assertTrue(c.isConnected());
89          assertTrue(c.isStarted());
90      }
91  
92      @Test
93      public void testThirdConnector() throws Exception
94      {
95          FileConnector c = (FileConnector) muleContext.getRegistry().lookupConnector("thirdConnector");
96          assertNotNull(c);
97  
98          FilenameParser parser = c.getFilenameParser();
99          assertTrue(parser.getClass().getName(), c.getFilenameParser() instanceof ExpressionFilenameParser);
100 
101         assertTrue(c.isConnected());
102         assertTrue(c.isStarted());
103         assertFalse(c.isRecursive());
104     }
105 
106     @Test
107     public void testTransformersOnEndpoints() throws Exception
108     {
109         Object transformer1 = muleContext.getEndpointFactory()
110             .getInboundEndpoint("ep1")
111             .getTransformers()
112             .get(0);
113         assertNotNull(transformer1);
114         assertEquals(FileToByteArray.class, transformer1.getClass());
115 
116         Object transformer2 = muleContext.getEndpointFactory()
117             .getInboundEndpoint("ep2")
118             .getTransformers()
119             .get(0);
120         assertNotNull(transformer2);
121         assertEquals(FileToString.class, transformer2.getClass());
122     }
123 
124     @Test
125     public void testFileFilter() throws Exception
126     {
127         Object service = muleContext.getRegistry().lookupObject("Test");
128         assertNotNull(service);
129 
130         InboundEndpoint endpoint;
131 
132         if (variant.equals(ConfigVariant.FLOW))
133         {
134             endpoint = (InboundEndpoint) ((Flow) service).getMessageSource();            
135         }
136         else
137         {
138             List endpoints = ((ServiceCompositeMessageSource) ((Service) service).getMessageSource()).getEndpoints();
139             assertEquals(1, endpoints.size());
140             endpoint = (InboundEndpoint) endpoints.get(0);
141         }
142 
143         Filter filter = endpoint.getFilter();
144         assertNotNull(filter);
145 
146         assertTrue(filter instanceof FilenameRegexFilter);
147         final FilenameRegexFilter f = (FilenameRegexFilter) filter;
148         assertEquals(false, f.isCaseSensitive());
149         assertEquals("(^SemDirector_Report-\\d)(.*)(tab$)", f.getPattern());
150     }
151 }