package com.constellio.model.conf.email;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.services.collections.CollectionsManager;
import com.constellio.model.services.emails.SmtpServerTestConfig;
import com.constellio.sdk.SDKPasswords;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.setups.Users;
public class EmailConfigurationsManagerAcceptanceTest extends ConstellioTest {
CollectionsManager collectionsManager;
private EmailServerConfiguration validConfig1;
private EmailServerConfiguration validConfig2;
private EmailConfigurationsManager manager;
private String anotherCollection = "anotherCollection";
Users users = new Users();
private SmtpServerTestConfig validConfig3;
@Before
public void setUp()
throws Exception {
prepareSystem(
withZeCollection().withAllTest(users),
withCollection(anotherCollection).withAllTestUsers()
);
collectionsManager = getAppLayerFactory().getCollectionsManager();
validConfig1 = new SmtpServerTestConfig();
validConfig2 = new SmtpServerTestConfig(){
@Override
public String getUsername() {
return "username2";
}
@Override
public String getDefaultSenderEmail() {
return null;
}
};
validConfig3 = new SmtpServerTestConfig(){
@Override
public String getUsername() {
return "username3";
}
@Override
public String getDefaultSenderEmail() {
return SDKPasswords.testSMTPUsername();
}
};
manager = getModelLayerFactory().getEmailConfigurationsManager();
}
@Test
public void givenEmailServerConfigsInTwoCollectionsThenSavedCorrectly()
throws Exception {
givenCollection("collection1");
givenCollection("collection2");
manager.addEmailServerConfiguration(validConfig1, "collection1");
manager.addEmailServerConfiguration(validConfig2, "collection2");
EmailServerConfiguration loadedConfig1 = manager.getEmailConfiguration("collection1", true);
assertThat(loadedConfig1.getPassword()).isEqualTo(validConfig1.getPassword());
assertThat(loadedConfig1.getUsername()).isEqualTo(validConfig1.getUsername());
assertThat(loadedConfig1.getProperties().size()).isEqualTo(validConfig1.getProperties().size());
for(String key : validConfig1.getProperties().keySet()){
assertThat(loadedConfig1.getProperties().get(key)).isEqualTo(validConfig1.getProperties().get(key));
}
EmailServerConfiguration collection2Config = manager.getEmailConfiguration("collection2", true);
assertThat(collection2Config.getUsername()).isEqualTo(validConfig2.getUsername());
assertThat(collection2Config.getPassword()).isEqualTo(validConfig2.getPassword());
}
@Test
public void whenDeleteCollectionConfigThenDeletedCorrectly()
throws Exception {
givenCollection("collection1");
givenCollection("collection2");
manager.addEmailServerConfiguration(validConfig1, "collection1");
manager.addEmailServerConfiguration(validConfig2, "collection2");
manager.deleteEmailServerConfiguration("collection1");
assertThat(manager.getEmailConfiguration("collection1", false)).isNull();
assertThat(manager.getEmailConfiguration("collection2", true).getPassword()).isEqualTo(validConfig2.getPassword());
}
@Test
public void whenUpdateCollectionConfigThenUpdatedCorrectly()
throws Exception {
givenCollection("collection1");
manager.addEmailServerConfiguration(validConfig1, "collection1");
manager.updateEmailServerConfiguration(validConfig2, "collection1", true);
EmailServerConfiguration loadedConfig2 = manager.getEmailConfiguration("collection1", true);
assertThat(loadedConfig2.getPassword()).isEqualTo(validConfig2.getPassword());
assertThat(loadedConfig2.getUsername()).isEqualTo(validConfig2.getUsername());
assertThat(loadedConfig2.getDefaultSenderEmail()).isEmpty();
assertThat(loadedConfig2.getProperties().size()).isEqualTo(validConfig2.getProperties().size());
for(String key : validConfig2.getProperties().keySet()){
assertThat(loadedConfig2.getProperties().get(key)).isEqualTo(validConfig2.getProperties().get(key));
}
}
@Test
public void whenUpdateCollectionConfigWithDefaultSenderEmailThenUpdatedCorrectly()
throws Exception {
givenCollection("collection1");
manager.addEmailServerConfiguration(validConfig1, "collection1");
manager.updateEmailServerConfiguration(validConfig3, "collection1", true);
EmailServerConfiguration loadedConfig2 = manager.getEmailConfiguration("collection1", true);
assertThat(loadedConfig2.getPassword()).isEqualTo(validConfig3.getPassword());
assertThat(loadedConfig2.getUsername()).isEqualTo(validConfig3.getUsername());
assertThat(loadedConfig2.getDefaultSenderEmail()).isEqualTo(validConfig3.getDefaultSenderEmail());
assertThat(loadedConfig2.getProperties().size()).isEqualTo(validConfig3.getProperties().size());
for(String key : validConfig2.getProperties().keySet()){
assertThat(loadedConfig2.getProperties().get(key)).isEqualTo(validConfig3.getProperties().get(key));
}
}
}