Changing interface for password reset
diff --git a/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/Constants.java b/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/Constants.java
index 415e49c..c280e55 100644
--- a/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/Constants.java
+++ b/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/Constants.java
@@ -29,6 +29,7 @@
String ERR_USERMANAGER_FAIL = "redback:usermanager_error";
String ERR_ROLEMANAGER_FAIL = "redback:rolemanager_error";
String ERR_RBACMANAGER_FAIL = "redback:rbacmanager_error";
+ String ERR_INVALID_POST_DATA = "redback:invalid_post_data";
String ERR_USER_EXISTS = "redback:user.exists";
String ERR_USER_ID_EMPTY = "redback:user.id.empty";
diff --git a/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/v2/UserService.java b/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/v2/UserService.java
index 9d9240d..e8785a2 100644
--- a/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/v2/UserService.java
+++ b/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/v2/UserService.java
@@ -402,7 +402,7 @@
@ApiResponse( responseCode = "404", description = "User does not exist" ),
}
)
- ActionStatus resetPassword( @PathParam( "userId" )String userId, ResetPasswordRequest resetPasswordRequest )
+ ActionStatus resetPassword( @PathParam( "userId" )String userId )
throws RedbackServiceException;
/**
diff --git a/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/v2/DefaultUserService.java b/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/v2/DefaultUserService.java
index 2c55882..40d50b7 100644
--- a/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/v2/DefaultUserService.java
+++ b/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/v2/DefaultUserService.java
@@ -603,10 +603,10 @@
}
@Override
- public ActionStatus resetPassword( String userId, ResetPasswordRequest resetPasswordRequest )
+ public ActionStatus resetPassword( String userId )
throws RedbackServiceException
{
- String username = resetPasswordRequest.getUsername();
+ String username = userId;
if ( StringUtils.isEmpty( username ) )
{
throw new RedbackServiceException( new ErrorMessage( "username.cannot.be.empty" ) );
@@ -623,11 +623,7 @@
AuthenticationKey authkey = keyManager.createKey( username, "Password Reset Request",
policy.getUserValidationSettings().getEmailValidationTimeout() );
- String applicationUrl = resetPasswordRequest.getApplicationUrl();
- if ( StringUtils.isBlank( applicationUrl ) )
- {
- applicationUrl = getBaseUrl();
- }
+ String applicationUrl = getBaseUrl( );
mailer.sendPasswordResetEmail( Arrays.asList( user.getEmail() ), authkey, applicationUrl );
log.info( "password reset request for username {}", username );
@@ -635,7 +631,7 @@
catch ( UserNotFoundException e )
{
log.info( "Password Reset on non-existant user [{}].", username );
- throw new RedbackServiceException( new ErrorMessage( "password.reset.failure" ) );
+ throw new RedbackServiceException( new ErrorMessage( ERR_USER_NOT_FOUND ), 404 );
}
catch ( KeyManagerException e )
{
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 35df00f..e017b46 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
@@ -990,4 +990,39 @@
.then( ).statusCode( 422 );
}
+ @Test
+ void askForPasswordReset( )
+ {
+ String adminToken = getAdminToken( );
+ Map<String, Object> jsonAsMap = new HashMap<>( );
+ jsonAsMap.put( "user_id", "aragorn" );
+ jsonAsMap.put( "email", "aragorn@lordoftherings.org" );
+ jsonAsMap.put( "fullName", "Aragorn King of Gondor" );
+ jsonAsMap.put( "validated", true );
+ jsonAsMap.put( "password", "pAssw0rD" );
+ given( ).spec( getRequestSpec( adminToken ) ).contentType( JSON )
+ .body( jsonAsMap )
+ .when( )
+ .post( )
+ .then( ).statusCode( 201 );
+ try
+ {
+
+ given( ).spec( getRequestSpec(null) ).contentType( JSON )
+ .when( )
+ .post( "aragorn/password/reset" )
+ .then( ).statusCode( 200 );
+
+ given( ).spec( getRequestSpec(null) ).contentType( JSON )
+ .when( )
+ .post( "xxyy/password/reset" )
+ .then( ).statusCode( 404 );
+ }
+ finally
+ {
+ given( ).spec( getRequestSpec( adminToken ) ).contentType( JSON )
+ .delete( "aragorn" )
+ .then( ).statusCode( 200 );
+ }
+ }
}
diff --git a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/UserServiceTest.java b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/UserServiceTest.java
index 1f74c1c..5648e29 100644
--- a/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/UserServiceTest.java
+++ b/redback-integrations/redback-rest/redback-rest-services/src/test/java/org/apache/archiva/redback/rest/services/v2/UserServiceTest.java
@@ -419,7 +419,7 @@
// assertTrue( service.validateUserFromKey( key ).isSuccess( ) );
- assertTrue( service.resetPassword(u.getUserId(), new ResetPasswordRequest( "toto", "http://foo.fr/bar" ) ).isSuccess( ) );
+ assertTrue( service.resetPassword(u.getUserId() ).isSuccess( ) );
emailMessages = assertService.getEmailMessageSended( );
assertEquals( 2, emailMessages.size( ) );