Loading service/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/UserAuthService.java +11 −1 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ public interface UserAuthService { Optional<User> authenticateUser(String username, String password); /** * Create new League Manager * Create new League Manager account * @param username username * @param password plaintext password * @return User if exists Loading @@ -24,4 +24,14 @@ public interface UserAuthService { * @throws UsernameTakenException if username is already taken by another user */ User createLeagueManager(String username, String password); /** * Create new Team Manager account * @param username username * @param password plaintext password * @return User if exists * * @throws UsernameTakenException if username is already taken by another user */ User createTeamManager(String username, String password); } service/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/UserAuthServiceImpl.java +21 −7 Original line number Diff line number Diff line Loading @@ -44,13 +44,33 @@ public class UserAuthServiceImpl implements UserAuthService{ } public User createLeagueManager(String username, String password) { return createUser(username, password, Roles.LEAGUE_MANAGER); } public User createTeamManager(String username, String password) { return createUser(username, password, Roles.TEAM_MANAGER); } private void requireNonEmpty(String argument, String paramName) { if (argument.isEmpty()) { throw new IllegalArgumentException(paramName); } } private User createUser(String username, String password, Roles role) { Objects.requireNonNull(username); Objects.requireNonNull(password); Objects.requireNonNull(role); requireNonEmpty(username, "username"); requireNonEmpty(password, "password"); // first get password, to introduce time cost of username lookup String encodedPassword = argonEncoder.encodePassword(password); var user = new User(); user.setUsername(username); user.setPassword(encodedPassword); user.setRole(getRoleString(Roles.LEAGUE_MANAGER)); user.setRole(getRoleString(role)); try { userAuthDao.create(user); } catch (EntityExistsException e) { Loading @@ -59,12 +79,6 @@ public class UserAuthServiceImpl implements UserAuthService{ return user; } private void requireNonEmpty(String argument, String paramName) { if (argument.isEmpty()) { throw new IllegalArgumentException(paramName); } } private String getRoleString(Roles role) { return role.name().toLowerCase(); } Loading service/src/test/java/cz/muni/fi/pa165/icehockeymanager/services/UserAuthServiceImplTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,35 @@ class UserAuthServiceImplTest { .isThrownBy(() -> authService.createLeagueManager(NEW_USERNAME, NEW_PASSWORD)); } @Test public void createNewTeamManager() { ArgumentCaptor<User> valueCapture = ArgumentCaptor.forClass(User.class); doAnswer( (invocation) -> users.add(invocation.getArgument(0)) ).when(userAuthDaoMock).create(valueCapture.capture()); var user = authService.createTeamManager(NEW_USERNAME, NEW_PASSWORD); softly.assertThat(user).isEqualTo(valueCapture.getValue()); softly.assertThat(user.getRole()).isEqualTo(roleToString(Roles.TEAM_MANAGER)); var authenticatedUser = authService.authenticateUser(NEW_USERNAME, NEW_PASSWORD); assertThat(authenticatedUser).hasValue(user); assertThat(authenticatedUser.get().getRole()).isEqualTo(roleToString(Roles.TEAM_MANAGER)); } @Test public void createNewTeamManagerUsernameExists() { ArgumentCaptor<User> valueCapture = ArgumentCaptor.forClass(User.class); doAnswer( (invocation) -> { throw new EntityExistsException(); } ).when(userAuthDaoMock).create(valueCapture.capture()); assertThatExceptionOfType(UsernameTakenException.class) .isThrownBy(() -> authService.createTeamManager(NEW_USERNAME, NEW_PASSWORD)); } private static String roleToString(Roles role) { return role.name().toLowerCase(); } Loading Loading
service/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/UserAuthService.java +11 −1 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ public interface UserAuthService { Optional<User> authenticateUser(String username, String password); /** * Create new League Manager * Create new League Manager account * @param username username * @param password plaintext password * @return User if exists Loading @@ -24,4 +24,14 @@ public interface UserAuthService { * @throws UsernameTakenException if username is already taken by another user */ User createLeagueManager(String username, String password); /** * Create new Team Manager account * @param username username * @param password plaintext password * @return User if exists * * @throws UsernameTakenException if username is already taken by another user */ User createTeamManager(String username, String password); }
service/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/UserAuthServiceImpl.java +21 −7 Original line number Diff line number Diff line Loading @@ -44,13 +44,33 @@ public class UserAuthServiceImpl implements UserAuthService{ } public User createLeagueManager(String username, String password) { return createUser(username, password, Roles.LEAGUE_MANAGER); } public User createTeamManager(String username, String password) { return createUser(username, password, Roles.TEAM_MANAGER); } private void requireNonEmpty(String argument, String paramName) { if (argument.isEmpty()) { throw new IllegalArgumentException(paramName); } } private User createUser(String username, String password, Roles role) { Objects.requireNonNull(username); Objects.requireNonNull(password); Objects.requireNonNull(role); requireNonEmpty(username, "username"); requireNonEmpty(password, "password"); // first get password, to introduce time cost of username lookup String encodedPassword = argonEncoder.encodePassword(password); var user = new User(); user.setUsername(username); user.setPassword(encodedPassword); user.setRole(getRoleString(Roles.LEAGUE_MANAGER)); user.setRole(getRoleString(role)); try { userAuthDao.create(user); } catch (EntityExistsException e) { Loading @@ -59,12 +79,6 @@ public class UserAuthServiceImpl implements UserAuthService{ return user; } private void requireNonEmpty(String argument, String paramName) { if (argument.isEmpty()) { throw new IllegalArgumentException(paramName); } } private String getRoleString(Roles role) { return role.name().toLowerCase(); } Loading
service/src/test/java/cz/muni/fi/pa165/icehockeymanager/services/UserAuthServiceImplTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,35 @@ class UserAuthServiceImplTest { .isThrownBy(() -> authService.createLeagueManager(NEW_USERNAME, NEW_PASSWORD)); } @Test public void createNewTeamManager() { ArgumentCaptor<User> valueCapture = ArgumentCaptor.forClass(User.class); doAnswer( (invocation) -> users.add(invocation.getArgument(0)) ).when(userAuthDaoMock).create(valueCapture.capture()); var user = authService.createTeamManager(NEW_USERNAME, NEW_PASSWORD); softly.assertThat(user).isEqualTo(valueCapture.getValue()); softly.assertThat(user.getRole()).isEqualTo(roleToString(Roles.TEAM_MANAGER)); var authenticatedUser = authService.authenticateUser(NEW_USERNAME, NEW_PASSWORD); assertThat(authenticatedUser).hasValue(user); assertThat(authenticatedUser.get().getRole()).isEqualTo(roleToString(Roles.TEAM_MANAGER)); } @Test public void createNewTeamManagerUsernameExists() { ArgumentCaptor<User> valueCapture = ArgumentCaptor.forClass(User.class); doAnswer( (invocation) -> { throw new EntityExistsException(); } ).when(userAuthDaoMock).create(valueCapture.capture()); assertThatExceptionOfType(UsernameTakenException.class) .isThrownBy(() -> authService.createTeamManager(NEW_USERNAME, NEW_PASSWORD)); } private static String roleToString(Roles role) { return role.name().toLowerCase(); } Loading