Skip to content

Commit

Permalink
make email subjects testable with junit #3611 #2710
Browse files Browse the repository at this point in the history
  • Loading branch information
pdurbin committed Jun 7, 2017
1 parent 52ada78 commit e8fdd34
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 42 deletions.
44 changes: 3 additions & 41 deletions src/main/java/edu/harvard/iq/dataverse/MailServiceBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,8 @@ public Boolean sendNotificationEmail(UserNotification notification){
Object objectOfNotification = getObjectOfNotification(notification);
if (objectOfNotification != null){
String messageText = getMessageTextBasedOnNotification(notification, objectOfNotification);
String subjectText = getSubjectTextBasedOnNotification(notification);
String rootDataverseName = dataverseService.findRootDataverse().getName();
String subjectText = MailUtil.getSubjectTextBasedOnNotification(notification, rootDataverseName);
if (!(messageText.isEmpty() || subjectText.isEmpty())){
retval = sendSystemEmail(emailAddress, subjectText, messageText);
} else {
Expand All @@ -201,46 +202,7 @@ public Boolean sendNotificationEmail(UserNotification notification){
}
return retval;
}

private String getSubjectTextBasedOnNotification(UserNotification userNotification) {
String rootDataverseName = dataverseService.findRootDataverse().getName();
switch (userNotification.getType()) {
case ASSIGNROLE:
return ResourceBundle.getBundle("Bundle").getString("notification.email.assign.role.subject");
case REVOKEROLE:
return ResourceBundle.getBundle("Bundle").getString("notification.email.revoke.role.subject");
case CREATEDV:
return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataverse.subject");
case REQUESTFILEACCESS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.request.file.access.subject");
case GRANTFILEACCESS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.grant.file.access.subject");
case REJECTFILEACCESS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.rejected.file.access.subject");
case MAPLAYERUPDATED:
return ResourceBundle.getBundle("Bundle").getString("notification.email.update.maplayer");
case MAPLAYERDELETEFAILED:
return ResourceBundle.getBundle("Bundle").getString("notification.email.maplayer.deletefailed.subject");
case CREATEDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataset.subject");
case SUBMITTEDDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.submit.dataset.subject");
case PUBLISHEDDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.publish.dataset.subject");
case RETURNEDDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.returned.dataset.subject");
case CREATEACC:
return BundleUtil.getStringFromBundle("notification.email.create.account.subject", Arrays.asList(BrandingUtil.getInstallationBrandName(rootDataverseName)));
case CHECKSUMFAIL:
return ResourceBundle.getBundle("Bundle").getString("notification.email.checksumfail.subject");
case FILESYSTEMIMPORT:
return ResourceBundle.getBundle("Bundle").getString("notification.email.import.filesystem.subject");
case CHECKSUMIMPORT:
return ResourceBundle.getBundle("Bundle").getString("notification.email.import.checksum.subject");
}
return "";
}


private String getDatasetManageFileAccessLink(DataFile datafile){
return systemConfig.getDataverseSiteUrl() + "/permissions-manage-files.xhtml?id=" + datafile.getOwner().getId();
}
Expand Down
43 changes: 43 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package edu.harvard.iq.dataverse.util;

import edu.harvard.iq.dataverse.UserNotification;
import edu.harvard.iq.dataverse.branding.BrandingUtil;
import static edu.harvard.iq.dataverse.settings.SettingsServiceBean.Key.SystemEmail;
import java.util.Arrays;
import java.util.ResourceBundle;
import java.util.logging.Logger;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
Expand All @@ -23,4 +27,43 @@ public static InternetAddress parseSystemAddress(String systemEmail) {
logger.fine("Email will not be sent because the " + SystemEmail + " setting is null.");
return null;
}

public static String getSubjectTextBasedOnNotification(UserNotification userNotification, String rootDataverseName) {
switch (userNotification.getType()) {
case ASSIGNROLE:
return ResourceBundle.getBundle("Bundle").getString("notification.email.assign.role.subject");
case REVOKEROLE:
return ResourceBundle.getBundle("Bundle").getString("notification.email.revoke.role.subject");
case CREATEDV:
return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataverse.subject");
case REQUESTFILEACCESS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.request.file.access.subject");
case GRANTFILEACCESS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.grant.file.access.subject");
case REJECTFILEACCESS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.rejected.file.access.subject");
case MAPLAYERUPDATED:
return ResourceBundle.getBundle("Bundle").getString("notification.email.update.maplayer");
case MAPLAYERDELETEFAILED:
return ResourceBundle.getBundle("Bundle").getString("notification.email.maplayer.deletefailed.subject");
case CREATEDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataset.subject");
case SUBMITTEDDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.submit.dataset.subject");
case PUBLISHEDDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.publish.dataset.subject");
case RETURNEDDS:
return ResourceBundle.getBundle("Bundle").getString("notification.email.returned.dataset.subject");
case CREATEACC:
return BundleUtil.getStringFromBundle("notification.email.create.account.subject", Arrays.asList(BrandingUtil.getInstallationBrandName(rootDataverseName)));
case CHECKSUMFAIL:
return ResourceBundle.getBundle("Bundle").getString("notification.email.checksumfail.subject");
case FILESYSTEMIMPORT:
return ResourceBundle.getBundle("Bundle").getString("notification.email.import.filesystem.subject");
case CHECKSUMIMPORT:
return ResourceBundle.getBundle("Bundle").getString("notification.email.import.checksum.subject");
}
return "";
}

}
26 changes: 25 additions & 1 deletion src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
package edu.harvard.iq.dataverse.util;

import org.junit.Test;
import edu.harvard.iq.dataverse.UserNotification;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.Before;

public class MailUtilTest {

private String rootDataverseName;
UserNotification userNotification = new UserNotification();

@Before
public void setUp() {
rootDataverseName = "LibraScholar";
userNotification = new UserNotification();
}

@Test
public void testParseSystemAddress() {
assertEquals("support@dataverse.org", MailUtil.parseSystemAddress("support@dataverse.org").getAddress());
Expand All @@ -19,4 +30,17 @@ public void testParseSystemAddress() {
assertEquals(null, MailUtil.parseSystemAddress("support1@dataverse.org, support2@dataverse.org"));
}

@Test
public void testSubjectCreateAccount() {
userNotification.setType(UserNotification.Type.CREATEACC);
assertEquals("LibraScholar: Your account has been created", MailUtil.getSubjectTextBasedOnNotification(userNotification, rootDataverseName));
}

@Test
public void testSubjectAssignRole() {
userNotification.setType(UserNotification.Type.ASSIGNROLE);
// FIXME: Instead of "Dataverse:" it should be "LibraScholar:"
assertEquals("Dataverse: You have been assigned a role", MailUtil.getSubjectTextBasedOnNotification(userNotification, rootDataverseName));
}

}

0 comments on commit e8fdd34

Please sign in to comment.