Adding email test service for API v2
diff --git a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/DefaultServicesAssert.java b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/DefaultServicesAssert.java
index 625611d..c57ee81 100644
--- a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/DefaultServicesAssert.java
+++ b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/DefaultServicesAssert.java
@@ -47,6 +47,7 @@
}
public void clearEmailMessages() {
+
mockJavaMailSender.getSendedEmails( ).clear( );
}
diff --git a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/ServicesAssert.java b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/ServicesAssert.java
index 80b5f5c..b68c2dd 100644
--- a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/ServicesAssert.java
+++ b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/mock/ServicesAssert.java
@@ -31,11 +31,13 @@
@Path( "DefaultServicesAssert" )
public interface ServicesAssert
{
+ @Path("/getEmailMessageSended")
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
List<EmailMessage> getEmailMessageSended()
throws Exception;
+ @Path("/clearEmailMessages")
@POST
void clearEmailMessages();
}
diff --git a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java
index da80867..442224a 100644
--- a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java
+++ b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/AbstractNativeRestServices.java
@@ -332,11 +332,16 @@
RestAssured.basePath = basePath;
}
- protected RequestSpecBuilder getRequestSpecBuilder( )
+ protected RequestSpecBuilder getRequestSpecBuilder( ) {
+ return getRequestSpecBuilder( null );
+ }
+
+ protected RequestSpecBuilder getRequestSpecBuilder( String basePath )
{
+ String myBasePath = basePath == null ? getBasePath( ) : basePath;
return new RequestSpecBuilder( ).setBaseUri( baseURI )
.setPort( port )
- .setBasePath( getBasePath( ) )
+ .setBasePath( myBasePath )
.addHeader( "Origin", RestAssured.baseURI + ":" + RestAssured.port );
}
@@ -355,6 +360,11 @@
return getRequestSpecBuilder( ).addHeader( "Authorization", "Bearer " + bearerToken ).build( );
}
+ protected RequestSpecification getRequestSpec( String bearerToken, String path)
+ {
+ return getRequestSpecBuilder( path ).addHeader( "Authorization", "Bearer " + bearerToken ).build( );
+ }
+
protected void shutdownNative( ) throws Exception
{
if (startServer)
diff --git a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeUserServiceTest.java b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeUserServiceTest.java
index 1fdf530..da3c666 100644
--- a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeUserServiceTest.java
+++ b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/NativeUserServiceTest.java
@@ -20,6 +20,7 @@
import io.restassured.response.Response;
import org.apache.archiva.redback.rest.api.model.v2.User;
+import org.apache.archiva.redback.rest.services.mock.EmailMessage;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.MethodOrderer;
@@ -950,6 +951,12 @@
void register( )
{
String adminToken = getAdminToken( );
+
+ given( ).spec( getRequestSpec( adminToken, "/api/testsService" ) )
+ .when( )
+ .post( "DefaultServicesAssert/clearEmailMessages" )
+ .then( ).statusCode( 204 );
+
Map<String, Object> requestMap = new HashMap<>( );
Map<String, Object> userMap = new HashMap<>( );
@@ -970,6 +977,18 @@
.when( )
.post( "bilbo/register" )
.then( ).statusCode( 200 );
+
+ Response response = given( ).spec( getRequestSpec( adminToken, "/api/testsService" ) ).contentType( JSON )
+ .get( "DefaultServicesAssert/getEmailMessageSended" ).then( ).statusCode( 200 )
+ .extract( ).response( );
+ List<EmailMessage> emailMessages = response.jsonPath( ).getList( "", EmailMessage.class );
+ assertEquals( 1, emailMessages.size( ) );
+ assertEquals( "bilbo@lordoftherings.org", emailMessages.get( 0 ).getTos( ).get( 0 ) );
+
+ assertEquals( "Welcome", emailMessages.get( 0 ).getSubject( ) );
+ assertTrue(
+ emailMessages.get( 0 ).getText( ).contains( "Use the following URL to validate your account." ) );
+
}
finally
{
@@ -1007,6 +1026,12 @@
void askForPasswordReset( )
{
String adminToken = getAdminToken( );
+
+ given( ).spec( getRequestSpec( adminToken, "/api/testsService" ) )
+ .when( )
+ .post( "DefaultServicesAssert/clearEmailMessages" )
+ .then( ).statusCode( 204 );
+
Map<String, Object> jsonAsMap = new HashMap<>( );
jsonAsMap.put( "user_id", "aragorn" );
jsonAsMap.put( "email", "aragorn@lordoftherings.org" );
@@ -1026,6 +1051,18 @@
.post( "aragorn/password/reset" )
.then( ).statusCode( 200 );
+ Response response = given( ).spec( getRequestSpec( adminToken, "/api/testsService" ) ).contentType( JSON )
+ .get( "DefaultServicesAssert/getEmailMessageSended" ).then( ).statusCode( 200 )
+ .extract( ).response( );
+ List<EmailMessage> emailMessages = response.jsonPath( ).getList( "", EmailMessage.class );
+ assertEquals( 1, emailMessages.size( ) );
+ assertEquals( "aragorn@lordoftherings.org", emailMessages.get( 0 ).getTos( ).get( 0 ) );
+ String messageContent = emailMessages.get( 0 ).getText( );
+
+ assertTrue( messageContent.contains( "Password Reset" ));
+ assertTrue(messageContent.contains( "Username: aragorn" ));
+
+
given( ).spec( getRequestSpec( null ) ).contentType( JSON )
.when( )
.post( "xxyy/password/reset" )