]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7254 Update ITs
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 16 Mar 2016 07:39:43 +0000 (08:39 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 21 Mar 2016 14:03:28 +0000 (15:03 +0100)
it/it-tests/src/test/java/it/user/BaseIdentityProviderTest.java
it/it-tests/src/test/java/it/user/RailsExternalAuthenticationTest.java
it/it-tests/src/test/java/util/user/UserRule.java
it/it-tests/src/test/java/util/user/Users.java

index a7fa90117dd0f217e1ca8dba0afde76aea0a4145..734cda3c3a2d2e54ac5dcbd7385931a6829d8bca 100644 (file)
@@ -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
index dfd42623f110f042f0609583550148ab8fc65cf6..d25c0c0b4e75c9f1039dc195d4510a0cef3c93f2 100644 (file)
@@ -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<String, String> 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<String, String> users = Maps.newHashMap();
 
index 01eafe5b0158d59f8875f699f4456bf3978fbea4..c1560a2c0f4e37c5033f086a6ec1ad186a5e8eca 100644 (file)
@@ -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<Users.User> 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) {
index 680c8979b7f7d5d1b896562241318485198e9108..965815fca2163ca259efa261e4ff3052ce906786 100644 (file)
@@ -46,9 +46,10 @@ public class Users {
     private final List<String> groups;
     private final List<String> scmAccounts;
     private final boolean active;
+    private final boolean local;
     private int tokensCount;
 
-    private User(String login, String name, String email, List<String> groups, List<String> scmAccounts, boolean active, int tokensCount) {
+    private User(String login, String name, String email, List<String> groups, List<String> 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;
     }