1
2
3
4
5
6
7
8
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
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
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
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
133
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 }