package de.slackspace.alfa.properties; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.util.Properties; import org.junit.Test; public class PropertyHandlerTest { private PropertyHandler cut; @Test public void testWriteProperties() throws FileNotFoundException, IOException { String filename = "target/test-classes/testWrite.properties"; cut = new PropertyHandler(filename); cut.setProperty("key1", "value1"); cut.setProperty("key2", "value2"); cut.writeProperties(); File file = new File(filename); assertTrue(file.exists()); Properties loadedProperties = new Properties(); loadedProperties.load(new FileReader(filename)); assertEquals("value1", loadedProperties.get("key1")); assertEquals("value2", loadedProperties.get("key2")); } @Test public void testReadProperties() throws FileNotFoundException, IOException { String filename = "target/test-classes/testRead.properties"; cut = new PropertyHandler(filename); Properties propertiesToWrite = createProperties(); propertiesToWrite.store(new FileOutputStream(filename), filename); assertEquals("value1", cut.getProperty("key1")); assertEquals("value2", cut.getProperty("key2")); } @Test public void testReloadProperties() throws FileNotFoundException, IOException { String filename = "target/test-classes/testReload.properties"; cut = new PropertyHandler(filename); cut.setProperty("key1", "value1"); cut.setProperty("key2", "value2"); cut.writeProperties(); assertEquals("value1", cut.getProperty("key1")); assertEquals("value2", cut.getProperty("key2")); cut.setProperty("key1", "newValue"); cut.writeProperties(); assertEquals("newValue", cut.getProperty("key1")); } @Test public void testGetProperty() { String filename = "target/test-classes/testGetProperty.properties"; cut = new PropertyHandler(filename); cut.setProperty("key.1", "A"); cut.setProperty("key.2", "B"); cut.setProperty("key.3", "C"); cut.writeProperties(); assertEquals("A", cut.getProperty("key", 1)); assertEquals("B", cut.getProperty("key", 2)); assertEquals("C", cut.getProperty("key", 3)); } @Test public void testSetProperty() { String filename = "target/test-classes/testSetProperty.properties"; cut = new PropertyHandler(filename); cut.setProperty("key", "A", 1); cut.setProperty("key", "B", 2); cut.setProperty("key", "C", 3); cut.writeProperties(); assertEquals("A", cut.getProperty("key", 1)); assertEquals("B", cut.getProperty("key", 2)); assertEquals("C", cut.getProperty("key", 3)); } @Test public void testGetNumberOfAccountPropertiesExpectedThree() { String filename = "target/test-classes/testGetNumberOfAccountsThree.properties"; cut = new PropertyHandler(filename); cut.setProperty("accountName.1", "value1"); cut.setProperty("accountName.2", "value2"); cut.setProperty("accountName.3", "value3"); cut.writeProperties(); assertEquals(3, cut.getNumberOfAccounts()); } @Test public void testGetNumberOfAccountPropertiesExpectedOne() { String filename = "target/test-classes/testGetNumberOfAccountsOne.properties"; cut = new PropertyHandler(filename); cut.setProperty("accountName.1", "value1"); cut.writeProperties(); assertEquals(1, cut.getNumberOfAccounts()); } @Test(expected=IllegalArgumentException.class) public void testConstructorHandleNull() { new PropertyHandler(null); } @Test(expected=IllegalArgumentException.class) public void testConstructorHandleEmpty() { new PropertyHandler(""); } @Test public void testCreateAccountUrl() { String filename = "target/test-classes/dummy.properties"; cut = new PropertyHandler(filename); assertEquals("https://test.table.core.windows.net", cut.getAccountUrl("test")); } @Test public void testCreateAccountUrlNull() { String filename = "target/test-classes/dummy.properties"; cut = new PropertyHandler(filename); assertEquals("https://null.table.core.windows.net", cut.getAccountUrl(null)); } // @Test(expected=ConfigurationException.class) // public void testWritePropertiesWithException() throws IOException { // PropertyHandler cut = new PropertyHandler("test"); // // Properties p = mock(Properties.class); // Mockito.doThrow(new IOException()).when(p).store(Mockito.any(Writer.class), Mockito.anyString()); // // cut.writeProperties(p); // } private Properties createProperties() { Properties p = new Properties(); p.setProperty("key1", "value1"); p.setProperty("key2", "value2"); return p; } }