diff --git a/commafeed-server/config.dev.yml b/commafeed-server/config.dev.yml index 76f44e88..e17c7df2 100644 --- a/commafeed-server/config.dev.yml +++ b/commafeed-server/config.dev.yml @@ -37,6 +37,7 @@ app: smtpTls: false smtpUserName: user smtpPassword: pass + smtpFromAddress: # Graphite Metric settings # Allows those who use Graphite to have CommaFeed send metrics for graphing (time in seconds) diff --git a/commafeed-server/pom.xml b/commafeed-server/pom.xml index 4e373f92..a20b47e5 100644 --- a/commafeed-server/pom.xml +++ b/commafeed-server/pom.xml @@ -452,6 +452,12 @@ 5.15.0 test + + com.icegreen + greenmail-junit5 + 2.0.1 + test + org.bouncycastle diff --git a/commafeed-server/src/test/java/com/commafeed/integration/rest/UserIT.java b/commafeed-server/src/test/java/com/commafeed/integration/rest/UserIT.java new file mode 100644 index 00000000..3eccde06 --- /dev/null +++ b/commafeed-server/src/test/java/com/commafeed/integration/rest/UserIT.java @@ -0,0 +1,44 @@ +package com.commafeed.integration.rest; + +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 org.junit.jupiter.api.extension.RegisterExtension; + +import com.commafeed.frontend.model.request.PasswordResetRequest; +import com.commafeed.integration.BaseIT; +import com.icegreen.greenmail.junit5.GreenMailExtension; +import com.icegreen.greenmail.util.ServerSetupTest; + +import jakarta.mail.internet.MimeMessage; +import jakarta.ws.rs.client.Entity; + +class UserIT extends BaseIT { + + @Nested + class PasswordReset { + + @RegisterExtension + static final GreenMailExtension GREEN_MAIL = new GreenMailExtension(ServerSetupTest.SMTP); + + @BeforeEach + void init() { + GREEN_MAIL.setUser("noreply@commafeed.com", "user", "pass"); + } + + @Test + void resetPassword() throws Exception { + PasswordResetRequest req = new PasswordResetRequest(); + req.setEmail("admin@commafeed.com"); + + getClient().target(getApiBaseUrl() + "user/passwordReset").request().post(Entity.json(req), Void.TYPE); + + MimeMessage message = GREEN_MAIL.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 ", message.getFrom()[0].toString()); + Assertions.assertEquals("admin@commafeed.com", message.getAllRecipients()[0].toString()); + } + } +} diff --git a/commafeed-server/src/test/resources/config.test.yml b/commafeed-server/src/test/resources/config.test.yml index 2615483f..a61b8c39 100644 --- a/commafeed-server/src/test/resources/config.test.yml +++ b/commafeed-server/src/test/resources/config.test.yml @@ -33,10 +33,11 @@ app: # settings for sending emails (password recovery) smtpHost: localhost - smtpPort: 25 + smtpPort: 3025 smtpTls: false smtpUserName: user smtpPassword: pass + smtpFromAddress: noreply@commafeed.com # Graphite Metric settings # Allows those who use Graphite to have CommaFeed send metrics for graphing (time in seconds)