package com.celements.web.plugin.cmd;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import java.util.Properties;
import org.junit.Before;
import org.junit.Test;
import com.celements.common.test.AbstractBridgedComponentTestCase;
import com.xpn.xwiki.XWiki;
import com.xpn.xwiki.XWikiContext;
public class CelMailConfigurationTest extends AbstractBridgedComponentTestCase {
private CelMailConfiguration celMailConfiguration;
private XWiki xwiki;
private XWikiContext context;
@Before
public void setUp_CelMailConfigurationTest() throws Exception {
context = getContext();
xwiki = getWikiMock();
celMailConfiguration = new CelMailConfiguration();
}
@Test
public void testCelMailConfiguration() {
/* no complicated setup. read config if needed before getting some values */
replayDefault();
CelMailConfiguration testMailConfig = new CelMailConfiguration();
assertNotNull(testMailConfig);
assertEquals("", testMailConfig.getHost_internal());
assertEquals(-1, testMailConfig.getPort_internal());
verifyDefault();
}
@Test
public void testGetPort_internal_default() {
replayDefault();
assertEquals(-1, celMailConfiguration.getPort_internal());
verifyDefault();
}
@Test
public void testGetHost_internal_default() {
replayDefault();
assertEquals("", celMailConfiguration.getHost_internal());
verifyDefault();
}
@Test
public void testGetDefaultAdminSenderAddress() {
expect(xwiki.getXWikiPreference(eq("admin_email"), eq(
CelMailConfiguration.MAIL_DEFAULT_ADMIN_EMAIL_KEY), eq(""), same(context))).andReturn(
"test@unit.test");
replayDefault();
assertEquals("test@unit.test", celMailConfiguration.getDefaultAdminSenderAddress());
verifyDefault();
}
@Test
public void testGetDefaultGeneralSenderAddress() {
expect(xwiki.getXWikiPreference(eq("smtp_from"), eq(
CelMailConfiguration.MAIL_DEFAULT_SMTP_FROM_KEY), eq(""), same(context))).andReturn(
"test@unit.test");
replayDefault();
assertEquals("test@unit.test", celMailConfiguration.getDefaultGeneralSenderAddress());
verifyDefault();
}
@Test
public void testGetFrom() {
expect(xwiki.getXWikiPreference(eq("smtp_from"), eq(
CelMailConfiguration.MAIL_DEFAULT_SMTP_FROM_KEY), eq(""), same(context))).andReturn(
"test@unit.test").once();
replayDefault();
assertEquals("test@unit.test", celMailConfiguration.getFrom());
assertEquals("multiple reads must not lead to multiple config reads.", "test@unit.test",
celMailConfiguration.getFrom());
verifyDefault();
}
@Test
public void testGetFrom_setBackToEmpty() {
expect(xwiki.getXWikiPreference(eq("smtp_from"), eq(
CelMailConfiguration.MAIL_DEFAULT_SMTP_FROM_KEY), eq(""), same(context))).andReturn(
"test@unit.test").times(2);
replayDefault();
assertEquals("test@unit.test", celMailConfiguration.getFrom());
celMailConfiguration.setFrom("");
assertEquals("set back to empty must tricker the default configuration", "test@unit.test",
celMailConfiguration.getFrom());
verifyDefault();
}
@Test
public void testGetFrom_overwrittenBy_setFrom() {
expect(xwiki.getXWikiPreference(eq("smtp_from"), eq(
CelMailConfiguration.MAIL_DEFAULT_SMTP_FROM_KEY), eq(""), same(context))).andReturn(
"test@unit.test").anyTimes();
replayDefault();
celMailConfiguration.setFrom("myTest@specialUnit.test");
assertEquals("myTest@specialUnit.test", celMailConfiguration.getFrom());
verifyDefault();
}
@Test
public void testGetFrom_fallbackToAdminEmailAdress() {
expect(xwiki.getXWikiPreference(eq("smtp_from"), eq(
CelMailConfiguration.MAIL_DEFAULT_SMTP_FROM_KEY), eq(""), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("admin_email"), eq(
CelMailConfiguration.MAIL_DEFAULT_ADMIN_EMAIL_KEY), eq(""), same(context))).andReturn(
"test@unit.test").once();
replayDefault();
assertEquals("test@unit.test", celMailConfiguration.getFrom());
assertEquals("multiple reads must not lead to multiple config reads.", "test@unit.test",
celMailConfiguration.getFrom());
verifyDefault();
}
@Test
public void testusesAuthentication_localConfig_yes() {
celMailConfiguration.setSmtpUsername("username");
celMailConfiguration.setSmtpPassword("password");
replayDefault();
assertTrue(celMailConfiguration.usesAuthentication_localConfig());
verifyDefault();
}
@Test
public void testusesAuthentication_localConfig_smtp_username_empty() {
celMailConfiguration.setSmtpUsername("");
celMailConfiguration.setSmtpPassword("password");
replayDefault();
assertFalse(celMailConfiguration.usesAuthentication_localConfig());
verifyDefault();
}
@Test
public void testusesAuthentication_localConfig_smtp_password_empty() {
celMailConfiguration.setSmtpUsername("username");
celMailConfiguration.setSmtpPassword("");
replayDefault();
assertFalse(celMailConfiguration.usesAuthentication_localConfig());
verifyDefault();
}
@Test
public void testNoHostConfig_yes() {
replayDefault();
assertTrue(celMailConfiguration.noHostConfig());
verifyDefault();
}
@Test
public void testNoHostConfig_usingLocalSmtpAuth() {
celMailConfiguration.setSmtpUsername("username");
celMailConfiguration.setSmtpPassword("password");
replayDefault();
assertTrue(celMailConfiguration.usesAuthentication_localConfig());
assertFalse(celMailConfiguration.noHostConfig());
verifyDefault();
}
@Test
public void testNoHostConfig_usingLocalHost() {
celMailConfiguration.setHost("unit.test.host");
replayDefault();
assertFalse(celMailConfiguration.noHostConfig());
verifyDefault();
}
@Test
public void testNoHostConfig_usingLocalPort() {
celMailConfiguration.setPort(34);
replayDefault();
assertFalse(celMailConfiguration.noHostConfig());
verifyDefault();
}
@Test
public void testNoHostConfig_usingLocalProperties() {
celMailConfiguration.setExtraProperties("a=b,c=d");
replayDefault();
assertFalse(celMailConfiguration.noHostConfig());
Properties extProps = new Properties();
celMailConfiguration.appendExtraProperties_internal(extProps, true);
assertFalse(extProps.isEmpty());
verifyDefault();
}
@Test
public void testNoHostConfig_emptyProperties() {
celMailConfiguration.setExtraProperties("");
replayDefault();
Properties extProps = new Properties();
celMailConfiguration.appendExtraProperties_internal(extProps, true);
assertTrue(extProps.isEmpty());
verifyDefault();
}
@Test
public void testSetExtraProperties() {
celMailConfiguration.setExtraProperties("a=b,c=d");
replayDefault();
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("b", extProps.get("a"));
assertEquals("d", extProps.get("c"));
verifyDefault();
}
@Test
public void testReadServerDefaultHostConfiguration() {
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").anyTimes();
replayDefault();
celMailConfiguration.readServerDefaultHostConfiguration();
assertEquals("mySmtpUserName", celMailConfiguration.getSmtpUsername_internal());
assertEquals("myServerPassword", celMailConfiguration.getSmtpPassword_internal());
assertEquals("smtp.unit.test", celMailConfiguration.getHost_internal());
assertEquals(567, celMailConfiguration.getPort_internal());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("testValue", extProps.get("testProp"));
assertEquals("value2", extProps.get("prop2"));
verifyDefault();
}
@Test
public void testGetSmtpUsername_fallbackToDefault_completeConfig() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").once();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).once();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").once();
replayDefault();
assertEquals("mySmtpUserName", celMailConfiguration.getSmtpUsername());
assertEquals("myServerPassword", celMailConfiguration.getSmtpPassword());
assertEquals("smtp.unit.test", celMailConfiguration.getHost());
assertEquals(567, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("testValue", extProps.get("testProp"));
assertEquals("value2", extProps.get("prop2"));
verifyDefault();
}
@Test
public void testGetSmtpUsername_fallbackToDefault_onlyUsername() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).once();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"myLocalUsername").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").once();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).once();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").once();
replayDefault();
assertEquals("mySmtpUserName", celMailConfiguration.getSmtpUsername());
assertEquals("myServerPassword", celMailConfiguration.getSmtpPassword());
assertEquals("smtp.unit.test", celMailConfiguration.getHost());
assertEquals(567, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("testValue", extProps.get("testProp"));
assertEquals("value2", extProps.get("prop2"));
verifyDefault();
}
@Test
public void testGetSmtpUsername_fallbackToDefault_onlyPassword() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).once();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"myLocalPassword").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").once();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).once();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").once();
replayDefault();
assertEquals("mySmtpUserName", celMailConfiguration.getSmtpUsername());
assertEquals("myServerPassword", celMailConfiguration.getSmtpPassword());
assertEquals("smtp.unit.test", celMailConfiguration.getHost());
assertEquals(567, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("testValue", extProps.get("testProp"));
assertEquals("value2", extProps.get("prop2"));
verifyDefault();
}
@Test
public void testGetSmtpUsername_localHost() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn(
"myLocalHost").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).once();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").anyTimes();
replayDefault();
assertNull(celMailConfiguration.getSmtpUsername());
assertNull(celMailConfiguration.getSmtpPassword());
assertEquals("myLocalHost", celMailConfiguration.getHost());
assertEquals(25, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertTrue(extProps.isEmpty());
verifyDefault();
}
@Test
public void testGetSmtpUsername_localPort() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
567).once();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").anyTimes();
replayDefault();
assertNull(celMailConfiguration.getSmtpUsername());
assertNull(celMailConfiguration.getSmtpPassword());
assertEquals("", celMailConfiguration.getHost());
assertEquals(567, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertTrue(extProps.isEmpty());
verifyDefault();
}
@Test
public void testGetSmtpUsername_localExtraProps() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).once();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"testLocalProp=testLocalValue,localProp2=valueLocal2").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").anyTimes();
replayDefault();
assertNull(celMailConfiguration.getSmtpUsername());
assertNull(celMailConfiguration.getSmtpPassword());
assertEquals("", celMailConfiguration.getHost());
assertEquals(25, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("testLocalValue", extProps.get("testLocalProp"));
assertEquals("valueLocal2", extProps.get("localProp2"));
assertNull(extProps.get("testProp"));
assertNull(extProps.get("prop2"));
verifyDefault();
}
@Test
public void testGetSmtpUsername_localUsernameAndPassword() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).once();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"myLocalPassword").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"myLocalUsername").once();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myServerPassword").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpUserName").anyTimes();
replayDefault();
assertEquals("myLocalUsername", celMailConfiguration.getSmtpUsername());
assertEquals("myLocalPassword", celMailConfiguration.getSmtpPassword());
assertEquals("", celMailConfiguration.getHost());
assertEquals(25, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertTrue(extProps.isEmpty());
verifyDefault();
}
@Test
public void testGetSmtpUsername_fallbackToDefault_onlyUsername_NoPassword() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpAuthUserName").atLeastOnce();
replayDefault();
assertNull(celMailConfiguration.getSmtpUsername());
verifyDefault();
}
@Test
public void testGetSmtpUsername_fallbackToDefault_usernameAndPassword() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myNotSecurePassword").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpAuthUserName").once();
replayDefault();
assertEquals("mySmtpAuthUserName", celMailConfiguration.getSmtpUsername());
assertTrue("after setting server_username usesAuthentication_localConfig must be" + " true.",
celMailConfiguration.usesAuthentication_localConfig());
assertFalse("after setting server_username noHostConfig must be false.",
celMailConfiguration.noHostConfig());
assertEquals("multiple reads must not lead to multiple config reads.", "mySmtpAuthUserName",
celMailConfiguration.getSmtpUsername());
assertEquals("setting any smtp-server config must deactivated fallback to" + " 'localhost'", "",
celMailConfiguration.getHost());
verifyDefault();
}
@Test
public void testGetSmtpPassword_fallbackToDefault_usernameAndPassword() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myNotSecurePassword").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"mySmtpAuthUserName").once();
replayDefault();
assertEquals("myNotSecurePassword", celMailConfiguration.getSmtpPassword());
assertTrue("after setting server_username usesAuthentication_localConfig must be" + " true.",
celMailConfiguration.usesAuthentication_localConfig());
assertFalse("after setting server_username noHostConfig must be false.",
celMailConfiguration.noHostConfig());
assertEquals("multiple reads must not lead to multiple config reads.", "myNotSecurePassword",
celMailConfiguration.getSmtpPassword());
assertEquals("setting any smtp-server config must deactivated fallback to" + " 'localhost'", "",
celMailConfiguration.getHost());
verifyDefault();
}
@Test
public void testGetSmtpPassword_fallbackToDefault_only_password_NoUsername() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"myNotSecurePassword").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").once();
replayDefault();
assertNull(celMailConfiguration.getSmtpPassword());
assertFalse("after setting only server_username usesAuthentication_localConfig must"
+ " be false.", celMailConfiguration.usesAuthentication_localConfig());
verifyDefault();
}
@Test
public void testGetHost_fallbackToDefault() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn(
"smtp.unit.test").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").anyTimes();
replayDefault();
assertEquals("smtp.unit.test", celMailConfiguration.getHost());
assertEquals("multiple reads must not lead to multiple config reads.", "smtp.unit.test",
celMailConfiguration.getHost());
verifyDefault();
}
@Test
public void testGetHost_fallbackToDefault_noDefaultHost_usingLocalhost() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").anyTimes();
replayDefault();
assertEquals("localhost", celMailConfiguration.getHost());
assertEquals(25, celMailConfiguration.getPort());
assertTrue("after not setting any smtp-server configuration noHostConfig must still"
+ " be true.", celMailConfiguration.noHostConfig());
verifyDefault();
}
@Test
public void testGetHost_fallbackToDefault_deactivatedDefaultHost() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("-").once();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").anyTimes();
replayDefault();
assertEquals("empty string defaults to 'localhost' in javamail!", "-",
celMailConfiguration.getHost());
assertEquals("multiple reads must not lead to multiple config reads.", "-",
celMailConfiguration.getHost());
verifyDefault();
}
@Test
public void testGetPort_fallbackToDefault() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
567L).once();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").anyTimes();
replayDefault();
assertEquals(567, celMailConfiguration.getPort());
assertEquals("multiple reads must not lead to multiple config reads.", 567,
celMailConfiguration.getPort());
verifyDefault();
}
@Test
public void testGetPort_fallbackToDefault_noDefaultPort() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").anyTimes();
replayDefault();
assertEquals(25, celMailConfiguration.getPort());
assertTrue("after not setting any smtp-server configuration noHostConfig must still"
+ " be true.", celMailConfiguration.noHostConfig());
verifyDefault();
}
@Test
public void testSetProps_fallbackToDefault() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"testProp=testValue,prop2=value2").once();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").anyTimes();
replayDefault();
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("testValue", extProps.get("testProp"));
assertEquals("value2", extProps.get("prop2"));
// multiple reads must not lead to multiple config reads.
Properties extProps2 = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps2, true);
assertEquals("testValue", extProps2.get("testProp"));
assertEquals("value2", extProps2.get("prop2"));
verifyDefault();
}
@Test
public void testSetProps_fallbackToDefault_noDefaultProps() {
expect(xwiki.getXWikiPreference(eq("smtp_server"), same(context))).andReturn("").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server"), eq(""))).andReturn("").anyTimes();
expect(xwiki.getXWikiPreferenceAsInt(eq("smtp_port"), eq(-1), same(context))).andReturn(
-1).anyTimes();
expect(xwiki.ParamAsLong(eq("celements.mail.default.smtp_port"), eq(-1L))).andReturn(
-1L).anyTimes();
expect(xwiki.getXWikiPreference(eq("javamail_extra_props"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.javamail_extra_props"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_password"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_password"), eq(""))).andReturn(
"").anyTimes();
expect(xwiki.getXWikiPreference(eq("smtp_server_username"), same(context))).andReturn(
"").anyTimes();
expect(xwiki.Param(eq("celements.mail.default.smtp_server_username"), eq(""))).andReturn(
"").anyTimes();
replayDefault();
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertTrue(extProps.isEmpty());
assertTrue("after not setting any smtp-server configuration noHostConfig must still"
+ " be true.", celMailConfiguration.noHostConfig());
verifyDefault();
}
@Test
public void testCheckHostConfiguration_skipReadConfigIfManualSetup_complete() {
celMailConfiguration.setSmtpUsername("mySmtpUserName");
celMailConfiguration.setSmtpPassword("myServerPassword");
celMailConfiguration.setHost("smtp.unit.test");
celMailConfiguration.setPort(567);
celMailConfiguration.setExtraProperties("testProp=testValue\nprop2=value2");
replayDefault();
celMailConfiguration.checkHostConfiguration();
assertEquals("mySmtpUserName", celMailConfiguration.getSmtpUsername());
assertEquals("myServerPassword", celMailConfiguration.getSmtpPassword());
assertEquals("smtp.unit.test", celMailConfiguration.getHost());
assertEquals(567, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertEquals("testValue", extProps.get("testProp"));
assertEquals("value2", extProps.get("prop2"));
verifyDefault();
}
@Test
public void testCheckHostConfiguration_skipReadConfigIfManualSetup_incomplete() {
celMailConfiguration.setHost("smtp.unit.test");
replayDefault();
celMailConfiguration.checkHostConfiguration();
assertNull(celMailConfiguration.getSmtpUsername());
assertNull(celMailConfiguration.getSmtpPassword());
assertEquals("smtp.unit.test", celMailConfiguration.getHost());
assertEquals(25, celMailConfiguration.getPort());
Properties extProps = new Properties();
celMailConfiguration.appendExtraPropertiesTo(extProps, true);
assertTrue(extProps.isEmpty());
verifyDefault();
}
}