Store db parameters in Config object, not in CFB object.
[cfb.git] / test / net / jaekl / cfb / ConfigTest.java
index 3fafe87bf0c668cefae6a5db021bd958ee93ef0e..11bd5b2defe375fc3f887cc5f75a68515efa2e43 100644 (file)
@@ -1,24 +1,90 @@
 package net.jaekl.cfb;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
+import java.io.IOException;
+import java.util.List;
+
+import net.jaekl.qd.util.FileIOMock;
+import net.jaekl.qd.util.FileMock;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class ConfigTest {
+       private static final String CHRIS = "chris@localhost";
+       private static final String DB_HOST = "dbserver";
+       private static final int    DB_PORT = 1234;
+       private static final String DB_NAME = "Fred";
+       private static final String DB_PASS = "Pebbles";
+       private static final String DB_USER = "Wilma";
+       private static final String HUDSON = "hudson@jenkins.org";
+       private static final String MAIL_FROM = "findbugs@jaekl.net";
+       private static final String MAIL_TO = CHRIS + "," + HUDSON;
+       private static final String LOCALHOST = "localhost";
 
        private static final String SAMPLE1 = 
                          "; Path (relative or absolute) to the FINDBUGS_HOME, i.e., where FindBugs is installed\n"
                        + "FindBugsHome=../findbugs-3.0.1/\n"
                        + "; List (comma-separated) of email addresses to which notifications should be sent\n"
-                       + "notify=chris@localhost\n"
+                       + "notify=" + MAIL_TO + "\n"
                        + "\n"
                        + "; Mail server setup\n"
-                       + "mail.smtp.host=localhost\n"
-                       + "mail.from=findbugs@localhost\n";
+                       + "mail.smtp.host=" + LOCALHOST + "\n"
+                       + "mail.from=" + MAIL_FROM + "\n"
+                       + "\n"
+                       + "; Database\n"
+                       + "db.host=" + DB_HOST + "\n"
+                       + "db.port=" + DB_PORT + "\n"
+                       + "db.name=" + DB_NAME + "\n"
+                       + "db.user=" + DB_USER + "\n"
+                       + "db.pass=" + DB_PASS + "\n";
 
+       @BeforeClass 
+       public static void beforeClass() {
+               FileIOMock.mock_setInstance();
+       }
+       
+       @AfterClass
+       public static void afterClass() {
+               FileIOMock.mock_clearInstance();
+       }
+       
        @Test
-       public void testReadFile() {
-               // TODO:  wrap file access so that we can test this
+       public void testReadFile() throws IOException {
+               Config config = new Config();
+               
+               FileMock fm = new FileMock("config.properties");
+               fm.mock_setContent(SAMPLE1);
+               
+               config.readFile(fm);
+               
+               assertEquals(MAIL_FROM, config.getMailFrom());
+               assertEquals(LOCALHOST, config.getMailSmtpHost());
+               
+               List<String> notify = config.getNotify();
+               assertTrue(notify.contains(CHRIS));
+               assertTrue(notify.contains(HUDSON));
+               
+               assertEquals(DB_HOST, config.getDbHost());
+               assertEquals(DB_PORT, config.getDbPort());
+               assertEquals(DB_NAME, config.getDbName());
+               assertEquals(DB_USER, config.getDbUser());
+               assertEquals(DB_PASS, config.getDbPass());
+       }
+       
+       @Test
+       public void testReadEmptyFile() throws IOException {
+               Config config = new Config();
+               FileMock fm = new FileMock("empty.properties");
+               fm.mock_setContent("");
+               
+               config.readFile(fm);
+               
+               assertEquals("findbugs@localhost", config.getMailFrom());
+               assertEquals("localhost", config.getMailSmtpHost());
+               assertEquals(0, config.getNotify().size());
        }
-
 }