diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-06-17 18:01:48 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-06-29 08:39:32 +0200 |
commit | 102faa7f46c509fd2bf7f3d933b78375ca2f4166 (patch) | |
tree | 46bd422b6d69e8c1e9c6e27b1ca2e9f0edeb74cb /sonar-db | |
parent | 9dc5ec05a0301fb2b46b621c5de3eb5ef4752119 (diff) | |
download | sonarqube-102faa7f46c509fd2bf7f3d933b78375ca2f4166.tar.gz sonarqube-102faa7f46c509fd2bf7f3d933b78375ca2f4166.zip |
SONAR-7732 Authentication is now done in Java
Diffstat (limited to 'sonar-db')
-rw-r--r-- | sonar-db/src/main/java/org/sonar/db/user/UserDto.java | 15 | ||||
-rw-r--r-- | sonar-db/src/test/java/org/sonar/db/user/UserDtoTest.java | 26 |
2 files changed, 37 insertions, 4 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/user/UserDto.java b/sonar-db/src/main/java/org/sonar/db/user/UserDto.java index c6331c1c9dc..9b83805dbaa 100644 --- a/sonar-db/src/main/java/org/sonar/db/user/UserDto.java +++ b/sonar-db/src/main/java/org/sonar/db/user/UserDto.java @@ -19,12 +19,15 @@ */ package org.sonar.db.user; +import static java.util.Objects.requireNonNull; + import com.google.common.base.Splitter; import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; import javax.annotation.CheckForNull; import javax.annotation.Nullable; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.StringUtils; import org.sonar.core.user.DefaultUser; @@ -163,20 +166,22 @@ public class UserDto { return this; } + @CheckForNull public String getCryptedPassword() { return cryptedPassword; } - public UserDto setCryptedPassword(String cryptedPassword) { + public UserDto setCryptedPassword(@Nullable String cryptedPassword) { this.cryptedPassword = cryptedPassword; return this; } + @CheckForNull public String getSalt() { return salt; } - public UserDto setSalt(String salt) { + public UserDto setSalt(@Nullable String salt) { this.salt = salt; return this; } @@ -199,6 +204,12 @@ public class UserDto { return this; } + public static String encryptPassword(String password, String salt) { + requireNonNull(password, "Password cannot be empty"); + requireNonNull(salt, "Salt cannot be empty"); + return DigestUtils.sha1Hex("--" + salt + "--" + password + "--"); + } + public DefaultUser toUser() { return new DefaultUser() .setLogin(login) diff --git a/sonar-db/src/test/java/org/sonar/db/user/UserDtoTest.java b/sonar-db/src/test/java/org/sonar/db/user/UserDtoTest.java index 673c06260a1..08f9d76fe55 100644 --- a/sonar-db/src/test/java/org/sonar/db/user/UserDtoTest.java +++ b/sonar-db/src/test/java/org/sonar/db/user/UserDtoTest.java @@ -19,14 +19,19 @@ */ package org.sonar.db.user; +import static org.assertj.core.api.Assertions.assertThat; + import java.util.Arrays; import java.util.Collections; +import org.junit.Rule; import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.rules.ExpectedException; public class UserDtoTest { + @Rule + public ExpectedException expectedException = ExpectedException.none(); + @Test public void encode_scm_accounts() { assertThat(UserDto.encodeScmAccounts(null)).isNull(); @@ -41,4 +46,21 @@ public class UserDtoTest { assertThat(UserDto.decodeScmAccounts("\nfoo\n")).containsOnly("foo"); assertThat(UserDto.decodeScmAccounts("\nfoo\nbar\n")).containsOnly("foo", "bar"); } + + @Test + public void encrypt_password() throws Exception { + assertThat(UserDto.encryptPassword("PASSWORD", "0242b0b4c0a93ddfe09dd886de50bc25ba000b51")).isEqualTo("540e4fc4be4e047db995bc76d18374a5b5db08cc"); + } + + @Test + public void fail_to_encrypt_password_when_password_is_null() throws Exception { + expectedException.expect(NullPointerException.class); + UserDto.encryptPassword(null, "salt"); + } + + @Test + public void fail_to_encrypt_password_when_salt_is_null() throws Exception { + expectedException.expect(NullPointerException.class); + UserDto.encryptPassword("password", null); + } } |