Add BCC capabilities to the Spec11 reports (#418)

* Add BCC capabilities to the Spec11 reports
This commit is contained in:
gbrodman 2019-12-18 17:08:06 -05:00 committed by GitHub
parent 751f5dfbe5
commit 53ca296263
8 changed files with 75 additions and 31 deletions

View file

@ -29,7 +29,7 @@ public abstract class EmailMessage {
public abstract String body();
public abstract ImmutableList<InternetAddress> recipients();
public abstract InternetAddress from();
public abstract Optional<InternetAddress> bcc();
public abstract ImmutableList<InternetAddress> bccs();
public abstract Optional<MediaType> contentType();
public abstract Optional<Attachment> attachment();
@ -55,17 +55,23 @@ public abstract class EmailMessage {
public abstract Builder setBody(String body);
public abstract Builder setRecipients(Collection<InternetAddress> recipients);
public abstract Builder setFrom(InternetAddress from);
public abstract Builder setBcc(InternetAddress bcc);
public abstract Builder setBccs(Collection<InternetAddress> bccs);
public abstract Builder setContentType(MediaType contentType);
public abstract Builder setAttachment(Attachment attachment);
abstract ImmutableList.Builder<InternetAddress> recipientsBuilder();
abstract ImmutableList.Builder<InternetAddress> bccsBuilder();
public Builder addRecipient(InternetAddress value) {
recipientsBuilder().add(value);
return this;
}
public Builder addBcc(InternetAddress bcc) {
bccsBuilder().add(bcc);
return this;
}
public abstract EmailMessage build();
}

View file

@ -78,8 +78,8 @@ public class SendEmailService {
attachmentPart.setFileName(attachment.filename());
multipart.addBodyPart(attachmentPart);
}
if (emailMessage.bcc().isPresent()) {
msg.addRecipient(RecipientType.BCC, emailMessage.bcc().get());
for (InternetAddress bcc : emailMessage.bccs()) {
msg.addRecipient(RecipientType.BCC, bcc);
}
msg.setContent(multipart);
msg.saveChanges();

View file

@ -21,6 +21,7 @@ import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import com.google.common.collect.ImmutableList;
import com.google.common.net.MediaType;
import google.registry.testing.FakeClock;
import google.registry.testing.FakeSleeper;
@ -44,8 +45,7 @@ import org.mockito.junit.MockitoRule;
@RunWith(JUnit4.class)
public class SendEmailServiceTest {
@Rule
public final MockitoRule mocks = MockitoJUnit.rule();
@Rule public final MockitoRule mocks = MockitoJUnit.rule();
private final Retrier retrier = new Retrier(new FakeSleeper(new FakeClock()), 2);
private final TransportEmailSender wrapper = mock(TransportEmailSender.class);
@ -74,12 +74,19 @@ public class SendEmailServiceTest {
@Test
public void testSuccess_bcc() throws Exception {
EmailMessage content = createBuilder().setBcc(new InternetAddress("bcc@example.com")).build();
EmailMessage content =
createBuilder()
.setBccs(
ImmutableList.of(
new InternetAddress("bcc@example.com"),
new InternetAddress("bcc2@example.com")))
.build();
sendEmailService.sendEmail(content);
Message message = getMessage();
assertThat(message.getRecipients(RecipientType.BCC))
.asList()
.containsExactly(new InternetAddress("bcc@example.com"));
.containsExactly(
new InternetAddress("bcc@example.com"), new InternetAddress("bcc2@example.com"));
}
@Test
@ -87,8 +94,7 @@ public class SendEmailServiceTest {
EmailMessage content = createBuilder().setContentType(MediaType.HTML_UTF_8).build();
sendEmailService.sendEmail(content);
Message message = getMessage();
assertThat(getInternalContent(message).getContentType())
.isEqualTo("text/html; charset=utf-8");
assertThat(getInternalContent(message).getContentType()).isEqualTo("text/html; charset=utf-8");
}
@Test