From 57ceade526c1319333b855d08319145c3471de52 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 16 Mar 2016 08:39:43 +0100 Subject: [PATCH] SONAR-7254 Update ITs --- .../it/user/BaseIdentityProviderTest.java | 2 +- .../user/RailsExternalAuthenticationTest.java | 39 ++----------------- .../src/test/java/util/user/UserRule.java | 8 +++- .../src/test/java/util/user/Users.java | 8 +++- 4 files changed, 19 insertions(+), 38 deletions(-) diff --git a/it/it-tests/src/test/java/it/user/BaseIdentityProviderTest.java b/it/it-tests/src/test/java/it/user/BaseIdentityProviderTest.java index a7fa90117dd..734cda3c3a2 100644 --- a/it/it-tests/src/test/java/it/user/BaseIdentityProviderTest.java +++ b/it/it-tests/src/test/java/it/user/BaseIdentityProviderTest.java @@ -92,7 +92,7 @@ public class BaseIdentityProviderTest { // First connection, user is created authenticateWithFakeAuthProvider(); - userRule.verifyUserExists(USER_LOGIN, USER_NAME, USER_EMAIL); + userRule.verifyUserExists(USER_LOGIN, USER_NAME, USER_EMAIL, false); } @Test diff --git a/it/it-tests/src/test/java/it/user/RailsExternalAuthenticationTest.java b/it/it-tests/src/test/java/it/user/RailsExternalAuthenticationTest.java index dfd42623f11..d25c0c0b4e7 100644 --- a/it/it-tests/src/test/java/it/user/RailsExternalAuthenticationTest.java +++ b/it/it-tests/src/test/java/it/user/RailsExternalAuthenticationTest.java @@ -25,6 +25,7 @@ import com.google.common.collect.Maps; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.selenium.Selenese; import java.util.Map; +import org.apache.commons.lang.RandomStringUtils; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; @@ -39,7 +40,6 @@ import org.sonar.wsclient.base.HttpException; import org.sonar.wsclient.connectors.ConnectionException; import org.sonar.wsclient.connectors.HttpClient4Connector; import org.sonar.wsclient.services.AuthenticationQuery; -import org.sonar.wsclient.services.PropertyUpdateQuery; import org.sonar.wsclient.services.UserPropertyCreateQuery; import org.sonar.wsclient.services.UserPropertyQuery; import org.sonar.wsclient.user.UserParameters; @@ -76,7 +76,6 @@ public class RailsExternalAuthenticationTest { public static final Orchestrator orchestrator = Orchestrator.builderEnv() .addPlugin(pluginArtifact("security-plugin")) .setServerProperty("sonar.security.realm", "FakeRealm") - .setServerProperty("sonar.security.localUsers", "admin," + TECH_USER) .build(); @Before @@ -86,7 +85,6 @@ public class RailsExternalAuthenticationTest { setServerProperty(orchestrator, "sonar.security.updateUserAttributes", null); setServerProperty(orchestrator, "sonar.security.savePassword", null); setServerProperty(orchestrator, "sonar.authenticator.createUsers", null); - setServerProperty(orchestrator, "sonar.security.localUsers", null); resetUsers(USER_LOGIN, TECH_USER); } @@ -229,36 +227,6 @@ public class RailsExternalAuthenticationTest { assertThat(loginAttempt(login, password)).isEqualTo(NOT_AUTHORIZED); } - /** - * SONAR-4543 - */ - @Test - public void shouldNotAccessExternalSystemForLocalAccounts() { - // Given clean Sonar installation and no users in external system - setServerProperty(orchestrator, "sonar.security.savePassword", "false"); - String login = "localuser"; - String localPassword = "1234567"; - String remotePassword = "7654321"; - Map users = Maps.newHashMap(); - - // When user created in external system - users.put(login + ".password", remotePassword); - updateUsersInExtAuth(users); - // And user exists in local database - createUserInDb(login, localPassword); - - // Then this is external system that should be used - assertThat(loginAttempt(login, remotePassword)).isEqualTo(AUTHORIZED); - assertThat(loginAttempt(login, localPassword)).isEqualTo(NOT_AUTHORIZED); - - // Now set this user as technical account - orchestrator.getServer().getAdminWsClient().update(new PropertyUpdateQuery("sonar.security.localUsers", "admin," + login)); - - // Then this is local DB that should be used - assertThat(loginAttempt(login, remotePassword)).isEqualTo(NOT_AUTHORIZED); - assertThat(loginAttempt(login, localPassword)).isEqualTo(AUTHORIZED); - } - /** * SONAR-4543 */ @@ -306,11 +274,12 @@ public class RailsExternalAuthenticationTest { * SONAR-1334 (createUsers=false) */ @Test - @Ignore("Fails because user is disable and rails doesn't handle this case (it's using User.find_by_login to know if user exists or not)") public void shouldNotCreateNewUsers() { // Given clean Sonar installation and no users in external system setServerProperty(orchestrator, "sonar.authenticator.createUsers", "false"); - String username = USER_LOGIN; + // Use a random user name because if we use existing disabled user then it doesn't work because rails doesn't handle this case + // (it's using User.find_by_login to know if user exists or not + String username = RandomStringUtils.randomAlphanumeric(20); String password = "1234567"; Map users = Maps.newHashMap(); diff --git a/it/it-tests/src/test/java/util/user/UserRule.java b/it/it-tests/src/test/java/util/user/UserRule.java index 01eafe5b015..c1560a2c0f4 100644 --- a/it/it-tests/src/test/java/util/user/UserRule.java +++ b/it/it-tests/src/test/java/util/user/UserRule.java @@ -68,12 +68,18 @@ public class UserRule extends ExternalResource { return adminWsClient; } - public void verifyUserExists(String login, String name, @Nullable String email) { + public Users.User verifyUserExists(String login, String name, @Nullable String email) { Optional user = getUserByLogin(login); assertThat(user).as("User with login '%s' hasn't been found", login).isPresent(); Assertions.assertThat(user.get().getLogin()).isEqualTo(login); Assertions.assertThat(user.get().getName()).isEqualTo(name); Assertions.assertThat(user.get().getEmail()).isEqualTo(email); + return user.get(); + } + + public void verifyUserExists(String login, String name, @Nullable String email, boolean local) { + Users.User user = verifyUserExists(login, name, email); + Assertions.assertThat(user.isLocal()).isEqualTo(local); } public void verifyUserDoesNotExist(String login) { diff --git a/it/it-tests/src/test/java/util/user/Users.java b/it/it-tests/src/test/java/util/user/Users.java index 680c8979b7f..965815fca21 100644 --- a/it/it-tests/src/test/java/util/user/Users.java +++ b/it/it-tests/src/test/java/util/user/Users.java @@ -46,9 +46,10 @@ public class Users { private final List groups; private final List scmAccounts; private final boolean active; + private final boolean local; private int tokensCount; - private User(String login, String name, String email, List groups, List scmAccounts, boolean active, int tokensCount) { + private User(String login, String name, String email, List groups, List scmAccounts, boolean active, boolean local, int tokensCount) { this.login = login; this.name = name; this.email = email; @@ -56,6 +57,7 @@ public class Users { this.scmAccounts = scmAccounts; this.active = active; this.tokensCount = tokensCount; + this.local = local; } public String getLogin() { @@ -82,6 +84,10 @@ public class Users { return active; } + public boolean isLocal() { + return local; + } + public int getTokensCount() { return tokensCount; } -- 2.39.5