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