nclazz-mail-relay/src/test/java/de/nclazz/service/mailrelay/domain/ForwardMessageTest.java

94 lines
2.6 KiB
Java

package de.nclazz.service.mailrelay.domain;
import org.junit.jupiter.api.Test;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
class ForwardMessageTest {
@Test
void relayForwardsMessageToCorrectAccountByToken() {
String token = "my-token";
Account account = new Account(
UUID.randomUUID(),
"company-invoices",
token,
List.of("info@company.com")
);
Relay relay = TestRelayBuilder.builder().build();
relay.saveAccount(account);
LocalDateTime now = LocalDateTime.now();
Message message = Message.of(
"Urgent message",
"Please reply",
"vip@company.com",
now
);
relay.forwardMessage(token, message);
assertThat(account.getSentMessages())
.hasSize(1)
.containsExactly(message);
}
@Test
void relayDoesNotForwardMessageForWrongToken() {
String token = "my-token";
Account account = new Account(
UUID.randomUUID(),
"company-invoices",
token,
List.of("info@company.com")
);
Relay relay = TestRelayBuilder.builder().build();
relay.saveAccount(account);
LocalDateTime now = LocalDateTime.now();
Message message = Message.of(
"Urgent message",
"Please reply",
"vip@company.com",
now
);
relay.forwardMessage("wrong-token", message);
assertThat(account.getSentMessages())
.isEmpty();
}
@Test
void forwardMessageShouldCauseMessageForwarderToBeInvoked() {
MessageForwarder forwarder = mock(MessageForwarder.class);
String token = "my-token";
Account account = new Account(
UUID.randomUUID(),
"company-invoices",
token,
List.of("info@company.com")
);
Relay relay = TestRelayBuilder.builder().build();
relay.saveAccount(account);
LocalDateTime now = LocalDateTime.now();
Message message = Message.of(
"Urgent message",
"Please reply",
"vip@company.com",
now
);
relay.forwardMessage(token, message);
verify(forwarder).forwardMessage("Urgent message", "Please reply", "vip@company.com", List.of("info@company.com"));
}
}