aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-06-17 18:01:48 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2016-06-29 08:39:32 +0200
commit102faa7f46c509fd2bf7f3d933b78375ca2f4166 (patch)
tree46bd422b6d69e8c1e9c6e27b1ca2e9f0edeb74cb /sonar-db
parent9dc5ec05a0301fb2b46b621c5de3eb5ef4752119 (diff)
downloadsonarqube-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.java15
-rw-r--r--sonar-db/src/test/java/org/sonar/db/user/UserDtoTest.java26
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);
+ }
}