From a306239c3ba54017e109a4744e8381acc5f03009 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 21 Nov 2014 20:25:36 +0100 Subject: [PATCH] implemented e-mail and password change as lambda operations on SecurityServiceImpl --- .../test/SimpleSecurityReplicationTest.java | 29 ++++++++++++++++++- .../impl/ReplicableSecurityService.java | 5 +++- .../security/impl/SecurityServiceImpl.java | 15 +++++++--- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SimpleSecurityReplicationTest.java b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SimpleSecurityReplicationTest.java index 948120d6291..d68de1199c1 100755 --- a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SimpleSecurityReplicationTest.java +++ b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SimpleSecurityReplicationTest.java @@ -16,9 +16,10 @@ public class SimpleSecurityReplicationTest extends AbstractSecurityReplicationTe /** * It's too bad that we can't use this inside a GWT bundle which is currently constrained to Java7... If it was only possible * to extract the *.server package such that it could be compiled with Java8. + * @throws IllegalAccessException */ @Test - public void testSimpleReplicationOfUserCreation() throws InterruptedException, UserManagementException, MailException { + public void testSimpleReplicationOfUserCreation() throws InterruptedException, UserManagementException, MailException, IllegalAccessException { final String username = "Ernie"; final String email = "ernie@sesame-street.com"; final String password = "BertMyFriend"; @@ -29,6 +30,7 @@ public class SimpleSecurityReplicationTest extends AbstractSecurityReplicationTe assertSame(user, master.getUserByName(username)); assertTrue(master.checkPassword(username, password)); + replicaReplicator.waitUntilQueueIsEmpty(); Thread.sleep(3000); User replicatedErnie = replica.getUserByName(username); @@ -37,4 +39,29 @@ public class SimpleSecurityReplicationTest extends AbstractSecurityReplicationTe assertEquals(email, replicatedErnie.getEmail()); assertTrue(replica.checkPassword(username, password)); } + + /** + * It's too bad that we can't use this inside a GWT bundle which is currently constrained to Java7... If it was only possible + * to extract the *.server package such that it could be compiled with Java8. + * @throws IllegalAccessException + */ + @Test + public void testSimpleReplicationOfUserEmailChange() throws InterruptedException, UserManagementException, MailException, IllegalAccessException { + final String username = "Ernie"; + final String email = "ernie@sesame-street.com"; + final String newEmail = "ernie2@sesame-street.com"; + final String password = "BertMyFriend"; + final String validationBaseURL = "http://me.to.back.com"; + User user = master.createSimpleUser(username, email, password, validationBaseURL); + master.updateSimpleUserEmail(username, newEmail, validationBaseURL); + assertEquals(newEmail, user.getEmail()); + + replicaReplicator.waitUntilQueueIsEmpty(); + Thread.sleep(3000); + + User replicatedErnie = replica.getUserByName(username); + assertNotNull(replicatedErnie); + assertEquals(username, replicatedErnie.getName()); + assertEquals(newEmail, replicatedErnie.getEmail()); + } } diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/impl/ReplicableSecurityService.java b/java/com.sap.sse.security/src/com/sap/sse/security/impl/ReplicableSecurityService.java index 6936be913ed..46318fcc9d7 100755 --- a/java/com.sap.sse.security/src/com/sap/sse/security/impl/ReplicableSecurityService.java +++ b/java/com.sap.sse.security/src/com/sap/sse/security/impl/ReplicableSecurityService.java @@ -18,6 +18,9 @@ public interface ReplicableSecurityService extends SecurityService { User internalCreateSimpleUser(String username, String email, String password, String validationBaseURL) throws UserManagementException; - void internalUpdateSimpleUserPassword(String username, String newPassword) throws UserManagementException; + Void internalUpdateSimpleUserPassword(String username, String newPassword) throws UserManagementException; + + Void internalUpdateSimpleUserEmail(String username, String newEmail, String validationBaseURL) + throws UserManagementException; } diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java b/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java index 3d5cc7b5004..94a833c8fa7 100644 --- a/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java +++ b/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java @@ -83,7 +83,6 @@ import com.sap.sse.security.Social; import com.sap.sse.security.SocialSettingsKeys; import com.sap.sse.security.User; import com.sap.sse.security.UserStore; -import com.sap.sse.security.operations.SecurityOperation; import com.sap.sse.security.shared.Account.AccountType; import com.sap.sse.security.shared.DefaultRoles; import com.sap.sse.security.shared.MailException; @@ -275,7 +274,7 @@ public class SecurityServiceImpl extends RemoteServiceServlet implements Replica @Override public User createSimpleUser(final String username, final String email, String password, final String validationBaseURL) throws UserManagementException, MailException { - return apply((SecurityOperation) thiz -> thiz.internalCreateSimpleUser(username, email, password, validationBaseURL)); + return apply(thiz -> thiz.internalCreateSimpleUser(username, email, password, validationBaseURL)); } @Override @@ -313,16 +312,17 @@ public class SecurityServiceImpl extends RemoteServiceServlet implements Replica @Override public void updateSimpleUserPassword(String username, String newPassword) throws UserManagementException { - internalUpdateSimpleUserPassword(username, newPassword); + apply(s->s.internalUpdateSimpleUserPassword(username, newPassword)); } @Override - public void internalUpdateSimpleUserPassword(String username, String newPassword) throws UserManagementException { + public Void internalUpdateSimpleUserPassword(String username, String newPassword) throws UserManagementException { final User user = store.getUserByName(username); if (user == null) { throw new UserManagementException(UserManagementException.USER_DOES_NOT_EXIST); } updateSimpleUserPassword(user, newPassword); + return null; } private void updateSimpleUserPassword(final User user, String newPassword) throws UserManagementException { @@ -362,6 +362,12 @@ public class SecurityServiceImpl extends RemoteServiceServlet implements Replica @Override public void updateSimpleUserEmail(final String username, final String newEmail, final String validationBaseURL) throws UserManagementException { + apply(s->s.internalUpdateSimpleUserEmail(username, newEmail, validationBaseURL)); + } + + @Override + public Void internalUpdateSimpleUserEmail(final String username, final String newEmail, + final String validationBaseURL) throws UserManagementException { final User user = store.getUserByName(username); if (user == null) { throw new UserManagementException(UserManagementException.USER_DOES_NOT_EXIST); @@ -380,6 +386,7 @@ public class SecurityServiceImpl extends RemoteServiceServlet implements Replica } }.start(); store.updateUser(user); + return null; } @Override