assertEquals("noone", cfg.getString("TEAM", null, "displayName"));
}
+
+ @Test
+ public void testStringFields() throws Exception
+ {
+ StoredUserConfig config = new StoredUserConfig(file);
+ config.setString("USER", "admin", "password", "secret");
+ config.setString("USER", "admin", "displayName", "marusha");
+ config.setString("USER", "admin", "email", "name@example.com");
+
+ config.setString("USER", "other", "password", "password");
+ config.setString("USER", "other", "displayName", "mama");
+ config.setString("USER", "other", "email", "other@example.com");
+ config.setString("USER", "other", "repository", "RW+:repo1");
+ config.setString("USER", "other", "repository", "RW+:repo2");
+
+ config.setString("USER", null, "displayName", "default");
+
+ config.save();
+
+ StoredConfig cfg = new FileBasedConfig(file, FS.detect());
+ cfg.load();
+ assertEquals("secret", cfg.getString("USER", "admin", "password"));
+ assertEquals("marusha", cfg.getString("USER", "admin", "displayName"));
+ assertEquals("name@example.com", cfg.getString("USER", "admin", "email"));
+
+ assertEquals("password", cfg.getString("USER", "other", "password"));
+ assertEquals("mama", cfg.getString("USER", "other", "displayName"));
+ assertEquals("other@example.com", cfg.getString("USER", "other", "email"));
+
+ String[] stringList = cfg.getStringList("USER", "other", "repository");
+ assertNotNull(stringList);
+ assertEquals(2, stringList.length);
+ int i = 0;
+ for (String s : stringList) {
+ if (s.equalsIgnoreCase("RW+:repo1")) i += 1;
+ else if (s.equalsIgnoreCase("RW+:repo2")) i += 2;
+ }
+ assertEquals("Not all repository strings found", 3, i);
+
+ assertEquals("default", cfg.getString("USER", null, "displayName"));
+ }
+
+
+ @Test
+ public void testBooleanFields() throws Exception
+ {
+ StoredUserConfig config = new StoredUserConfig(file);
+ config.setBoolean("USER", "admin", "emailMeOnMyTicketChanges", true);
+ config.setBoolean("USER", "master", "emailMeOnMyTicketChanges", false);
+ config.setBoolean("TEAM", "admin", "excludeFromFederation", true);
+ config.setBoolean("USER", null, "excludeFromFederation", false);
+
+ config.save();
+
+ StoredConfig cfg = new FileBasedConfig(file, FS.detect());
+ cfg.load();
+ assertTrue(cfg.getBoolean("USER", "admin", "emailMeOnMyTicketChanges", false));
+ assertFalse(cfg.getBoolean("USER", "master", "emailMeOnMyTicketChanges", true));
+ assertTrue(cfg.getBoolean("TEAM", "admin", "excludeFromFederation", false));
+ assertFalse(cfg.getBoolean("USER", null, "excludeFromFederation", true));
+ }
+
+
+ @Test
+ public void testHashEscape() throws Exception
+ {
+ StoredUserConfig config = new StoredUserConfig(file);
+ config.setString("USER", "admin", "role", "#admin");
+
+ config.setString("USER", "other", "role", "#none");
+ config.setString("USER", "other", "displayName", "big#");
+ config.setString("USER", "other", "email", "user#name@home.de");
+
+ config.save();
+
+ StoredConfig cfg = new FileBasedConfig(file, FS.detect());
+ cfg.load();
+ assertEquals("#admin", cfg.getString("USER", "admin", "role"));
+ assertEquals("#none", cfg.getString("USER", "other", "role"));
+ assertEquals("big#", cfg.getString("USER", "other", "displayName"));
+ assertEquals("user#name@home.de", cfg.getString("USER", "other", "email"));
+ }
+
+
+ @Test
+ public void testCtrlEscape() throws Exception
+ {
+ StoredUserConfig config = new StoredUserConfig(file);
+ config.setString("USER", "name", "password", "bing\bbong");
+ config.setString("USER", "name", "role", "domain\\admin");
+ config.setString("USER", "name", "displayName", "horny\n\telephant");
+ config.setString("USER", "name", "org", "\tbig\tblue");
+ config.setString("USER", "name", "unit", "the end\n");
+
+ config.setString("USER", null, "unit", "the\ndefault");
+
+ config.save();
+
+ StoredConfig cfg = new FileBasedConfig(file, FS.detect());
+ cfg.load();
+ assertEquals("bing\bbong", cfg.getString("USER", "name", "password"));
+ assertEquals("domain\\admin", cfg.getString("USER", "name", "role"));
+ assertEquals("horny\n\telephant", cfg.getString("USER", "name", "displayName"));
+ assertEquals("\tbig\tblue", cfg.getString("USER", "name", "org"));
+ assertEquals("the end\n", cfg.getString("USER", "name", "unit"));
+
+ assertEquals("the\ndefault", cfg.getString("USER", null, "unit"));
+ }
+
+
+ @Test
+ public void testQuoteEscape() throws Exception
+ {
+ StoredUserConfig config = new StoredUserConfig(file);
+ config.setString("USER", "dude", "password", "going\"places");
+ config.setString("USER", "dude", "role", "\"dude\"");
+ config.setString("USER", "dude", "displayName", "John \"The Dude\" Lebowski");
+ config.setString("USER", "dude", "repo", "\"front matter");
+ config.setString("USER", "dude", "peepo", "leadout\"");
+
+ config.save();
+
+ StoredConfig cfg = new FileBasedConfig(file, FS.detect());
+ cfg.load();
+ assertEquals("going\"places", cfg.getString("USER", "dude", "password"));
+ assertEquals("\"dude\"", cfg.getString("USER", "dude", "role"));
+ assertEquals("John \"The Dude\" Lebowski", cfg.getString("USER", "dude", "displayName"));
+ assertEquals("\"front matter", cfg.getString("USER", "dude", "repo"));
+ assertEquals("leadout\"", cfg.getString("USER", "dude", "peepo"));
+ }
+
+
+ @Test
+ public void testUTF8() throws Exception
+ {
+ StoredUserConfig config = new StoredUserConfig(file);
+ config.setString("USER", "ming", "password", "一\t二\n三");
+ config.setString("USER", "ming", "displayName", "白老鼠");
+ config.setString("USER", "ming", "peepo", "Mickey \"白老鼠\" Whitfield");
+
+ config.save();
+
+ StoredConfig cfg = new FileBasedConfig(file, FS.detect());
+ cfg.load();
+ assertEquals("一\t二\n三", cfg.getString("USER", "ming", "password"));
+ assertEquals("白老鼠", cfg.getString("USER", "ming", "displayName"));
+ assertEquals("Mickey \"白老鼠\" Whitfield", cfg.getString("USER", "ming", "peepo"));
+ }
+
}