Browse Source

SONAR-6226 Not fail when reactivating a user without password

tags/5.4-M10
Julien Lancelot 8 years ago
parent
commit
354260c08f

+ 6
- 4
server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java View File

@@ -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);

+ 27
- 1
server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java View File

@@ -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");

+ 8
- 0
server/sonar-server/src/test/resources/org/sonar/server/user/UserUpdaterTest/reactivate_user_not_having_password.xml View File

@@ -0,0 +1,8 @@
<dataset>

<users id="101" login="marius" name="Marius" email="marius@lesbronzes.fr" active="[false]" scm_accounts="&#10;ma&#10;marius33&#10;"
external_identity_provider="sonarqube" external_identity="marius"
created_at="1418215735482" updated_at="1418215735485"
salt="[null]" crypted_password="[null]"/>

</dataset>

Loading…
Cancel
Save