Using Gmail for most use cases (#2126)

* Using Gmail for most use cases
This commit is contained in:
Weimin Yu
2023-08-28 11:11:59 -04:00
committed by GitHub
parent 7b59c4abbf
commit e6f9b1c7e6
13 changed files with 58 additions and 57 deletions
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.verifyNoInteractions;
import com.google.common.collect.ImmutableList;
import com.google.common.testing.TestLogHandler;
import google.registry.groups.GmailClient;
import google.registry.model.billing.BillingBase.RenewalPriceBehavior;
import google.registry.model.contact.Contact;
import google.registry.model.domain.token.AllocationToken;
@@ -39,7 +40,6 @@ import google.registry.testing.DatabaseHelper;
import google.registry.testing.FakeClock;
import google.registry.ui.server.SendEmailUtils;
import google.registry.util.EmailMessage;
import google.registry.util.SendEmailService;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.internet.InternetAddress;
@@ -77,7 +77,7 @@ public class CheckBulkComplianceActionTest {
private final TestLogHandler logHandler = new TestLogHandler();
private final Logger loggerToIntercept =
Logger.getLogger(CheckBulkComplianceAction.class.getCanonicalName());
private final SendEmailService emailService = mock(SendEmailService.class);
private final GmailClient gmailClient = mock(GmailClient.class);
private Contact contact;
private BulkPricingPackage bulkPricingPackage;
private SendEmailUtils sendEmailUtils;
@@ -91,7 +91,7 @@ public class CheckBulkComplianceActionTest {
new InternetAddress("outgoing@registry.example"),
"UnitTest Registry",
ImmutableList.of("notification@test.example", "notification2@test.example"),
emailService);
gmailClient);
createTld("tld");
action =
new CheckBulkComplianceAction(
@@ -143,7 +143,7 @@ public class CheckBulkComplianceActionTest {
.build());
action.run();
verifyNoInteractions(emailService);
verifyNoInteractions(gmailClient);
assertAboutLogs()
.that(logHandler)
.hasLogAtLevelWithMessage(
@@ -176,7 +176,7 @@ public class CheckBulkComplianceActionTest {
Level.INFO,
"Bulk pricing package with bulk token abc123 has exceeded their max domain creation"
+ " limit by 1 name(s).");
verify(emailService).sendEmail(emailCaptor.capture());
verify(gmailClient).sendEmail(emailCaptor.capture());
EmailMessage emailMessage = emailCaptor.getValue();
assertThat(emailMessage.subject()).isEqualTo(CREATE_LIMIT_EMAIL_SUBJECT);
assertThat(emailMessage.body())
@@ -248,7 +248,7 @@ public class CheckBulkComplianceActionTest {
Level.INFO,
"Bulk pricing package with bulk token token has exceeded their max domain creation"
+ " limit by 1 name(s).");
verify(emailService, times(2)).sendEmail(any(EmailMessage.class));
verify(gmailClient, times(2)).sendEmail(any(EmailMessage.class));
}
@Test
@@ -292,7 +292,7 @@ public class CheckBulkComplianceActionTest {
.that(logHandler)
.hasLogAtLevelWithMessage(
Level.INFO, "Found no bulk pricing packages over their create limit.");
verifyNoInteractions(emailService);
verifyNoInteractions(gmailClient);
}
@Test
@@ -305,7 +305,7 @@ public class CheckBulkComplianceActionTest {
.build());
action.run();
verifyNoInteractions(emailService);
verifyNoInteractions(gmailClient);
assertAboutLogs()
.that(logHandler)
.hasLogAtLevelWithMessage(
@@ -365,7 +365,7 @@ public class CheckBulkComplianceActionTest {
Level.INFO,
"Bulk pricing package with bulk token abc123 has exceed their max active domains limit"
+ " by 1 name(s).");
verify(emailService).sendEmail(emailCaptor.capture());
verify(gmailClient).sendEmail(emailCaptor.capture());
EmailMessage emailMessage = emailCaptor.getValue();
assertThat(emailMessage.subject()).isEqualTo(DOMAIN_LIMIT_WARNING_EMAIL_SUBJECT);
assertThat(emailMessage.body())
@@ -442,7 +442,7 @@ public class CheckBulkComplianceActionTest {
Level.INFO,
"Bulk pricing package with bulk token token has exceed their max active domains limit"
+ " by 1 name(s).");
verify(emailService, times(2)).sendEmail(any(EmailMessage.class));
verify(gmailClient, times(2)).sendEmail(any(EmailMessage.class));
}
@Test
@@ -479,7 +479,7 @@ public class CheckBulkComplianceActionTest {
Level.INFO,
"Bulk pricing package with bulk token abc123 has exceed their max active domains limit"
+ " by 1 name(s).");
verifyNoInteractions(emailService);
verifyNoInteractions(gmailClient);
BulkPricingPackage packageAfterCheck =
tm().transact(() -> BulkPricingPackage.loadByTokenString(token.getToken()).get());
assertThat(packageAfterCheck.getLastNotificationSent().get())
@@ -520,7 +520,7 @@ public class CheckBulkComplianceActionTest {
Level.INFO,
"Bulk pricing package with bulk token abc123 has exceed their max active domains limit"
+ " by 1 name(s).");
verify(emailService).sendEmail(emailCaptor.capture());
verify(gmailClient).sendEmail(emailCaptor.capture());
EmailMessage emailMessage = emailCaptor.getValue();
assertThat(emailMessage.subject()).isEqualTo(DOMAIN_LIMIT_WARNING_EMAIL_SUBJECT);
assertThat(emailMessage.body())
@@ -565,7 +565,7 @@ public class CheckBulkComplianceActionTest {
Level.INFO,
"Bulk pricing package with bulk token abc123 has exceed their max active domains limit"
+ " by 1 name(s).");
verify(emailService).sendEmail(emailCaptor.capture());
verify(gmailClient).sendEmail(emailCaptor.capture());
EmailMessage emailMessage = emailCaptor.getValue();
assertThat(emailMessage.subject()).isEqualTo(DOMAIN_LIMIT_UPGRADE_EMAIL_SUBJECT);
assertThat(emailMessage.body())
@@ -32,6 +32,7 @@ import com.google.common.collect.ImmutableSortedMap;
import google.registry.batch.SendExpiringCertificateNotificationEmailAction.CertificateType;
import google.registry.batch.SendExpiringCertificateNotificationEmailAction.RegistrarInfo;
import google.registry.flows.certs.CertificateChecker;
import google.registry.groups.GmailClient;
import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.RegistrarAddress;
import google.registry.model.registrar.RegistrarPoc;
@@ -41,7 +42,6 @@ import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationT
import google.registry.testing.FakeClock;
import google.registry.testing.FakeResponse;
import google.registry.util.SelfSignedCaCertificate;
import google.registry.util.SendEmailService;
import java.security.cert.X509Certificate;
import java.util.Optional;
import javax.annotation.Nullable;
@@ -75,7 +75,7 @@ class SendExpiringCertificateNotificationEmailActionTest {
new JpaTestExtensions.Builder().buildIntegrationTestExtension();
private final FakeClock clock = new FakeClock(DateTime.parse("2021-05-24T20:21:22Z"));
private final SendEmailService sendEmailService = mock(SendEmailService.class);
private final GmailClient sendEmailService = mock(GmailClient.class);
private CertificateChecker certificateChecker;
private SendExpiringCertificateNotificationEmailAction action;
private Registrar sampleRegistrar;
@@ -50,6 +50,7 @@ import google.registry.dns.DnsMetrics.ActionStatus;
import google.registry.dns.DnsMetrics.CommitStatus;
import google.registry.dns.DnsMetrics.PublishStatus;
import google.registry.dns.writer.DnsWriter;
import google.registry.groups.GmailClient;
import google.registry.model.domain.Domain;
import google.registry.model.tld.Tld;
import google.registry.persistence.transaction.JpaTestExtensions;
@@ -63,7 +64,6 @@ import google.registry.testing.FakeLockHandler;
import google.registry.testing.FakeResponse;
import google.registry.testing.Lazies;
import google.registry.util.EmailMessage;
import google.registry.util.SendEmailService;
import java.util.Set;
import javax.mail.internet.InternetAddress;
import org.joda.time.DateTime;
@@ -90,7 +90,7 @@ public class PublishDnsUpdatesActionTest {
private InternetAddress outgoingRegistry;
private Lazy<InternetAddress> registrySupportEmail;
private Lazy<InternetAddress> registryCcEmail;
private final SendEmailService emailService = mock(SendEmailService.class);
private final GmailClient emailService = mock(GmailClient.class);
@BeforeEach
void beforeEach() throws Exception {
@@ -61,7 +61,7 @@ public class GmailClientTest {
private GmailClient getGmailClient(boolean isExternalEmailAllowed) throws Exception {
return new GmailClient(
gmail,
() -> gmail,
new Retrier(new SystemSleeper(), 3),
isExternalEmailAllowed,
"from@example.com",
@@ -22,8 +22,8 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import com.google.common.collect.ImmutableList;
import google.registry.groups.GmailClient;
import google.registry.util.EmailMessage;
import google.registry.util.SendEmailService;
import java.util.Optional;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
@@ -33,7 +33,7 @@ import org.mockito.ArgumentCaptor;
/** Unit tests for {@link SendEmailUtils}. */
class SendEmailUtilsTest {
private final SendEmailService emailService = mock(SendEmailService.class);
private final GmailClient gmailClient = mock(GmailClient.class);
private SendEmailUtils sendEmailUtils;
private void setRecipients(ImmutableList<String> recipients) throws Exception {
@@ -42,7 +42,7 @@ class SendEmailUtilsTest {
new InternetAddress("outgoing@registry.example"),
"outgoing display name",
recipients,
emailService);
gmailClient);
}
@Test
@@ -90,7 +90,7 @@ class SendEmailUtilsTest {
"Welcome to the Internet",
"It is a dark and scary place."))
.isFalse();
verify(emailService, never()).sendEmail(any());
verify(gmailClient, never()).sendEmail(any());
}
@Test
@@ -102,7 +102,7 @@ class SendEmailUtilsTest {
"Welcome to the Internet",
"It is a dark and scary place."))
.isFalse();
verify(emailService, never()).sendEmail(any());
verify(gmailClient, never()).sendEmail(any());
}
@Test
@@ -110,7 +110,7 @@ class SendEmailUtilsTest {
setRecipients(ImmutableList.of("foo@example.com"));
assertThat(sendEmailUtils.hasRecipients()).isTrue();
doThrow(new RuntimeException(new MessagingException("expected")))
.when(emailService)
.when(gmailClient)
.sendEmail(any());
assertThat(
sendEmailUtils.sendEmail(
@@ -131,7 +131,7 @@ class SendEmailUtilsTest {
ImmutableList.of("baz@example.com"));
ArgumentCaptor<EmailMessage> contentCaptor = ArgumentCaptor.forClass(EmailMessage.class);
verify(emailService).sendEmail(contentCaptor.capture());
verify(gmailClient).sendEmail(contentCaptor.capture());
EmailMessage emailMessage = contentCaptor.getValue();
ImmutableList.Builder<InternetAddress> recipientBuilder = ImmutableList.builder();
for (String expectedRecipient : ImmutableList.of("johnny@fakesite.tld", "baz@example.com")) {
@@ -176,7 +176,7 @@ class SendEmailUtilsTest {
private void verifyMessageSent(String... expectedRecipients) throws Exception {
ArgumentCaptor<EmailMessage> contentCaptor = ArgumentCaptor.forClass(EmailMessage.class);
verify(emailService).sendEmail(contentCaptor.capture());
verify(gmailClient).sendEmail(contentCaptor.capture());
EmailMessage emailMessage = contentCaptor.getValue();
ImmutableList.Builder<InternetAddress> recipientBuilder = ImmutableList.builder();
for (String expectedRecipient : expectedRecipients) {
@@ -31,6 +31,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSetMultimap;
import google.registry.config.RegistryEnvironment;
import google.registry.groups.GmailClient;
import google.registry.model.tld.Tld;
import google.registry.persistence.transaction.JpaTestExtensions;
import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension;
@@ -47,7 +48,6 @@ import google.registry.testing.SystemPropertyExtension;
import google.registry.testing.UserServiceExtension;
import google.registry.ui.server.SendEmailUtils;
import google.registry.util.EmailMessage;
import google.registry.util.SendEmailService;
import java.util.Optional;
import javax.mail.internet.InternetAddress;
import javax.servlet.http.HttpServletRequest;
@@ -79,7 +79,7 @@ public final class ConsoleOteSetupActionTest {
private final User user = new User("marla.singer@example.com", "gmail.com", "12345");
@Mock HttpServletRequest request;
@Mock SendEmailService emailService;
@Mock GmailClient gmailClient;
@BeforeEach
void beforeEach() throws Exception {
@@ -99,7 +99,7 @@ public final class ConsoleOteSetupActionTest {
new InternetAddress("outgoing@registry.example"),
"UnitTest Registry",
ImmutableList.of("notification@test.example", "notification2@test.example"),
emailService);
gmailClient);
action.logoFilename = "logo.png";
action.productName = "Nomulus";
action.clientId = Optional.empty();
@@ -158,7 +158,7 @@ public final class ConsoleOteSetupActionTest {
assertThat(response.getPayload())
.contains("<h1>OT&E successfully created for registrar myclientid!</h1>");
ArgumentCaptor<EmailMessage> contentCaptor = ArgumentCaptor.forClass(EmailMessage.class);
verify(emailService).sendEmail(contentCaptor.capture());
verify(gmailClient).sendEmail(contentCaptor.capture());
EmailMessage emailMessage = contentCaptor.getValue();
assertThat(emailMessage.subject())
.isEqualTo("OT&E for registrar myclientid created in unittest");
@@ -29,6 +29,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSetMultimap;
import google.registry.config.RegistryEnvironment;
import google.registry.groups.GmailClient;
import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.RegistrarAddress;
import google.registry.model.registrar.RegistrarPoc;
@@ -47,7 +48,6 @@ import google.registry.testing.SystemPropertyExtension;
import google.registry.testing.UserServiceExtension;
import google.registry.ui.server.SendEmailUtils;
import google.registry.util.EmailMessage;
import google.registry.util.SendEmailService;
import java.util.Optional;
import javax.mail.internet.InternetAddress;
import javax.servlet.http.HttpServletRequest;
@@ -79,7 +79,7 @@ final class ConsoleRegistrarCreatorActionTest {
private final User user = new User("marla.singer@example.com", "gmail.com", "12345");
@Mock HttpServletRequest request;
@Mock SendEmailService emailService;
@Mock GmailClient gmailClient;
@BeforeEach
void beforeEach() throws Exception {
@@ -99,7 +99,7 @@ final class ConsoleRegistrarCreatorActionTest {
new InternetAddress("outgoing@registry.example"),
"UnitTest Registry",
ImmutableList.of("notification@test.example", "notification2@test.example"),
emailService);
gmailClient);
action.logoFilename = "logo.png";
action.productName = "Nomulus";
@@ -183,7 +183,7 @@ final class ConsoleRegistrarCreatorActionTest {
.contains("<h1>Successfully created Registrar myclientid</h1>");
ArgumentCaptor<EmailMessage> contentCaptor = ArgumentCaptor.forClass(EmailMessage.class);
verify(emailService).sendEmail(contentCaptor.capture());
verify(gmailClient).sendEmail(contentCaptor.capture());
EmailMessage emailMessage = contentCaptor.getValue();
assertThat(emailMessage.subject()).isEqualTo("Registrar myclientid created in unittest");
assertThat(emailMessage.body())
@@ -65,7 +65,7 @@ class RegistrarSettingsActionTest extends RegistrarSettingsActionTestCase {
verify(rsp, never()).setStatus(anyInt());
verifyNotificationEmailsSent();
ArgumentCaptor<EmailMessage> contentCaptor = ArgumentCaptor.forClass(EmailMessage.class);
verify(emailService).sendEmail(contentCaptor.capture());
verify(gmailClient).sendEmail(contentCaptor.capture());
assertThat(contentCaptor.getValue().body()).isEqualTo(expectedEmailBody);
cloudTasksHelper.assertTasksEnqueued(
"sheet",
@@ -36,6 +36,7 @@ import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.collect.ImmutableSortedMap;
import com.google.common.truth.Truth;
import google.registry.flows.certs.CertificateChecker;
import google.registry.groups.GmailClient;
import google.registry.model.registrar.RegistrarPoc;
import google.registry.persistence.transaction.JpaTestExtensions;
import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension;
@@ -50,7 +51,6 @@ import google.registry.testing.CloudTasksHelper;
import google.registry.testing.FakeClock;
import google.registry.ui.server.SendEmailUtils;
import google.registry.util.EmailMessage;
import google.registry.util.SendEmailService;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.mail.internet.InternetAddress;
@@ -82,7 +82,7 @@ public abstract class RegistrarSettingsActionTestCase {
@Mock HttpServletRequest req;
@Mock HttpServletResponse rsp;
@Mock SendEmailService emailService;
@Mock GmailClient gmailClient;
final RegistrarSettingsAction action = new RegistrarSettingsAction();
private final StringWriter writer = new StringWriter();
@@ -110,7 +110,7 @@ public abstract class RegistrarSettingsActionTestCase {
getGSuiteOutgoingEmailAddress(),
getGSuiteOutgoingEmailDisplayName(),
ImmutableList.of("notification@test.example", "notification2@test.example"),
emailService);
gmailClient);
action.registrarConsoleMetrics = new RegistrarConsoleMetrics();
action.authResult =
AuthResult.create(
@@ -172,7 +172,7 @@ public abstract class RegistrarSettingsActionTestCase {
/** Verifies that the original contact of TheRegistrar is among those notified of a change. */
void verifyNotificationEmailsSent() throws Exception {
ArgumentCaptor<EmailMessage> captor = ArgumentCaptor.forClass(EmailMessage.class);
verify(emailService).sendEmail(captor.capture());
verify(gmailClient).sendEmail(captor.capture());
Truth.assertThat(captor.getValue().recipients())
.containsExactly(
new InternetAddress("notification@test.example"),