Fix bug when JAR file is stored in path with non-US-ASCII characters
[jSite.git] / src / test / java / de / todesbaum / jsite / main / ConfigurationLocatorTest.java
1 package de.todesbaum.jsite.main;
2
3 import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.CUSTOM;
4 import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.HOME_DIRECTORY;
5 import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.NEXT_TO_JAR_FILE;
6 import static java.util.Optional.empty;
7 import static java.util.Optional.of;
8 import static org.hamcrest.MatcherAssert.assertThat;
9 import static org.hamcrest.Matchers.endsWith;
10 import static org.hamcrest.Matchers.is;
11 import static org.mockito.Mockito.mock;
12 import static org.mockito.Mockito.when;
13
14 import java.io.File;
15
16 import org.junit.Rule;
17 import org.junit.Test;
18 import org.junit.rules.TemporaryFolder;
19
20 /**
21  * Unit test for {@link ConfigurationLocator}.
22  */
23 public class ConfigurationLocatorTest {
24
25         @Rule
26         public final TemporaryFolder temporaryFolder = new TemporaryFolder();
27
28         @Test
29         public void configurationLocatorPrefersHomeDirectoryIfJarFileCanNotBeFound() {
30                 JarFileLocator jarFileLocator = mock(JarFileLocator.class);
31                 when(jarFileLocator.locateJarFile()).thenReturn(empty());
32                 ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator);
33                 assertThat(locator.findPreferredLocation(), is(HOME_DIRECTORY));
34                 assertThat(locator.getFile(HOME_DIRECTORY), endsWith("/config7"));
35                 assertThat(locator.isValidLocation(HOME_DIRECTORY), is(true));
36         }
37
38         @Test
39         public void configurationLocatorUsesFileNextToJarFileIfJarFileIsFound() throws Exception {
40                 File jarFile = temporaryFolder.newFile("test.jar");
41                 temporaryFolder.newFile("jSite.conf");
42                 JarFileLocator jarFileLocator = mock(JarFileLocator.class);
43                 when(jarFileLocator.locateJarFile()).thenReturn(of(jarFile));
44                 ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator);
45                 assertThat(locator.findPreferredLocation(), is(NEXT_TO_JAR_FILE));
46                 assertThat(locator.getFile(NEXT_TO_JAR_FILE), endsWith("/jSite.conf"));
47                 assertThat(locator.isValidLocation(NEXT_TO_JAR_FILE), is(true));
48         }
49
50         @Test
51         public void customLocationCanBeSet() throws Exception {
52                 File configFile = temporaryFolder.newFile("jSite.conf");
53                 JarFileLocator jarFileLocator = mock(JarFileLocator.class);
54                 when(jarFileLocator.locateJarFile()).thenReturn(empty());
55                 ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator);
56                 locator.setCustomLocation(configFile.getPath());
57                 assertThat(locator.findPreferredLocation(), is(CUSTOM));
58                 assertThat(locator.getFile(CUSTOM), is(configFile.getPath()));
59                 assertThat(locator.isValidLocation(CUSTOM), is(true));
60         }
61
62 }