1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.io;
18
19 import static org.apache.commons.configuration2.TempDirUtils.newFile;
20 import static org.apache.commons.configuration2.TempDirUtils.newFolder;
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertFalse;
23 import static org.junit.jupiter.api.Assertions.assertNull;
24 import static org.junit.jupiter.api.Assertions.assertTrue;
25 import static org.mockito.Mockito.mock;
26
27 import java.io.File;
28 import java.io.IOException;
29 import java.net.URL;
30
31 import org.apache.commons.lang3.SystemProperties;
32 import org.junit.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.Test;
34 import org.junit.jupiter.api.io.TempDir;
35
36
37
38
39 public class TestHomeDirectoryLocationStrategy {
40
41
42 private static final String FILE_NAME = "test.tst";
43
44
45 private static final String BASE_PATH = "sub";
46
47
48 @TempDir
49 public File tempFolder;
50
51
52 private FileSystem fileSystem;
53
54 @BeforeEach
55 public void setUp() throws Exception {
56 fileSystem = mock(FileSystem.class);
57 }
58
59
60
61
62
63
64
65 private HomeDirectoryLocationStrategy setUpStrategy(final boolean withBasePath) {
66 return new HomeDirectoryLocationStrategy(tempFolder.getAbsolutePath(), withBasePath);
67 }
68
69
70
71
72 @Test
73 void testInitDefaults() {
74 final HomeDirectoryLocationStrategy strategy = new HomeDirectoryLocationStrategy();
75 assertEquals(SystemProperties.getUserHome(), strategy.getHomeDirectory());
76 assertFalse(strategy.isEvaluateBasePath());
77 }
78
79
80
81
82 @Test
83 void testLocateFailedWithBasePath() throws IOException {
84 newFile(FILE_NAME, tempFolder);
85 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).fileName(FILE_NAME).create();
86 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
87 assertNull(strategy.locate(fileSystem, locator));
88 }
89
90
91
92
93 @Test
94 void testLocateSuccessIgnoreBasePath() throws IOException {
95 final File file = newFile(FILE_NAME, tempFolder);
96 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).fileName(FILE_NAME).create();
97 final HomeDirectoryLocationStrategy strategy = setUpStrategy(false);
98 final URL url = strategy.locate(fileSystem, locator);
99 assertEquals(file.getAbsoluteFile(), FileLocatorUtils.fileFromURL(url).getAbsoluteFile());
100 }
101
102
103
104
105 @Test
106 void testLocateSuccessInSubFolder() throws IOException {
107 final File sub = newFolder(BASE_PATH, tempFolder);
108 final File file = new File(sub, FILE_NAME);
109 assertTrue(file.createNewFile());
110 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).fileName(FILE_NAME).create();
111 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
112 final URL url = strategy.locate(fileSystem, locator);
113 assertEquals(file.getAbsoluteFile(), FileLocatorUtils.fileFromURL(url).getAbsoluteFile());
114 }
115
116
117
118
119 @Test
120 void testLocateSuccessNoBasePath() throws IOException {
121 final File file = newFile(FILE_NAME, tempFolder);
122 final FileLocator locator = FileLocatorUtils.fileLocator().fileName(FILE_NAME).create();
123 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
124 final URL url = strategy.locate(fileSystem, locator);
125 assertEquals(file.getAbsoluteFile(), FileLocatorUtils.fileFromURL(url).getAbsoluteFile());
126 }
127
128
129
130
131 @Test
132 void testNoFileName() {
133 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).create();
134 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
135 assertNull(strategy.locate(fileSystem, locator));
136 }
137 }