package ru.naumen.servacc.test.settings.impl; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static ru.naumen.servacc.test.settings.FileUtils.contents; import static ru.naumen.servacc.test.settings.FileUtils.write; import java.io.File; import java.io.IOException; import java.util.Arrays; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import ru.naumen.servacc.settings.impl.DefaultConfiguration; /** * @author Andrey Hitrin * @since 22.10.14 */ public class DefaultConfigurationTest { @Rule public TemporaryFolder root = new TemporaryFolder(); @Test public void newConfigMustBeCreatedWhenItDoesNotExist() throws IOException { File userHomeDir = root.newFolder(); File configFolder = new File(userHomeDir, ".serveraccess"); DefaultConfiguration.create(configFolder); assertThat(configFolder.exists(), is(true)); assertThat(Arrays.asList(configFolder.list()), containsInAnyOrder("accounts.xml", "serveraccess.properties", "window.properties")); } @Test public void defaultPropertiesFileMustContainALinkToDefaultAccountFile() throws IOException { File configFolder = root.newFolder(); File serverAccessProperties = new File(configFolder, "serveraccess.properties"); File accountsXML = new File(configFolder, "accounts.xml"); String fileContents = "source=file://" + accountsXML.getAbsolutePath(); DefaultConfiguration.create(configFolder); assertThat(contents(serverAccessProperties), hasItem(fileContents)); } @Test public void existingPropertiesFileMustNotBeOverwritten() throws IOException { File configFolder = root.newFolder(); File serverAccessProperties = new File(configFolder, "serveraccess.properties"); String fileContents = "source1=https://noda.com/private/sa/config.xml"; write(serverAccessProperties, fileContents); DefaultConfiguration.create(configFolder); assertThat(contents(serverAccessProperties), contains(fileContents)); } @Test public void defaultAccountsFileMustBeEmpty() throws IOException { File configFolder = root.newFolder(); File accountsXML = new File(configFolder, "accounts.xml"); DefaultConfiguration.create(configFolder); assertThat(contents(accountsXML), contains("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>", "<Accounts version=\"2\">", "</Accounts>")); } @Test public void existingAccountsFileMustNotBeOverwritten() throws IOException { File configFolder = root.newFolder(); File accountsXML = new File(configFolder, "accounts.xml"); String fileContents = "<Accounts version=\"2\"><Group name\"Hello\"/></Accounts>"; write(accountsXML, fileContents); DefaultConfiguration.create(configFolder); assertThat(contents(accountsXML), contains(fileContents)); } }