View Javadoc

1   /*
2    * $Id: ExpressionFilenameParserTestCase.java 20321 2010-11-24 15:21:24Z dfeist $
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.DefaultMuleMessage;
14  import org.mule.api.MuleMessage;
15  import org.mule.tck.AbstractMuleTestCase;
16  
17  import java.util.Date;
18  
19  /**
20   * Test the syntax of the SimpleFilename parser
21   */
22  public class ExpressionFilenameParserTestCase extends AbstractMuleTestCase
23  {
24      private ExpressionFilenameParser parser;
25      private MuleMessage message;
26  
27      @Override
28      protected void doSetUp() throws Exception
29      {
30          super.doSetUp();
31  
32          parser = new ExpressionFilenameParser();
33          parser.setMuleContext(muleContext);
34  
35          message = new DefaultMuleMessage("hello", muleContext);
36          message.setOutboundProperty("foo", "bar");
37          message.setOutboundProperty(FileConnector.PROPERTY_ORIGINAL_FILENAME, "originalName");
38          message.setOutboundProperty(FileConnector.PROPERTY_FILENAME, "newName");
39      }
40  
41      public void testWigglyMuleStyleParsing()
42      {
43          String result = parser.getFilename(message, "Test1_#[function:count].txt");
44          assertEquals("Test1_0.txt", result);
45  
46          result = parser.getFilename(message, "Test2_#[function:datestamp-yyMMdd].txt");
47          assertDatestampWithYearMonthAndDayMatches(result);
48          
49          result = parser.getFilename(message, "Test3_#[function:datestamp].txt");
50          assertDefaultDatestampMatches(result);
51  
52          result = parser.getFilename(message, "Test4_#[function:systime].txt");
53          assertFalse(result.equals("Test4_#[function:systime].txt"));
54  
55          result = parser.getFilename(message, "Test5_#[function:uuid].txt");
56          assertFalse(result.equals("Test5_#[function:uuid].txt"));
57  
58          result = parser.getFilename(message, "Test6_#[function:count].txt");
59          assertEquals("Test6_1.txt", result);
60  
61          result = parser.getFilename(message, "Test7_#[header:originalFilename].txt");
62          assertEquals("Test7_originalName.txt", result);
63  
64          result = parser.getFilename(message, "Test8_#[header:foo].txt");
65          assertEquals("Test8_bar.txt", result);
66  
67          result = parser.getFilename(message, "Test9_#[header:xxx?].txt");
68          assertEquals("Test9_#[header:xxx?].txt", result);
69  
70          try
71          {
72              result = parser.getFilename(message, "Test9_#[header:xxx].txt");
73              fail("Property xxx is not available");
74          }
75          catch (Exception e)
76          {
77              // Expected
78          }
79      }
80  
81      public void testSquareStyleParsing()
82      {
83          String result = parser.getFilename(message, "Test1_[function:count].txt");
84          assertEquals("Test1_0.txt", result);
85  
86          result = parser.getFilename(message, "Test2_[function:dateStamp-yyMMdd].txt");
87          assertDatestampWithYearMonthAndDayMatches(result);
88  
89          result = parser.getFilename(message, "Test3_[function:dateStamp].txt");
90          assertDefaultDatestampMatches(result);
91  
92          result = parser.getFilename(message, "Test4_[function:systime].txt");
93          assertFalse(result.equals("Test4_[function:systime].txt"));
94  
95          result = parser.getFilename(message, "Test5_[function:uuid].txt");
96          assertFalse(result.equals("Test5_[function:uuid].txt"));
97  
98          result = parser.getFilename(message, "Test6_[function:count].txt");
99          assertEquals("Test6_1.txt", result);
100 
101         result = parser.getFilename(message, "Test7_[header:originalFilename].txt");
102         assertEquals("Test7_originalName.txt", result);
103 
104         result = parser.getFilename(message, "Test8_[header:foo].txt");
105         assertEquals("Test8_bar.txt", result);
106 
107         try
108         {
109             result = parser.getFilename(message, "Test9_[header:xxx].txt");
110             fail("Property xxx is not available");
111         }
112         catch (Exception e)
113         {
114             // Expected
115         }
116 
117         result = parser.getFilename(message, "Test9_[header:xxx?].txt");
118         assertEquals("Test9_[header:xxx?].txt", result);
119     }
120 
121     private void assertDatestampWithYearMonthAndDayMatches(String result)
122     {
123         Date now = new Date();
124         String expected = String.format("Test2_%1$ty%1$tm%1$td.txt", now);
125         assertEquals(expected, result);
126     }
127 
128     private void assertDefaultDatestampMatches(String result)
129     {
130         Date now = new Date();
131 
132         // can't compare exactly as the time differs between formatting the expected
133         // result and the actual invocation of the function
134         String expected = String.format("Test3_%1$td-%1$tm-%1$ty_%1$tH-%1$tM-.*.txt", now);
135 
136         assertTrue(result.matches(expected));
137     }
138 }