1
2
3
4
5
6
7
8
9
10
11 package org.mule.providers.file;
12
13 import org.mule.MuleManager;
14 import org.mule.impl.ImmutableMuleEndpoint;
15 import org.mule.tck.MuleTestUtils;
16 import org.mule.tck.providers.AbstractConnectorTestCase;
17 import org.mule.umo.UMOComponent;
18 import org.mule.umo.UMOEvent;
19 import org.mule.umo.endpoint.UMOEndpoint;
20 import org.mule.umo.endpoint.UMOImmutableEndpoint;
21 import org.mule.umo.provider.UMOConnector;
22 import org.mule.umo.provider.UMOMessageReceiver;
23 import org.mule.util.FileUtils;
24
25 import com.mockobjects.dynamic.Mock;
26
27 import java.io.File;
28 import java.util.Properties;
29
30 public class FileConnectorTestCase extends AbstractConnectorTestCase
31 {
32 static final long POLLING_FREQUENCY = 1234;
33 static final long POLLING_FREQUENCY_OVERRIDE = 4321;
34
35 private File validMessage;
36
37 protected void doSetUp() throws Exception
38 {
39 super.doSetUp();
40
41 File tempDir = FileUtils.newFile(MuleManager.getConfiguration().getWorkingDirectory(), "tmp");
42 if (!tempDir.exists())
43 {
44 tempDir.mkdirs();
45 }
46 validMessage = File.createTempFile("simple", ".mule", tempDir);
47 assertNotNull(validMessage);
48 }
49
50 protected void doTearDown() throws Exception
51 {
52
53
54 FileUtils.deleteTree(FileUtils.newFile(getTestConnector().getProtocol()));
55 super.doTearDown();
56 }
57
58
59
60
61
62
63 public UMOConnector getConnector() throws Exception
64 {
65 UMOConnector connector = new FileConnector();
66 connector.setName("testFile");
67 connector.initialise();
68 return connector;
69 }
70
71 public String getTestEndpointURI()
72 {
73 return "file://" + MuleManager.getConfiguration().getWorkingDirectory();
74 }
75
76
77
78
79
80
81 public void testDispatch() throws Exception
82 {
83 UMOConnector connector = getConnector();
84
85 Mock session = MuleTestUtils.getMockSession();
86 UMOEndpoint endpoint = getTestEndpoint("simple", UMOImmutableEndpoint.ENDPOINT_TYPE_SENDER);
87 UMOComponent component = getTestComponent(descriptor);
88 UMOEvent event = getTestEvent("TestData");
89
90 connector.registerListener(component, endpoint);
91 connector.startConnector();
92 connector.dispatch(new ImmutableMuleEndpoint("file:/foo", false), event);
93
94 session.verify();
95 }
96
97
98
99
100
101
102 public void testSend() throws Exception
103 {
104 UMOConnector connector = getConnector();
105
106 UMOEndpoint endpoint = getTestEndpoint("simple", UMOImmutableEndpoint.ENDPOINT_TYPE_SENDER);
107 UMOEvent event = getTestEvent("TestData");
108 UMOComponent component = getTestComponent(descriptor);
109
110 connector.registerListener(component, endpoint);
111 connector.startConnector();
112 connector.send(new ImmutableMuleEndpoint("file:/foo", false), event);
113
114 }
115
116 public Object getValidMessage() throws Exception
117 {
118 return validMessage;
119 }
120
121
122
123
124 public void testConnectorPollingFrequency() throws Exception
125 {
126 FileConnector connector = (FileConnector)getConnector();
127 connector.setPollingFrequency(POLLING_FREQUENCY);
128
129 UMOEndpoint endpoint = getTestEndpoint("simple", UMOImmutableEndpoint.ENDPOINT_TYPE_RECEIVER);
130 UMOComponent component = getTestComponent(descriptor);
131 UMOMessageReceiver receiver = connector.createReceiver(component, endpoint);
132 assertEquals("Connector's polling frequency must not be ignored.", POLLING_FREQUENCY,
133 ((FileMessageReceiver)receiver).getFrequency());
134 }
135
136
137
138
139 public void testPollingFrequencyEndpointOverride() throws Exception
140 {
141 FileConnector connector = (FileConnector)getConnector();
142
143 connector.setPollingFrequency(-1);
144
145 UMOEndpoint endpoint = getTestEndpoint("simple", UMOImmutableEndpoint.ENDPOINT_TYPE_RECEIVER);
146
147 Properties props = new Properties();
148
149 props.put(FileConnector.PROPERTY_POLLING_FREQUENCY, String.valueOf(POLLING_FREQUENCY_OVERRIDE));
150 endpoint.setProperties(props);
151
152 UMOComponent component = getTestComponent(descriptor);
153 UMOMessageReceiver receiver = connector.createReceiver(component, endpoint);
154 assertEquals("Polling frequency endpoint override must not be ignored.", POLLING_FREQUENCY_OVERRIDE,
155 ((FileMessageReceiver)receiver).getFrequency());
156 }
157 }