diff --git a/java/google/registry/reporting/icann/IcannReportingModule.java b/java/google/registry/reporting/icann/IcannReportingModule.java index 25114df4c..a11ba597b 100644 --- a/java/google/registry/reporting/icann/IcannReportingModule.java +++ b/java/google/registry/reporting/icann/IcannReportingModule.java @@ -25,7 +25,6 @@ import dagger.Provides; import google.registry.bigquery.BigqueryConnection; import google.registry.request.HttpException.BadRequestException; import google.registry.request.Parameter; -import google.registry.util.SendEmailService; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.util.Optional; @@ -115,11 +114,6 @@ public final class IcannReportingModule { } } - @Provides - static SendEmailService provideSendEmailService() { - return new SendEmailService(); - } - /** Dagger qualifier for the subdirectory we stage to/upload from. */ @Qualifier @Documented diff --git a/java/google/registry/ui/server/registrar/SendEmailUtils.java b/java/google/registry/ui/server/registrar/SendEmailUtils.java index 3de2523c5..90fcc5469 100644 --- a/java/google/registry/ui/server/registrar/SendEmailUtils.java +++ b/java/google/registry/ui/server/registrar/SendEmailUtils.java @@ -21,7 +21,6 @@ import com.google.common.base.Joiner; import com.google.common.collect.Streams; import com.google.common.flogger.FluentLogger; import google.registry.config.RegistryConfig.Config; -import google.registry.util.NonFinalForTesting; import google.registry.util.SendEmailService; import java.util.List; import java.util.Objects; @@ -39,18 +38,18 @@ public class SendEmailUtils { private final String gSuiteOutgoingEmailAddress; private final String gSuiteOutoingEmailDisplayName; + private final SendEmailService emailService; @Inject public SendEmailUtils( @Config("gSuiteOutgoingEmailAddress") String gSuiteOutgoingEmailAddress, - @Config("gSuiteOutoingEmailDisplayName") String gSuiteOutoingEmailDisplayName) { + @Config("gSuiteOutoingEmailDisplayName") String gSuiteOutoingEmailDisplayName, + SendEmailService emailService) { this.gSuiteOutgoingEmailAddress = gSuiteOutgoingEmailAddress; this.gSuiteOutoingEmailDisplayName = gSuiteOutoingEmailDisplayName; + this.emailService = emailService; } - @NonFinalForTesting - private static SendEmailService emailService = new SendEmailService(); - /** * Sends an email from Nomulus to the specified recipient(s). Returns true iff sending was * successful. diff --git a/java/google/registry/util/SendEmailService.java b/java/google/registry/util/SendEmailService.java index 0a73d315f..86c2a46d8 100644 --- a/java/google/registry/util/SendEmailService.java +++ b/java/google/registry/util/SendEmailService.java @@ -15,6 +15,8 @@ package google.registry.util; import java.util.Properties; +import javax.inject.Inject; +import javax.inject.Singleton; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; @@ -22,8 +24,12 @@ import javax.mail.Transport; import javax.mail.internet.MimeMessage; /** Wrapper around javax.mail's Transport.send that can be mocked for testing purposes. */ +@Singleton public class SendEmailService { + @Inject + SendEmailService() {}; + /** Returns a new MimeMessage using default App Engine transport settings. */ public Message createMessage() { return new MimeMessage(Session.getDefaultInstance(new Properties(), null)); diff --git a/javatests/google/registry/ui/server/registrar/RegistrarSettingsActionTestCase.java b/javatests/google/registry/ui/server/registrar/RegistrarSettingsActionTestCase.java index 95864dee4..5b38f0aa2 100644 --- a/javatests/google/registry/ui/server/registrar/RegistrarSettingsActionTestCase.java +++ b/javatests/google/registry/ui/server/registrar/RegistrarSettingsActionTestCase.java @@ -91,14 +91,14 @@ public class RegistrarSettingsActionTestCase { action.registrarChangesNotificationEmailAddresses = ImmutableList.of( "notification@test.example", "notification2@test.example"); action.sendEmailUtils = - new SendEmailUtils(getGSuiteOutgoingEmailAddress(), getGSuiteOutgoingEmailDisplayName()); + new SendEmailUtils( + getGSuiteOutgoingEmailAddress(), getGSuiteOutgoingEmailDisplayName(), emailService); action.registryEnvironment = RegistryEnvironment.get(); action.authResult = AuthResult.create( AuthLevel.USER, UserAuthInfo.create(new User("user@email.com", "email.com", "12345"), false)); inject.setStaticField(Ofy.class, "clock", clock); - inject.setStaticField(SendEmailUtils.class, "emailService", emailService); message = new MimeMessage(Session.getDefaultInstance(new Properties(), null)); when(emailService.createMessage()).thenReturn(message); when(req.getMethod()).thenReturn("POST"); diff --git a/javatests/google/registry/ui/server/registrar/SendEmailUtilsTest.java b/javatests/google/registry/ui/server/registrar/SendEmailUtilsTest.java index 8fc62ddf0..119554421 100644 --- a/javatests/google/registry/ui/server/registrar/SendEmailUtilsTest.java +++ b/javatests/google/registry/ui/server/registrar/SendEmailUtilsTest.java @@ -25,7 +25,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableList; -import google.registry.testing.InjectRule; import google.registry.util.SendEmailService; import java.util.Properties; import javax.mail.Message; @@ -35,7 +34,6 @@ import javax.mail.Session; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -44,9 +42,6 @@ import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class SendEmailUtilsTest { - @Rule - public final InjectRule inject = new InjectRule(); - private final SendEmailService emailService = mock(SendEmailService.class); private Message message; @@ -54,11 +49,11 @@ public class SendEmailUtilsTest { @Before public void init() { - inject.setStaticField(SendEmailUtils.class, "emailService", emailService); message = new MimeMessage(Session.getDefaultInstance(new Properties(), null)); when(emailService.createMessage()).thenReturn(message); sendEmailUtils = - new SendEmailUtils(getGSuiteOutgoingEmailAddress(), getGSuiteOutgoingEmailDisplayName()); + new SendEmailUtils( + getGSuiteOutgoingEmailAddress(), getGSuiteOutgoingEmailDisplayName(), emailService); } @Test