@@ -107,7 +107,7 @@ public class UserUpdater { | |||
saveUser(dbSession, userDto); | |||
addDefaultGroup(dbSession, userDto); | |||
} else { | |||
isUserReactivated = updateExistingUser(dbSession, existingUser.get(), login, newUser); | |||
isUserReactivated = reactivateUser(dbSession, existingUser.get(), login, newUser); | |||
} | |||
dbSession.commit(); | |||
notifyNewUser(userDto.getLogin(), userDto.getName(), newUser.email()); | |||
@@ -115,15 +115,17 @@ public class UserUpdater { | |||
return isUserReactivated; | |||
} | |||
private boolean updateExistingUser(DbSession dbSession, UserDto existingUser, String login, NewUser newUser) { | |||
private boolean reactivateUser(DbSession dbSession, UserDto existingUser, String login, NewUser newUser) { | |||
if (existingUser.isActive()) { | |||
throw new IllegalArgumentException(String.format("An active user with login '%s' already exists", login)); | |||
} | |||
UpdateUser updateUser = UpdateUser.create(login) | |||
.setName(newUser.name()) | |||
.setEmail(newUser.email()) | |||
.setScmAccounts(newUser.scmAccounts()) | |||
.setPassword(newUser.password()); | |||
.setScmAccounts(newUser.scmAccounts()); | |||
if (newUser.password() != null) { | |||
updateUser.setPassword(newUser.password()); | |||
} | |||
updateUserDto(dbSession, updateUser, existingUser); | |||
updateUser(dbSession, existingUser); | |||
addDefaultGroup(dbSession, existingUser); |
@@ -473,7 +473,7 @@ public class UserUpdaterTest { | |||
} | |||
@Test | |||
public void reactivate_user_when_creating_user_with_existing_login() { | |||
public void reactivate_user_when_creating_user_with_existing_login_and_with_authority() { | |||
db.prepareDbUnit(getClass(), "reactivate_user.xml"); | |||
when(system2.now()).thenReturn(1418215735486L); | |||
createDefaultGroup(); | |||
@@ -499,6 +499,32 @@ public class UserUpdaterTest { | |||
assertThat(result).isTrue(); | |||
} | |||
@Test | |||
public void reactivate_user_not_having_password() { | |||
db.prepareDbUnit(getClass(), "reactivate_user_not_having_password.xml"); | |||
when(system2.now()).thenReturn(1418215735486L); | |||
createDefaultGroup(); | |||
boolean result = userUpdater.create(NewUser.create() | |||
.setLogin(DEFAULT_LOGIN) | |||
.setName("Marius2") | |||
.setEmail("marius2@mail.com")); | |||
session.commit(); | |||
UserDto dto = userDao.selectByLogin(session, DEFAULT_LOGIN); | |||
assertThat(dto.isActive()).isTrue(); | |||
assertThat(dto.getName()).isEqualTo("Marius2"); | |||
assertThat(dto.getEmail()).isEqualTo("marius2@mail.com"); | |||
assertThat(dto.getScmAccounts()).isNull(); | |||
assertThat(dto.getSalt()).isNull(); | |||
assertThat(dto.getCryptedPassword()).isNull(); | |||
assertThat(dto.getCreatedAt()).isEqualTo(1418215735482L); | |||
assertThat(dto.getUpdatedAt()).isEqualTo(1418215735486L); | |||
assertThat(result).isTrue(); | |||
} | |||
@Test | |||
public void fail_to_reactivate_user_if_not_disabled() { | |||
db.prepareDbUnit(getClass(), "fail_to_reactivate_user_if_not_disabled.xml"); |
@@ -0,0 +1,8 @@ | |||
<dataset> | |||
<users id="101" login="marius" name="Marius" email="marius@lesbronzes.fr" active="[false]" scm_accounts=" ma marius33 " | |||
external_identity_provider="sonarqube" external_identity="marius" | |||
created_at="1418215735482" updated_at="1418215735485" | |||
salt="[null]" crypted_password="[null]"/> | |||
</dataset> |