1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.mail2.jakarta.resolver;
18
19 import static org.junit.jupiter.api.Assertions.assertNotNull;
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import java.io.IOException;
24 import java.net.URL;
25
26 import org.apache.commons.mail2.jakarta.DataSourceResolver;
27 import org.junit.jupiter.api.BeforeEach;
28 import org.junit.jupiter.api.Test;
29
30
31
32
33 public class DataSourceCompositeResolverTest extends AbstractDataSourceResolverTest {
34
35 private DataSourceResolver[] dataSourceResolvers;
36 private DataSourceResolver[] dataSourceResolversMissing;
37
38 @BeforeEach
39 public void setUp() throws Exception {
40 final DataSourceUrlResolver urlResolver = new DataSourceUrlResolver(new URL("https://www.apache.org"), false);
41 final DataSourceUrlResolver urlResolverMissing = new DataSourceUrlResolver(new URL("https://does.not.exist"), false);
42 final DataSourceClassPathResolver classPathResolver = new DataSourceClassPathResolver("/images", false);
43 dataSourceResolvers = new DataSourceResolver[] { urlResolver, classPathResolver };
44 dataSourceResolversMissing = new DataSourceResolver[] { urlResolverMissing };
45 }
46
47 @Test
48 public void testExternalModification() throws Exception {
49 final DataSourceCompositeResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolvers, true);
50
51 final DataSourceResolver[] arr = dataSourceResolver.getDataSourceResolvers();
52
53
54 arr[0] = null;
55
56 final DataSourceResolver[] arr2 = dataSourceResolver.getDataSourceResolvers();
57
58
59 assertNotNull(arr2[0]);
60 }
61
62 @Test
63 public void testResolvingFilesLenient() throws Exception {
64 final DataSourceResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolvers, true);
65
66
67 assertTrue(toByteArray(dataSourceResolver.resolve("/images/feather-small.gif")).length > 0);
68
69
70 assertTrue(toByteArray(dataSourceResolver.resolve("/contentTypeTest.gif")).length > 0);
71 }
72
73 @Test
74 public void testResolvingFilesNonLenient() {
75 final DataSourceResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolversMissing, false);
76
77 assertThrows(IOException.class, () -> dataSourceResolver.resolve("./image/does-not-exist.gif"));
78 }
79
80 }