1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.mail.resolver;
18
19 import junit.framework.TestCase;
20 import org.apache.commons.io.IOUtils;
21 import org.apache.commons.mail.DataSourceResolver;
22
23 import javax.activation.DataSource;
24 import java.io.IOException;
25 import java.io.InputStream;
26 import java.net.URL;
27
28
29
30
31
32
33 public class DataSourceCompositeResolverTest extends TestCase
34 {
35 public DataSourceCompositeResolverTest(String name)
36 {
37 super(name);
38 }
39
40 public void testResolvingFilesLenient() throws Exception
41 {
42 DataSourceResolver urlResolver = new DataSourceUrlResolver(new URL("http://www.apache.org"), false);
43 DataSourceResolver classPathResolver = new DataSourceClassPathResolver("/images", false);
44 DataSourceResolver[] dataSourceResolvers = new DataSourceResolver[] { urlResolver, classPathResolver };
45 DataSourceResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolvers, true);
46
47
48 assertTrue(toByteArray(dataSourceResolver.resolve("/images/feather-small.gif")).length > 0);
49
50
51 assertTrue(toByteArray(dataSourceResolver.resolve("/contentTypeTest.gif")).length > 0);
52 }
53
54 public void testResolvingFilesNonLenient() throws Exception
55 {
56 DataSourceResolver urlResolver = new DataSourceUrlResolver(new URL("http://www.apache.org"), false);
57 DataSourceResolver classPathResolver = new DataSourceClassPathResolver("/images", false);
58 DataSourceResolver[] dataSourceResolvers = new DataSourceResolver[] { urlResolver, classPathResolver };
59 DataSourceResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolvers, false);
60
61 try
62 {
63 dataSourceResolver.resolve("./image/does-not-exist.gif");
64 fail("Expected an IOException");
65 }
66 catch(IOException e)
67 {
68
69 return;
70 }
71 }
72
73 public void testExternalModification() throws Exception
74 {
75 DataSourceResolver urlResolver = new DataSourceUrlResolver(new URL("http://www.apache.org"), false);
76 DataSourceResolver classPathResolver = new DataSourceClassPathResolver("/images", false);
77 DataSourceResolver[] dataSourceResolvers = new DataSourceResolver[] { urlResolver, classPathResolver };
78 DataSourceCompositeResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolvers, true);
79
80 DataSourceResolver[] arr = dataSourceResolver.getDataSourceResolvers();
81
82
83 arr[0] = null;
84
85 DataSourceResolver[] arr2 = dataSourceResolver.getDataSourceResolvers();
86
87
88 assertNotNull(arr2[0]);
89 }
90
91 private byte[] toByteArray(DataSource dataSource) throws IOException
92 {
93 if(dataSource != null)
94 {
95 InputStream is = dataSource.getInputStream();
96 return IOUtils.toByteArray(is);
97 }
98 else
99 {
100 return null;
101 }
102 }
103 }