package org.peerbox.utils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.peerbox.app.config.UserConfig;
public class UserConfigUtilsTest {
private static Path originalDataFolder;
private static Path tempDataFolder;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
originalDataFolder = AppData.getDataFolder();
// use temporary app data folder
tempDataFolder = Paths.get(FileUtils.getTempDirectoryPath(), "userconfig_test");
AppData.setDataFolder(tempDataFolder);
AppData.createFolders();
FileUtils.cleanDirectory(AppData.getConfigFolder().toFile());
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
// restore other folder (initial)
AppData.setDataFolder(originalDataFolder);
// clear temporary folder
FileUtils.deleteQuietly(tempDataFolder.toFile());
}
@Test
public void testCreateUserConfig_ByUsername() {
String sha256 = "96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a"; // John
String username = "John";
Path expectedFile = Paths.get(String.format("%s.conf", sha256));
UserConfig cfg = UserConfigUtils.createUserConfig(username);
assertNotNull(cfg);
assertEquals(expectedFile, cfg.getConfigFile().getFileName());
// lower
cfg = UserConfigUtils.createUserConfig(username.toLowerCase());
assertNotNull(cfg);
assertEquals(expectedFile, cfg.getConfigFile().getFileName());
// upper
cfg = UserConfigUtils.createUserConfig(username.toUpperCase());
assertNotNull(cfg);
assertEquals(expectedFile, cfg.getConfigFile().getFileName());
}
@Test
public void testCreateUserConfig_ByFile() {
Path file = Paths.get(FileUtils.getTempDirectoryPath(), "userconfig_test.conf");
UserConfig cfg = UserConfigUtils.createUserConfig(file);
assertNotNull(cfg);
assertEquals(file, cfg.getConfigFile());
}
@Test
public void testGetAllConfigFiles() throws IOException {
// user 1
UserConfig cfgJohn = UserConfigUtils.createUserConfig("john");
cfgJohn.load();
cfgJohn.setUsername("john");
// user 2
UserConfig cfgSteven = UserConfigUtils.createUserConfig("steven");
cfgSteven.load();
cfgSteven.setUsername("steven");
// search files
Map<String, UserConfig> cfgFiles = UserConfigUtils.getAllConfigFiles();
assertEquals(2, cfgFiles.size());
assertTrue(cfgFiles.containsKey("john"));
assertTrue(cfgFiles.containsKey("steven"));
assertEquals("john", cfgFiles.get("john").getUsername());
assertEquals("steven", cfgFiles.get("steven").getUsername());
}
}