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.junit.jupiter.api.BeforeEach;
32 import org.junit.jupiter.api.Test;
33 import org.junit.jupiter.api.io.TempDir;
34
35
36
37
38 public class TestHomeDirectoryLocationStrategy {
39
40 private static final String FILE_NAME = "test.tst";
41
42
43 private static final String BASE_PATH = "sub";
44
45
46 @TempDir
47 public File tempFolder;
48
49
50 private FileSystem fileSystem;
51
52 @BeforeEach
53 public void setUp() throws Exception {
54 fileSystem = mock(FileSystem.class);
55 }
56
57
58
59
60
61
62
63 private HomeDirectoryLocationStrategy setUpStrategy(final boolean withBasePath) {
64 return new HomeDirectoryLocationStrategy(tempFolder.getAbsolutePath(), withBasePath);
65 }
66
67
68
69
70 @Test
71 public void testInitDefaults() {
72 final HomeDirectoryLocationStrategy strategy = new HomeDirectoryLocationStrategy();
73 assertEquals(System.getProperty("user.home"), strategy.getHomeDirectory());
74 assertFalse(strategy.isEvaluateBasePath());
75 }
76
77
78
79
80 @Test
81 public void testLocateFailedWithBasePath() throws IOException {
82 newFile(FILE_NAME, tempFolder);
83 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).fileName(FILE_NAME).create();
84 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
85 assertNull(strategy.locate(fileSystem, locator));
86 }
87
88
89
90
91 @Test
92 public void testLocateSuccessIgnoreBasePath() throws IOException {
93 final File file = newFile(FILE_NAME, tempFolder);
94 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).fileName(FILE_NAME).create();
95 final HomeDirectoryLocationStrategy strategy = setUpStrategy(false);
96 final URL url = strategy.locate(fileSystem, locator);
97 assertEquals(file.getAbsoluteFile(), FileLocatorUtils.fileFromURL(url).getAbsoluteFile());
98 }
99
100
101
102
103 @Test
104 public void testLocateSuccessInSubFolder() throws IOException {
105 final File sub = newFolder(BASE_PATH, tempFolder);
106 final File file = new File(sub, FILE_NAME);
107 assertTrue(file.createNewFile());
108 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).fileName(FILE_NAME).create();
109 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
110 final URL url = strategy.locate(fileSystem, locator);
111 assertEquals(file.getAbsoluteFile(), FileLocatorUtils.fileFromURL(url).getAbsoluteFile());
112 }
113
114
115
116
117 @Test
118 public void testLocateSuccessNoBasePath() throws IOException {
119 final File file = newFile(FILE_NAME, tempFolder);
120 final FileLocator locator = FileLocatorUtils.fileLocator().fileName(FILE_NAME).create();
121 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
122 final URL url = strategy.locate(fileSystem, locator);
123 assertEquals(file.getAbsoluteFile(), FileLocatorUtils.fileFromURL(url).getAbsoluteFile());
124 }
125
126
127
128
129 @Test
130 public void testNoFileName() {
131 final FileLocator locator = FileLocatorUtils.fileLocator().basePath(BASE_PATH).create();
132 final HomeDirectoryLocationStrategy strategy = setUpStrategy(true);
133 assertNull(strategy.locate(fileSystem, locator));
134 }
135 }