Test rozne zachowanie

Test rozne zachowanie
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 100
0

Mam test do wysylki meili przez greenMailBean.
Przechodzi on na zielono. Jednak jezeli buduje mvn projekt z jakiego inicjalizowane jest polaczenie z portem, a port jest zajety:

Exception in thread "smtp:localhost:3124" java.lang.IllegalStateException: Can not open server socket for smtp:localhost:3124
at com.icegreen.greenmail.server.AbstractServer.initServerSocket(AbstractServer.java:123)
at com.icegreen.greenmail.server.AbstractServer.run(AbstractServer.java:94)
Caused by: java.net.BindException: Address already in use: bind

Wszystko co sie dzieje w tym tescie, jest ustawiane w beanie:
Jednak jak bym nie ustawil tych propertisow port jest zajety i port z st rozni sie od tego ustawionego greenMailBean.setPortOffset(3144); vs 3124

Kopiuj
@Configuration
public class GreenmailConfig {

  @Bean
  public GreenMailBean greenmailBean() {
    final var greenMailBean = new GreenMailBean();
    greenMailBean.setSmtpProtocol(true);
    greenMailBean.setPortOffset(3144);
    greenMailBean.setHostname("localhost");
    greenMailBean.setAutostart(true);
    greenMailBean.setPop3Protocol(false);
    greenMailBean.setSmtpProtocol(false);
    
    greenMailBean.setServerStartupTimeout(10000);
    return greenMailBean;
  }
Kopiuj
@TestNoDatabase
@ExtendWith(MockitoExtension.class)
class SpringSmtpServiceTest {

  @Autowired private GreenMailBean greenMailBean;

  @Test
  void shouldSendEmail_givenValidData() throws MessagingException, IOException {
    // arrange
    var sender = "sender";
    var recipient = "recipient";
    var content = "content";
    var subject = "subject";

    // act
    greenMailBean.sendEmail(recipient, sender, subject, content);

    // assert
    final MimeMessage email = greenMailBean.getReceivedMessages()[0];
    assertThat(email.getHeader("From", null)).isEqualTo(sender);
    assertThat(email.getHeader("To", null)).isEqualTo(recipient);
    assertThat(email.getHeader("Subject", null)).isEqualTo("subject");
    assertThat((String) email.getContent()).startsWith(content);
  }
.andy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1524
0

Dlaczego robisz to na początku:
greenMailBean.setSmtpProtocol(true);

a potem:

greenMailBean.setSmtpProtocol(false);

Tutaj są jakieś przykłady: https://greenmail-mail-test.github.io/greenmail/#examples

Próbowałeś np. w taki sposób?

Kopiuj
static GreenMailExtension greenMail = new GreenMailExtension(ServerSetupTest.SMTP);

@Test
@DisplayName("Send test")
void testSend() {
    GreenMailUtil.sendTextEmailTest("to@localhost", "from@localhost", "some subject", "some body");
    final MimeMessage[] receivedMessages = greenMail.getReceivedMessages();
    final MimeMessage receivedMessage = receivedMessages[0];
    assertEquals("some body", GreenMailUtil.getBody(receivedMessage));
}

PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2787
0

A spróbuj tę odpowiedź:

https://stackoverflow.com/a/48656233

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.