use quarkus mailer for password recovery

This commit is contained in:
Athou
2024-08-12 09:41:14 +02:00
parent 1fd48a0a40
commit aaf237d111
9 changed files with 53 additions and 124 deletions

View File

@@ -1,52 +1,44 @@
package com.commafeed.integration.rest;
import org.junit.jupiter.api.AfterEach;
import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import com.commafeed.frontend.model.request.PasswordResetRequest;
import com.commafeed.integration.BaseIT;
import com.icegreen.greenmail.util.GreenMail;
import com.icegreen.greenmail.util.ServerSetupTest;
import io.quarkus.mailer.MockMailbox;
import io.quarkus.test.junit.QuarkusTest;
import jakarta.mail.internet.MimeMessage;
import io.vertx.ext.mail.MailMessage;
import jakarta.inject.Inject;
import jakarta.ws.rs.client.Entity;
@QuarkusTest
class UserIT extends BaseIT {
@Nested
class PasswordReset {
@Inject
MockMailbox mailbox;
private GreenMail greenMail;
@BeforeEach
void setup() {
mailbox.clear();
}
@BeforeEach
void setup() {
this.greenMail = new GreenMail(ServerSetupTest.SMTP);
this.greenMail.start();
this.greenMail.setUser("noreply@commafeed.com", "user", "pass");
}
@Test
void resetPassword() {
PasswordResetRequest req = new PasswordResetRequest();
req.setEmail("admin@commafeed.com");
@AfterEach
void cleanup() {
this.greenMail.stop();
}
getClient().target(getApiBaseUrl() + "user/passwordReset").request().post(Entity.json(req), Void.TYPE);
@Test
void resetPassword() throws Exception {
PasswordResetRequest req = new PasswordResetRequest();
req.setEmail("admin@commafeed.com");
List<MailMessage> mails = mailbox.getMailMessagesSentTo("admin@commafeed.com");
Assertions.assertEquals(1, mails.size());
getClient().target(getApiBaseUrl() + "user/passwordReset").request().post(Entity.json(req), Void.TYPE);
MimeMessage message = greenMail.getReceivedMessages()[0];
Assertions.assertEquals("CommaFeed - Password recovery", message.getSubject());
Assertions.assertTrue(message.getContent().toString().startsWith("You asked for password recovery for account 'admin'"));
Assertions.assertEquals("CommaFeed <noreply@commafeed.com>", message.getFrom()[0].toString());
Assertions.assertEquals("admin@commafeed.com", message.getAllRecipients()[0].toString());
}
MailMessage message = mails.get(0);
Assertions.assertEquals("CommaFeed - Password recovery", message.getSubject());
Assertions.assertTrue(message.getHtml().startsWith("You asked for password recovery for account 'admin'"));
Assertions.assertEquals("admin@commafeed.com", message.getTo().get(0));
}
}