/*
* ====================================================================
* Copyright (c) 2005-2012 sventon project. All rights reserved.
*
* This software is licensed as described in the file LICENSE, which
* you should have received as part of this distribution. The terms
* are also available at http://www.sventon.org.
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.sventon.appl;
import org.junit.Test;
import org.sventon.model.SVNURL;
import java.util.Properties;
import static org.junit.Assert.*;
import static org.sventon.appl.RepositoryConfiguration.*;
public class RepositoryConfigurationTest {
@Test
public void testDefault() {
final String repositoryUrl = "svn://repositoryserver/repository";
final Properties props = new Properties();
props.setProperty(PROPERTY_KEY_REPOSITORY_URL, repositoryUrl);
final RepositoryConfiguration conf = RepositoryConfiguration.create("test", props);
assertNull(conf.getUserCredentials().getUserName());
assertNull(conf.getUserCredentials().getPassword());
assertNull(conf.getCacheCredentials().getUserName());
assertNull(conf.getCacheCredentials().getPassword());
assertEquals("test", conf.getName().toString());
assertEquals("svn://repositoryserver/repository", conf.getRepositoryDisplayUrl());
assertEquals("svn://repositoryserver/repository", conf.getRepositoryUrl());
assertEquals("/mailtemplate.html", conf.getMailTemplateFile());
assertEquals("/rsstemplate.html", conf.getRssTemplateFile());
assertEquals(20, conf.getRssItemsCount());
assertFalse(conf.isAccessControlEnabled());
assertFalse(conf.isCacheUsed());
assertFalse(conf.isIssueTrackerIntegrationEnabled());
assertFalse(conf.isZippedDownloadsAllowed());
assertTrue(conf.isEntryTrayEnabled());
}
@Test
public void testCreateRepositoryConfigurationTest() throws Exception {
final String repositoryUrl = "svn://repositoryserver/repository";
final Properties props = new Properties();
props.setProperty(PROPERTY_KEY_ALLOW_ZIP_DOWNLOADS, "true");
props.setProperty(PROPERTY_KEY_ENABLE_ACCESS_CONTROL, "true");
props.setProperty(PROPERTY_KEY_USER_NAME, "userName");
props.setProperty(PROPERTY_KEY_USER_PASSWORD, "userPassword");
props.setProperty(PROPERTY_KEY_REPOSITORY_URL, repositoryUrl);
props.setProperty(PROPERTY_KEY_USE_CACHE, "false");
props.setProperty(PROPERTY_KEY_RSS_ITEMS_COUNT, "20");
final RepositoryConfiguration conf = RepositoryConfiguration.create("test", props);
assertTrue(conf.isZippedDownloadsAllowed());
assertTrue(conf.isAccessControlEnabled());
assertEquals("userName", conf.getUserCredentials().getUserName());
assertEquals("userPassword", conf.getUserCredentials().getPassword());
assertEquals(repositoryUrl, conf.getRepositoryUrl());
assertEquals(repositoryUrl, conf.getRepositoryDisplayUrl());
assertEquals(SVNURL.parse(conf.getRepositoryUrl()), conf.getSVNURL());
assertFalse(conf.isCacheUsed());
assertEquals(20, conf.getRssItemsCount());
}
@Test
public void testSetRepositoryUrl() throws Exception {
RepositoryConfiguration conf = new RepositoryConfiguration("test");
conf.setRepositoryUrl("svn://localhost/svn");
assertEquals("svn://localhost/svn", conf.getRepositoryUrl());
assertEquals(SVNURL.parse("svn://localhost/svn"), conf.getSVNURL());
//trailing slashes should be removed
conf.setRepositoryUrl("svn://localhost/svn/");
assertEquals("svn://localhost/svn", conf.getRepositoryUrl());
assertEquals(SVNURL.parse("svn://localhost/svn"), conf.getSVNURL());
//so should trailing spaces
conf.setRepositoryUrl("svn://localhost/svn/ ");
assertEquals("svn://localhost/svn", conf.getRepositoryUrl());
assertEquals(SVNURL.parse("svn://localhost/svn"), conf.getSVNURL());
conf.setRepositoryUrl("svn://localhost/svn ");
assertEquals("svn://localhost/svn", conf.getRepositoryUrl());
assertEquals(SVNURL.parse("svn://localhost/svn"), conf.getSVNURL());
}
@Test
public void testGetAsProperties() throws Exception {
final RepositoryConfiguration conf = new RepositoryConfiguration("test");
try {
conf.getAsProperties();
fail("Should throw NPE");
} catch (NullPointerException npe) {
// expected
}
conf.setRepositoryUrl("http://localhost");
final Properties props = conf.getAsProperties();
assertEquals(10, props.size());
assertEquals("http://localhost", props.get(PROPERTY_KEY_REPOSITORY_URL));
assertEquals("http://localhost", props.get(PROPERTY_KEY_REPOSITORY_DISPLAY_URL));
assertNull(props.get(PROPERTY_KEY_USER_NAME));
assertNull(props.get(PROPERTY_KEY_USER_PASSWORD));
assertEquals("false", props.get(PROPERTY_KEY_USE_CACHE));
assertEquals("false", props.get(PROPERTY_KEY_ALLOW_ZIP_DOWNLOADS));
assertEquals("false", props.get(PROPERTY_KEY_ENABLE_ISSUE_TRACKER_INTEGRATION));
assertEquals("false", props.get(PROPERTY_KEY_ENABLE_ACCESS_CONTROL));
assertEquals("20", props.get(PROPERTY_KEY_RSS_ITEMS_COUNT));
assertEquals("/rsstemplate.html", props.get(PROPERTY_KEY_RSS_TEMPLATE_FILE));
assertEquals("/mailtemplate.html", props.get(PROPERTY_KEY_MAIL_TEMPLATE_FILE));
}
}