Sfoglia il codice sorgente

Refactor some tests using DbTester

tags/6.2-RC1
Simon Brandhof 7 anni fa
parent
commit
2f8ff37deb
18 ha cambiato i file con 316 aggiunte e 450 eliminazioni
  1. 58
    115
      server/sonar-server/src/test/java/org/sonar/server/authentication/UserIdentityAuthenticatorTest.java
  2. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueAuthorizationDaoTest.java
  3. 33
    8
      server/sonar-server/src/test/java/org/sonar/server/organization/DefaultOrganizationProviderRule.java
  4. 51
    73
      server/sonar-server/src/test/java/org/sonar/server/project/ws/SearchMyProjectsActionTest.java
  5. 9
    27
      server/sonar-server/src/test/java/org/sonar/server/qualitygate/QgateProjectFinderTest.java
  6. 7
    3
      server/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileProjectOperationsMediumTest.java
  7. 37
    48
      server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProjectsActionTest.java
  8. 21
    26
      server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java
  9. 14
    25
      server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java
  10. 29
    45
      server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
  11. 5
    9
      server/sonar-server/src/test/java/org/sonar/server/user/ws/CurrentActionTest.java
  12. 10
    10
      server/sonar-server/src/test/java/org/sonar/server/user/ws/DeactivateActionTest.java
  13. 2
    1
      server/sonar-server/src/test/java/org/sonar/server/user/ws/GroupsActionTest.java
  14. 12
    17
      server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java
  15. 15
    24
      server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java
  16. 4
    6
      server/sonar-server/src/test/java/org/sonar/server/usertoken/ws/GenerateActionTest.java
  17. 7
    11
      server/sonar-server/src/test/java/org/sonar/server/usertoken/ws/SearchActionTest.java
  18. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java

+ 58
- 115
server/sonar-server/src/test/java/org/sonar/server/authentication/UserIdentityAuthenticatorTest.java Vedi File

@@ -20,51 +20,43 @@
package org.sonar.server.authentication;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Optional;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.config.Settings;
import org.sonar.api.config.MapSettings;
import org.sonar.api.config.Settings;
import org.sonar.api.server.authentication.UnauthorizedException;
import org.sonar.api.server.authentication.UserIdentity;
import org.sonar.api.utils.System2;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.user.GroupDao;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDao;
import org.sonar.db.user.UserDto;
import org.sonar.db.user.UserGroupDto;
import org.sonar.db.user.UserTesting;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.DefaultOrganizationProviderRule;
import org.sonar.server.user.NewUserNotifier;
import org.sonar.server.user.UserUpdater;
import org.sonar.server.user.index.UserIndexer;

import static com.google.common.collect.Sets.newHashSet;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.sonar.db.user.UserTesting.newUserDto;

public class UserIdentityAuthenticatorTest {

static String USER_LOGIN = "github-johndoo";

static String DEFAULT_GROUP = "default";
private static String USER_LOGIN = "github-johndoo";
private static String DEFAULT_GROUP = "default";

static UserIdentity USER_IDENTITY = UserIdentity.builder()
private static UserIdentity USER_IDENTITY = UserIdentity.builder()
.setProviderLogin("johndoo")
.setLogin(USER_LOGIN)
.setName("John")
.setEmail("john@email.com")
.build();

static TestIdentityProvider IDENTITY_PROVIDER = new TestIdentityProvider()
private static TestIdentityProvider IDENTITY_PROVIDER = new TestIdentityProvider()
.setKey("github")
.setEnabled(true)
.setAllowsUsersToSignUp(true);
@@ -72,55 +64,48 @@ public class UserIdentityAuthenticatorTest {
@Rule
public ExpectedException thrown = ExpectedException.none();

System2 system2 = mock(System2.class);
private System2 system2 = mock(System2.class);

@Rule
public DbTester dbTester = DbTester.create(system2);
public DbTester db = DbTester.create(system2);

DbClient dbClient = dbTester.getDbClient();
DbSession dbSession = dbTester.getSession();
UserDao userDao = dbClient.userDao();
GroupDao groupDao = dbClient.groupDao();
Settings settings = new MapSettings();

HttpServletRequest request = mock(HttpServletRequest.class);
HttpServletResponse response = mock(HttpServletResponse.class);

UserUpdater userUpdater = new UserUpdater(
private Settings settings = new MapSettings();
private DefaultOrganizationProvider defaultOrganizationProvider = DefaultOrganizationProviderRule.create(db);
private UserUpdater userUpdater = new UserUpdater(
mock(NewUserNotifier.class),
settings,
dbClient,
db.getDbClient(),
mock(UserIndexer.class),
system2);

UserIdentityAuthenticator underTest = new UserIdentityAuthenticator(dbClient, userUpdater);
system2,
defaultOrganizationProvider);
private UserIdentityAuthenticator underTest = new UserIdentityAuthenticator(db.getDbClient(), userUpdater);
private GroupDto defaultGroup;

@Before
public void setUp() throws Exception {
settings.setProperty("sonar.defaultGroup", DEFAULT_GROUP);
addGroup(DEFAULT_GROUP);
defaultGroup = db.users().insertGroup(db.getDefaultOrganization(), DEFAULT_GROUP);
}

@Test
public void authenticate_new_user() throws Exception {
underTest.authenticate(USER_IDENTITY, IDENTITY_PROVIDER);
dbSession.commit();

UserDto userDto = userDao.selectByLogin(dbSession, USER_LOGIN);
assertThat(userDto).isNotNull();
assertThat(userDto.isActive()).isTrue();
assertThat(userDto.getName()).isEqualTo("John");
assertThat(userDto.getEmail()).isEqualTo("john@email.com");
assertThat(userDto.getExternalIdentity()).isEqualTo("johndoo");
assertThat(userDto.getExternalIdentityProvider()).isEqualTo("github");
UserDto user = db.users().selectUserByLogin(USER_LOGIN).get();
assertThat(user).isNotNull();
assertThat(user.isActive()).isTrue();
assertThat(user.getName()).isEqualTo("John");
assertThat(user.getEmail()).isEqualTo("john@email.com");
assertThat(user.getExternalIdentity()).isEqualTo("johndoo");
assertThat(user.getExternalIdentityProvider()).isEqualTo("github");

verifyUserGroups(USER_LOGIN, DEFAULT_GROUP);
assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(defaultGroup.getId());
}

@Test
public void authenticate_new_user_with_groups() throws Exception {
addGroup("group1");
addGroup("group2");
GroupDto group1 = db.users().insertGroup(db.getDefaultOrganization(), "group1");
GroupDto group2 = db.users().insertGroup(db.getDefaultOrganization(), "group2");

underTest.authenticate(UserIdentity.builder()
.setProviderLogin("johndoo")
@@ -129,30 +114,26 @@ public class UserIdentityAuthenticatorTest {
// group3 doesn't exist in db, it will be ignored
.setGroups(newHashSet("group1", "group2", "group3"))
.build(), IDENTITY_PROVIDER);
dbSession.commit();

UserDto userDto = userDao.selectByLogin(dbSession, USER_LOGIN);
assertThat(userDto).isNotNull();
Optional<UserDto> user = db.users().selectUserByLogin(USER_LOGIN);
assertThat(user).isPresent();

verifyUserGroups(USER_LOGIN, "group1", "group2");
assertThat(db.users().selectGroupIdsOfUser(user.get())).containsOnly(group1.getId(), group2.getId());
}

@Test
public void authenticate_existing_user() throws Exception {
userDao.insert(dbSession, new UserDto()
db.users().insertUser(newUserDto()
.setLogin(USER_LOGIN)
.setActive(true)
.setName("Old name")
.setEmail("Old email")
.setExternalIdentity("old identity")
.setExternalIdentityProvider("old provide"));
dbSession.commit();

underTest.authenticate(USER_IDENTITY, IDENTITY_PROVIDER);
dbSession.commit();

UserDto userDto = userDao.selectByLogin(dbSession, USER_LOGIN);
assertThat(userDto).isNotNull();
UserDto userDto = db.users().selectUserByLogin(USER_LOGIN).get();
assertThat(userDto.isActive()).isTrue();
assertThat(userDto.getName()).isEqualTo("John");
assertThat(userDto.getEmail()).isEqualTo("john@email.com");
@@ -162,20 +143,17 @@ public class UserIdentityAuthenticatorTest {

@Test
public void authenticate_existing_disabled_user() throws Exception {
userDao.insert(dbSession, new UserDto()
db.users().insertUser(newUserDto()
.setLogin(USER_LOGIN)
.setActive(false)
.setName("Old name")
.setEmail("Old email")
.setExternalIdentity("old identity")
.setExternalIdentityProvider("old provide"));
dbSession.commit();

underTest.authenticate(USER_IDENTITY, IDENTITY_PROVIDER);
dbSession.commit();

UserDto userDto = userDao.selectByLogin(dbSession, USER_LOGIN);
assertThat(userDto).isNotNull();
UserDto userDto = db.users().selectUserByLogin(USER_LOGIN).get();
assertThat(userDto.isActive()).isTrue();
assertThat(userDto.getName()).isEqualTo("John");
assertThat(userDto.getEmail()).isEqualTo("john@email.com");
@@ -185,13 +163,12 @@ public class UserIdentityAuthenticatorTest {

@Test
public void authenticate_existing_user_and_add_new_groups() throws Exception {
userDao.insert(dbSession, new UserDto()
UserDto user = db.users().insertUser(newUserDto()
.setLogin(USER_LOGIN)
.setActive(true)
.setName("John"));
addGroup("group1");
addGroup("group2");
dbSession.commit();
GroupDto group1 = db.users().insertGroup(db.getDefaultOrganization(), "group1");
GroupDto group2 = db.users().insertGroup(db.getDefaultOrganization(), "group2");

underTest.authenticate(UserIdentity.builder()
.setProviderLogin("johndoo")
@@ -200,28 +177,20 @@ public class UserIdentityAuthenticatorTest {
// group3 doesn't exist in db, it will be ignored
.setGroups(newHashSet("group1", "group2", "group3"))
.build(), IDENTITY_PROVIDER);
dbSession.commit();

Set<String> userGroups = new HashSet<>(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(USER_LOGIN)).get(USER_LOGIN));
assertThat(userGroups).containsOnly("group1", "group2");
assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(group1.getId(), group2.getId());
}

@Test
public void authenticate_existing_user_and_remove_groups() throws Exception {
UserDto user = new UserDto()
UserDto user = db.users().insertUser(newUserDto()
.setLogin(USER_LOGIN)
.setActive(true)
.setName("John");
userDao.insert(dbSession, user);

GroupDto group1 = addGroup("group1");
GroupDto group2 = addGroup("group2");
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(user.getId()).setGroupId(group1.getId()));
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(user.getId()).setGroupId(group2.getId()));
dbSession.commit();

Set<String> userGroups = new HashSet<>(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(USER_LOGIN)).get(USER_LOGIN));
assertThat(userGroups).containsOnly("group1", "group2");
.setName("John"));
GroupDto group1 = db.users().insertGroup(db.getDefaultOrganization(), "group1");
GroupDto group2 = db.users().insertGroup(db.getDefaultOrganization(), "group2");
db.users().insertMember(group1, user);
db.users().insertMember(group2, user);

underTest.authenticate(UserIdentity.builder()
.setProviderLogin("johndoo")
@@ -230,38 +199,30 @@ public class UserIdentityAuthenticatorTest {
// Only group1 is returned by the id provider => group2 will be removed
.setGroups(newHashSet("group1"))
.build(), IDENTITY_PROVIDER);
dbSession.commit();

verifyUserGroups(USER_LOGIN, "group1");
assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(group1.getId());
}

@Test
public void authenticate_existing_user_and_remove_all_groups() throws Exception {
UserDto user = new UserDto()
UserDto user = db.users().insertUser(newUserDto()
.setLogin(USER_LOGIN)
.setActive(true)
.setName("John");
userDao.insert(dbSession, user);

GroupDto group1 = addGroup("group1");
GroupDto group2 = addGroup("group2");
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(user.getId()).setGroupId(group1.getId()));
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(user.getId()).setGroupId(group2.getId()));
dbSession.commit();

Set<String> userGroups = new HashSet<>(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(USER_LOGIN)).get(USER_LOGIN));
assertThat(userGroups).containsOnly("group1", "group2");
.setName("John"));
GroupDto group1 = db.users().insertGroup(db.getDefaultOrganization(), "group1");
GroupDto group2 = db.users().insertGroup(db.getDefaultOrganization(), "group2");
db.users().insertMember(group1, user);
db.users().insertMember(group2, user);

underTest.authenticate(UserIdentity.builder()
.setProviderLogin("johndoo")
.setLogin(USER_LOGIN)
.setName("John")
// No group => group1 and group2 will be removed
.setGroups(Collections.<String>emptySet())
.setGroups(Collections.emptySet())
.build(), IDENTITY_PROVIDER);
dbSession.commit();

verifyNoUserGroups(USER_LOGIN);
assertThat(db.users().selectGroupIdsOfUser(user)).isEmpty();
}

@Test
@@ -279,12 +240,10 @@ public class UserIdentityAuthenticatorTest {

@Test
public void fail_to_authenticate_new_user_when_email_already_exists() throws Exception {
UserDto userDto = UserTesting.newUserDto()
db.users().insertUser(newUserDto()
.setLogin("Existing user with same email")
.setActive(true)
.setEmail("john@email.com");
userDao.insert(dbSession, userDto);
dbSession.commit();
.setEmail("john@email.com"));

thrown.expect(UnauthorizedException.class);
thrown.expectMessage("You can't sign up because email 'john@email.com' is already used by an existing user. " +
@@ -292,20 +251,4 @@ public class UserIdentityAuthenticatorTest {
underTest.authenticate(USER_IDENTITY, IDENTITY_PROVIDER);
}

private void verifyUserGroups(String userLogin, String... groups) {
Set<String> userGroups = new HashSet<>(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(USER_LOGIN)).get(userLogin));
assertThat(userGroups).containsOnly(groups);
}

private void verifyNoUserGroups(String userLogin) {
Set<String> userGroups = new HashSet<>(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(USER_LOGIN)).get(userLogin));
assertThat(userGroups).isEmpty();
}

private GroupDto addGroup(String name) {
GroupDto group = new GroupDto().setName(name);
groupDao.insert(dbSession, group);
dbSession.commit();
return group;
}
}

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueAuthorizationDaoTest.java Vedi File

@@ -34,7 +34,7 @@ public class IssueAuthorizationDaoTest {
@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);

IssueAuthorizationDao dao = new IssueAuthorizationDao();
private IssueAuthorizationDao dao = new IssueAuthorizationDao();

@Test
public void select_all() {

+ 33
- 8
server/sonar-server/src/test/java/org/sonar/server/organization/DefaultOrganizationProviderRule.java Vedi File

@@ -19,24 +19,49 @@
*/
package org.sonar.server.organization;

import org.junit.rules.ExternalResource;
import java.util.Optional;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.server.property.InternalProperties;

public class DefaultOrganizationProviderRule extends ExternalResource implements DefaultOrganizationProvider {
import static com.google.common.base.Preconditions.checkState;

private final DbTester dbTester;
public class DefaultOrganizationProviderRule implements DefaultOrganizationProvider {

private DefaultOrganizationProviderRule(DbTester dbTester) {
this.dbTester = dbTester;
}
private final DbTester dbTester;

public static DefaultOrganizationProviderRule create(DbTester dbTester) {
return new DefaultOrganizationProviderRule(dbTester);
}


@Override
public DefaultOrganization get() {
return new DefaultOrganizationProviderImpl(dbTester.getDbClient()).get();
DbSession dbSession = dbTester.getSession();
Optional<String> uuid = dbTester.getDbClient().internalPropertiesDao().selectByKey(dbSession, InternalProperties.DEFAULT_ORGANIZATION);
checkState(uuid.isPresent() && !uuid.get().isEmpty(), "No Default organization uuid configured");
Optional<OrganizationDto> dto = dbTester.getDbClient().organizationDao().selectByUuid(dbSession, uuid.get());
checkState(dto.isPresent(), "Default organization with uuid '%s' does not exist", uuid.get());
return toDefaultOrganization(dto.get());
}

public OrganizationDto getDto() {
String uuid = get().getUuid();
return dbTester.getDbClient().organizationDao().selectByUuid(dbTester.getSession(), uuid)
.orElseThrow(() -> new IllegalStateException("Missing default organization in database [uuid=" + uuid + "]"));
}

private static DefaultOrganization toDefaultOrganization(OrganizationDto organizationDto) {
return DefaultOrganization.newBuilder()
.setUuid(organizationDto.getUuid())
.setKey(organizationDto.getKey())
.setName(organizationDto.getName())
.setCreatedAt(organizationDto.getCreatedAt())
.setUpdatedAt(organizationDto.getUpdatedAt())
.build();
}

private DefaultOrganizationProviderRule(DbTester dbTester) {
this.dbTester = dbTester;
}
}

+ 51
- 73
server/sonar-server/src/test/java/org/sonar/server/project/ws/SearchMyProjectsActionTest.java Vedi File

@@ -36,16 +36,11 @@ import org.sonar.core.util.Uuids;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentLinkDto;
import org.sonar.db.component.SnapshotDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.db.permission.GroupPermissionDto;
import org.sonar.db.permission.UserPermissionDto;
import org.sonar.db.user.GroupDbTester;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDbTester;
import org.sonar.db.user.UserDto;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.UnauthorizedException;
@@ -78,20 +73,16 @@ public class SearchMyProjectsActionTest {
public UserSessionRule userSession = UserSessionRule.standalone();
@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
ComponentDbTester componentDb = new ComponentDbTester(db);
UserDbTester userDb = new UserDbTester(db);
GroupDbTester groupDb = new GroupDbTester(db);
DbClient dbClient = db.getDbClient();
DbSession dbSession = db.getSession();

WsActionTester ws;

UserDto user;
MetricDto alertStatusMetric;
private DbClient dbClient = db.getDbClient();
private DbSession dbSession = db.getSession();
private WsActionTester ws;
private UserDto user;
private MetricDto alertStatusMetric;

@Before
public void setUp() {
user = userDb.insertUser(newUserDto().setLogin(USER_LOGIN));
user = db.users().insertUser(newUserDto().setLogin(USER_LOGIN));
userSession.login(this.user.getLogin()).setUserId(user.getId().intValue());
alertStatusMetric = dbClient.metricDao().insert(dbSession, newMetricDto().setKey(ALERT_STATUS_KEY).setValueType(ValueType.LEVEL.name()));
db.commit();
@@ -113,8 +104,8 @@ public class SearchMyProjectsActionTest {
SnapshotDto cLangSnapshot = dbClient.snapshotDao().insert(dbSession, newAnalysis(cLang).setCreatedAt(anotherTime));
dbClient.measureDao().insert(dbSession, newMeasureDto(alertStatusMetric, jdk7, jdk7Snapshot).setData(Level.ERROR.name()));
dbClient.measureDao().insert(dbSession, newMeasureDto(alertStatusMetric, cLang, cLangSnapshot).setData(Level.OK.name()));
insertUserPermission(UserRole.ADMIN, user.getId(), jdk7.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), cLang.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, jdk7);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, cLang);
db.commit();
System.setProperty("user.timezone", "UTC");

@@ -127,9 +118,9 @@ public class SearchMyProjectsActionTest {
public void return_only_current_user_projects() {
ComponentDto jdk7 = insertJdk7();
ComponentDto cLang = insertClang();
UserDto anotherUser = userDb.insertUser(newUserDto());
insertUserPermission(UserRole.ADMIN, user.getId(), jdk7.getId());
insertUserPermission(UserRole.ADMIN, anotherUser.getId(), cLang.getId());
UserDto anotherUser = db.users().insertUser(newUserDto());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, jdk7);
db.users().insertProjectPermissionOnUser(anotherUser, UserRole.ADMIN, cLang);

SearchMyProjectsWsResponse result = call_ws();

@@ -139,13 +130,13 @@ public class SearchMyProjectsActionTest {

@Test
public void sort_projects_by_name() {
ComponentDto b_project = componentDb.insertComponent(newProjectDto().setName("B_project_name"));
ComponentDto c_project = componentDb.insertComponent(newProjectDto().setName("c_project_name"));
ComponentDto a_project = componentDb.insertComponent(newProjectDto().setName("A_project_name"));
ComponentDto b_project = db.components().insertComponent(newProjectDto().setName("B_project_name"));
ComponentDto c_project = db.components().insertComponent(newProjectDto().setName("c_project_name"));
ComponentDto a_project = db.components().insertComponent(newProjectDto().setName("A_project_name"));

insertUserPermission(UserRole.ADMIN, user.getId(), b_project.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), a_project.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), c_project.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, b_project);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, a_project);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, c_project);

SearchMyProjectsWsResponse result = call_ws();

@@ -157,8 +148,8 @@ public class SearchMyProjectsActionTest {
@Test
public void paginate_projects() {
for (int i = 0; i < 10; i++) {
ComponentDto project = componentDb.insertComponent(newProjectDto().setName("project-" + i));
insertUserPermission(UserRole.ADMIN, user.getId(), project.getId());
ComponentDto project = db.components().insertComponent(newProjectDto().setName("project-" + i));
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, project);
}

SearchMyProjectsWsResponse result = call_ws(ws.newRequest()
@@ -174,8 +165,8 @@ public class SearchMyProjectsActionTest {
ComponentDto jdk7 = insertJdk7();
ComponentDto clang = insertClang();

insertUserPermission(UserRole.ADMIN, user.getId(), jdk7.getId());
insertUserPermission(UserRole.ISSUE_ADMIN, user.getId(), clang.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, jdk7);
db.users().insertProjectPermissionOnUser(user, UserRole.ISSUE_ADMIN, clang);

SearchMyProjectsWsResponse result = call_ws();

@@ -189,9 +180,9 @@ public class SearchMyProjectsActionTest {
ComponentDto dev = insertDeveloper();
ComponentDto view = insertView();

insertUserPermission(UserRole.ADMIN, user.getId(), jdk7.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), dev.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), view.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, jdk7);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, dev);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, view);

SearchMyProjectsWsResponse result = call_ws();

@@ -204,11 +195,11 @@ public class SearchMyProjectsActionTest {
ComponentDto jdk7 = insertJdk7();
ComponentDto cLang = insertClang();

GroupDto group = groupDb.insertGroup(newGroupDto());
groupDb.addUserToGroup(user.getId(), group.getId());
GroupDto group = db.users().insertGroup(newGroupDto());
db.users().insertMember(group, user);

insertGroupPermission(UserRole.ADMIN, group.getId(), jdk7.getId());
insertGroupPermission(UserRole.USER, group.getId(), cLang.getId());
db.users().insertProjectPermissionOnGroup(group, UserRole.ADMIN, jdk7);
db.users().insertProjectPermissionOnGroup(group, UserRole.USER, cLang);

SearchMyProjectsWsResponse result = call_ws();

@@ -220,16 +211,16 @@ public class SearchMyProjectsActionTest {
public void admin_via_groups_and_users() {
ComponentDto jdk7 = insertJdk7();
ComponentDto cLang = insertClang();
ComponentDto sonarqube = componentDb.insertComponent(newProjectDto());
ComponentDto sonarqube = db.components().insertComponent(newProjectDto());

GroupDto group = groupDb.insertGroup(newGroupDto());
groupDb.addUserToGroup(user.getId(), group.getId());
GroupDto group = db.users().insertGroup(newGroupDto());
db.users().insertMember(group, user);

insertUserPermission(UserRole.ADMIN, user.getId(), jdk7.getId());
insertGroupPermission(UserRole.ADMIN, group.getId(), cLang.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, jdk7);
db.users().insertProjectPermissionOnGroup(group, UserRole.ADMIN, cLang);
// admin via group and user
insertUserPermission(UserRole.ADMIN, user.getId(), sonarqube.getId());
insertGroupPermission(UserRole.ADMIN, group.getId(), sonarqube.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, sonarqube);
db.users().insertProjectPermissionOnGroup(group, UserRole.ADMIN, sonarqube);

SearchMyProjectsWsResponse result = call_ws();

@@ -239,16 +230,16 @@ public class SearchMyProjectsActionTest {

@Test
public void search_my_projects_by_name() {
ComponentDto sonarqube = componentDb.insertComponent(newProjectDto().setName("ONE_PROJECT_NAME"));
ComponentDto jdk8 = componentDb.insertComponent(newProjectDto().setName("TWO_PROJECT_NAME"));
ComponentDto ruby = componentDb.insertComponent(newProjectDto().setName("ANOTHER_42"));
ComponentDto sonarqube = db.components().insertComponent(newProjectDto().setName("ONE_PROJECT_NAME"));
ComponentDto jdk8 = db.components().insertComponent(newProjectDto().setName("TWO_PROJECT_NAME"));
ComponentDto ruby = db.components().insertComponent(newProjectDto().setName("ANOTHER_42"));
dbClient.snapshotDao().insert(dbSession, newAnalysis(sonarqube), newAnalysis(jdk8), newAnalysis(ruby));
componentDb.indexAllComponents();
db.components().indexAllComponents();
db.commit();

insertUserPermission(UserRole.ADMIN, user.getId(), sonarqube.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), jdk8.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), ruby.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, sonarqube);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, jdk8);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, ruby);

SearchMyProjectsWsResponse result = call_ws(ws.newRequest().setParam(TEXT_QUERY, "_project_"));

@@ -260,14 +251,14 @@ public class SearchMyProjectsActionTest {

@Test
public void search_my_projects_by_exact_match_on_key() {
ComponentDto sonarqube = componentDb.insertComponent(newProjectDto().setKey("MY_PROJECT_KEY"));
ComponentDto ruby = componentDb.insertComponent(newProjectDto().setKey("MY_PROJECT_KEY_OR_ELSE"));
ComponentDto sonarqube = db.components().insertComponent(newProjectDto().setKey("MY_PROJECT_KEY"));
ComponentDto ruby = db.components().insertComponent(newProjectDto().setKey("MY_PROJECT_KEY_OR_ELSE"));
dbClient.snapshotDao().insert(dbSession, newAnalysis(sonarqube), newAnalysis(ruby));
componentDb.indexAllComponents();
db.components().indexAllComponents();
db.commit();

insertUserPermission(UserRole.ADMIN, user.getId(), sonarqube.getId());
insertUserPermission(UserRole.ADMIN, user.getId(), ruby.getId());
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, sonarqube);
db.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, ruby);

SearchMyProjectsWsResponse result = call_ws(ws.newRequest().setParam(TEXT_QUERY, "MY_PROJECT_KEY"));

@@ -300,42 +291,29 @@ public class SearchMyProjectsActionTest {
}

private ComponentDto insertClang() {
return componentDb.insertComponent(newProjectDto(Uuids.UUID_EXAMPLE_01)
return db.components().insertComponent(newProjectDto(Uuids.UUID_EXAMPLE_01)
.setName("Clang")
.setKey("clang"));
}

private ComponentDto insertJdk7() {
return componentDb.insertComponent(newProjectDto(Uuids.UUID_EXAMPLE_02)
return db.components().insertComponent(newProjectDto(Uuids.UUID_EXAMPLE_02)
.setName("JDK 7")
.setKey("net.java.openjdk:jdk7")
.setDescription("JDK"));
}

private ComponentDto insertView() {
return componentDb.insertComponent(newView("752d8bfd-420c-4a83-a4e5-8ab19b13c8fc")
return db.components().insertComponent(newView("752d8bfd-420c-4a83-a4e5-8ab19b13c8fc")
.setName("Java")
.setKey("Java"));
}

private ComponentDto insertDeveloper() {
return componentDb.insertComponent(newDeveloper("Joda", "4e607bf9-7ed0-484a-946d-d58ba7dab2fb")
return db.components().insertComponent(newDeveloper("Joda", "4e607bf9-7ed0-484a-946d-d58ba7dab2fb")
.setKey("joda"));
}

private void insertUserPermission(String permission, long userId, long componentId) {
dbClient.userPermissionDao().insert(dbSession, new UserPermissionDto(permission, userId, componentId));
db.commit();
}

private void insertGroupPermission(String permission, long groupId, long componentId) {
dbClient.roleDao().insertGroupRole(dbSession, new GroupPermissionDto()
.setRole(permission)
.setGroupId(groupId)
.setResourceId(componentId));
db.commit();
}

private SearchMyProjectsWsResponse call_ws() {
return call_ws(ws.newRequest());
}

+ 9
- 27
server/sonar-server/src/test/java/org/sonar/server/qualitygate/QgateProjectFinderTest.java Vedi File

@@ -36,7 +36,6 @@ import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.permission.GroupPermissionDto;
import org.sonar.db.permission.UserPermissionDto;
import org.sonar.db.property.PropertyDto;
import org.sonar.db.qualitygate.ProjectQgateAssociation;
import org.sonar.db.qualitygate.QualityGateDto;
@@ -51,7 +50,6 @@ import static org.sonar.db.component.ComponentTesting.newProjectDto;
import static org.sonar.db.qualitygate.ProjectQgateAssociationQuery.IN;
import static org.sonar.db.qualitygate.ProjectQgateAssociationQuery.OUT;
import static org.sonar.db.qualitygate.ProjectQgateAssociationQuery.builder;
import static org.sonar.db.user.UserTesting.newUserDto;
import static org.sonar.server.qualitygate.QualityGates.SONAR_QUALITYGATE_PROPERTY;

public class QgateProjectFinderTest {
@@ -65,23 +63,14 @@ public class QgateProjectFinderTest {
@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);

DbClient dbClient = dbTester.getDbClient();

DbSession dbSession = dbTester.getSession();

ComponentDbTester componentDbTester = new ComponentDbTester(dbTester);

UserDto userDto;

QualityGateDto qGate;

QgateProjectFinder underTest = new QgateProjectFinder(dbClient, userSession);
private DbClient dbClient = dbTester.getDbClient();
private DbSession dbSession = dbTester.getSession();
private ComponentDbTester componentDbTester = new ComponentDbTester(dbTester);
private QualityGateDto qGate;
private QgateProjectFinder underTest = new QgateProjectFinder(dbClient, userSession);

@Before
public void setUp() throws Exception {
userDto = newUserDto();
dbClient.userDao().insert(dbSession, userDto);

qGate = new QualityGateDto().setName("Default Quality Gate");
dbClient.qualityGateDao().insert(dbSession, qGate);

@@ -152,14 +141,14 @@ public class QgateProjectFinderTest {

@Test
public void return_only_authorized_projects() throws Exception {
userSession.login(userDto.getLogin()).setUserId(userDto.getId().intValue());
UserDto user = dbTester.users().insertUser("a_login");
ComponentDto project1 = componentDbTester.insertComponent(newProjectDto());
componentDbTester.insertComponent(newProjectDto());

// User can only see project 1
dbClient.userPermissionDao().insert(dbSession, new UserPermissionDto(UserRole.USER, userDto.getId(), project1.getId()));
dbTester.commit();
dbTester.users().insertProjectPermissionOnUser(user, UserRole.USER, project1);

userSession.login(user.getLogin()).setUserId(user.getId().intValue());
Association result = underTest.find(
builder()
.gateId(Long.toString(qGate.getId()))
@@ -246,14 +235,7 @@ public class QgateProjectFinderTest {

private ComponentDto insertProjectAuthorizedToAnyone(ComponentDto project) {
componentDbTester.insertComponent(project);
dbClient.roleDao().insertGroupRole(dbSession, new GroupPermissionDto().setGroupId(null).setResourceId(project.getId()).setRole(UserRole.USER));
dbSession.commit();
return project;
}

private ComponentDto insertProjectAuthorizedToUser(ComponentDto project, UserDto userDto) {
componentDbTester.insertComponent(project);
dbClient.roleDao().insertGroupRole(dbSession, new GroupPermissionDto().setGroupId(null).setResourceId(project.getId()).setRole(UserRole.USER));
dbClient.groupPermissionDao().insert(dbSession, new GroupPermissionDto().setGroupId(null).setResourceId(project.getId()).setRole(UserRole.USER));
dbSession.commit();
return project;
}

+ 7
- 3
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfileProjectOperationsMediumTest.java Vedi File

@@ -30,9 +30,12 @@ import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentTesting;
import org.sonar.db.permission.PermissionRepository;
import org.sonar.db.permission.UserPermissionDao;
import org.sonar.db.permission.UserPermissionDto;
import org.sonar.db.qualityprofile.QualityProfileDto;
import org.sonar.db.user.UserDto;
import org.sonar.server.organization.DefaultOrganization;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.tester.MockUserSession;
import org.sonar.server.tester.ServerTester;
import org.sonar.server.tester.UserSessionRule;
@@ -132,8 +135,9 @@ public class QProfileProjectOperationsMediumTest {
// Create a user having user permission on the two projects and the global quality profile admin permission
UserDto user = new UserDto().setLogin("john").setName("John").setEmail("jo@hn.com").setCreatedAt(System.currentTimeMillis()).setUpdatedAt(System.currentTimeMillis());
db.userDao().insert(dbSession, user);
tester.get(PermissionRepository.class).insertUserPermission(project1.getId(), user.getId(), UserRole.USER, dbSession);
tester.get(PermissionRepository.class).insertUserPermission(project2.getId(), user.getId(), UserRole.USER, dbSession);
DefaultOrganization defaultOrganization = tester.get(DefaultOrganizationProvider.class).get();
tester.get(UserPermissionDao.class).insert(dbSession, new UserPermissionDto(defaultOrganization.getUuid(), UserRole.USER, user.getId(), project1.getId()));
tester.get(UserPermissionDao.class).insert(dbSession, new UserPermissionDto(defaultOrganization.getUuid(), UserRole.USER, user.getId(), project2.getId()));
UserSession userSession = userSessionRule.login("john").setUserId(user.getId().intValue()).setName("John")
.setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN);


+ 37
- 48
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProjectsActionTest.java Vedi File

@@ -29,11 +29,9 @@ import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentTesting;
import org.sonar.db.permission.GroupPermissionDto;
import org.sonar.db.permission.UserPermissionDto;
import org.sonar.db.qualityprofile.QualityProfileDto;
import org.sonar.db.user.RoleDao;
import org.sonar.db.user.UserDto;
import org.sonar.db.user.UserTesting;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.qualityprofile.QProfileTesting;
import org.sonar.server.tester.UserSessionRule;
@@ -45,26 +43,21 @@ import static org.mockito.Mockito.mock;
public class ProjectsActionTest {

@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);
public DbTester db = DbTester.create(System2.INSTANCE);
@Rule
public UserSessionRule userSessionRule = UserSessionRule.standalone();

private DbClient dbClient = dbTester.getDbClient();

private DbSession session = dbTester.getSession();
private DbClient dbClient = db.getDbClient();
private DbSession dbSession = db.getSession();

private UserDto user;
private QualityProfileDto xooP1;
private QualityProfileDto xooP2;

private ComponentDto project1;
private ComponentDto project2;
private ComponentDto project3;
private ComponentDto project4;

private Long userId = 42L;

private RoleDao roleDao = dbClient.roleDao();

private WsTester wsTester = new WsTester(new QProfilesWs(
mock(RuleActivationActions.class),
mock(BulkRuleActivationActions.class),
@@ -72,30 +65,26 @@ public class ProjectsActionTest {

@Before
public void setUp() {
userSessionRule.login("obiwan").setUserId(userId.intValue());
dbClient.userDao()
.insert(session, new UserDto()
.setActive(true)
.setId(userId)
.setLogin("obiwan"));
user = db.users().insertUser(UserTesting.newUserDto().setLogin("obiwan"));
userSessionRule.login("obiwan").setUserId(user.getId().intValue());

createProfiles();

session.commit();
dbSession.commit();
}

@Test
public void should_list_authorized_projects_only() throws Exception {
project1 = newProject("ABCD", "Project One");
project2 = newProject("BCDE", "Project Two");
dbClient.componentDao().insert(session, project1, project2);
db.components().insertComponents(project1, project2);

// user only sees project1
dbClient.userPermissionDao().insert(session, new UserPermissionDto(UserRole.USER, userId, project1.getId()));
db.users().insertProjectPermissionOnUser(user, UserRole.USER, project1);

associateProjectsWithProfile(session, xooP1, project1, project2);
associateProjectsWithProfile(dbSession, xooP1, project1, project2);

session.commit();
dbSession.commit();

newRequest().setParam("key", xooP1.getKey()).setParam("selected", "selected").execute().assertJson(this.getClass(), "authorized_selected.json");
}
@@ -106,13 +95,13 @@ public class ProjectsActionTest {
project2 = newProject("BCDE", "Project Two");
project3 = newProject("CDEF", "Project Three");
project4 = newProject("DEFA", "Project Four");
dbClient.componentDao().insert(session, project1, project2, project3, project4);
dbClient.componentDao().insert(dbSession, project1, project2, project3, project4);

addBrowsePermissionToAnyone(session, project1, project2, project3, project4);
addBrowsePermissionToAnyone(project1, project2, project3, project4);

associateProjectsWithProfile(session, xooP1, project1, project2, project3, project4);
associateProjectsWithProfile(dbSession, xooP1, project1, project2, project3, project4);

session.commit();
dbSession.commit();

newRequest().setParam("key", xooP1.getKey()).setParam("selected", "selected").setParam("pageSize", "2")
.execute().assertJson(this.getClass(), "selected_page1.json");
@@ -137,13 +126,13 @@ public class ProjectsActionTest {
project2 = newProject("BCDE", "Project Two");
project3 = newProject("CDEF", "Project Three");
project4 = newProject("DEFA", "Project Four");
dbClient.componentDao().insert(session, project1, project2, project3, project4);
dbClient.componentDao().insert(dbSession, project1, project2, project3, project4);

addBrowsePermissionToAnyone(session, project1, project2, project3, project4);
addBrowsePermissionToAnyone(project1, project2, project3, project4);

associateProjectsWithProfile(session, xooP1, project1, project2);
associateProjectsWithProfile(dbSession, xooP1, project1, project2);

session.commit();
dbSession.commit();

newRequest().setParam("key", xooP1.getKey()).setParam("selected", "deselected").execute().assertJson(this.getClass(), "deselected.json");
}
@@ -154,15 +143,15 @@ public class ProjectsActionTest {
project2 = newProject("BCDE", "Project Two");
project3 = newProject("CDEF", "Project Three");
project4 = newProject("DEFA", "Project Four");
dbClient.componentDao().insert(session, project1, project2, project3, project4);
dbClient.componentDao().insert(dbSession, project1, project2, project3, project4);

addBrowsePermissionToAnyone(session, project1, project2, project3, project4);
addBrowsePermissionToAnyone(project1, project2, project3, project4);

associateProjectsWithProfile(session, xooP1, project1, project2);
associateProjectsWithProfile(dbSession, xooP1, project1, project2);
// project3 is associated with P2, must appear as not associated with xooP1
associateProjectsWithProfile(session, xooP2, project3);
associateProjectsWithProfile(dbSession, xooP2, project3);

session.commit();
dbSession.commit();

newRequest().setParam("key", xooP1.getKey()).setParam("selected", "all").execute().assertJson(this.getClass(), "all.json");
}
@@ -173,13 +162,13 @@ public class ProjectsActionTest {
project2 = newProject("BCDE", "Project Two");
project3 = newProject("CDEF", "Project Three");
project4 = newProject("DEFA", "Project Four");
dbClient.componentDao().insert(session, project1, project2, project3, project4);
dbClient.componentDao().insert(dbSession, project1, project2, project3, project4);

addBrowsePermissionToAnyone(session, project1, project2, project3, project4);
addBrowsePermissionToAnyone(project1, project2, project3, project4);

associateProjectsWithProfile(session, xooP1, project1, project2);
associateProjectsWithProfile(dbSession, xooP1, project1, project2);

session.commit();
dbSession.commit();

newRequest().setParam("key", xooP1.getKey()).setParam("selected", "all").setParam("query", "project t").execute().assertJson(this.getClass(), "all_filtered.json");
}
@@ -195,15 +184,15 @@ public class ProjectsActionTest {
project2 = newProject("BCDE", "Project Two");
project3 = newProject("CDEF", "Project Three");
project4 = newProject("DEFA", "Project Four");
dbClient.componentDao().insert(session, project1, project2, project3, project4);
dbClient.componentDao().insert(dbSession, project1, project2, project3, project4);

addBrowsePermissionToAnyone(session, project1, project2, project3, project4);
addBrowsePermissionToAnyone(project1, project2, project3, project4);

associateProjectsWithProfile(session, xooP1, project1, project2);
associateProjectsWithProfile(dbSession, xooP1, project1, project2);
// project3 is associated with P2, must appear as not associated with xooP1
associateProjectsWithProfile(session, xooP2, project3);
associateProjectsWithProfile(dbSession, xooP2, project3);

session.commit();
dbSession.commit();

newRequest().setParam("key", xooP1.getKey()).setParam("selected", "all").execute().assertJson(this.getClass(), "return_deprecated_uuid_field.json");
}
@@ -211,7 +200,7 @@ public class ProjectsActionTest {
private void createProfiles() {
xooP1 = QProfileTesting.newXooP1();
xooP2 = QProfileTesting.newXooP2();
dbClient.qualityProfileDao().insert(session, xooP1, xooP2);
dbClient.qualityProfileDao().insert(dbSession, xooP1, xooP2);
}

private TestRequest newRequest() {
@@ -222,9 +211,9 @@ public class ProjectsActionTest {
return ComponentTesting.newProjectDto(uuid).setName(name);
}

private void addBrowsePermissionToAnyone(DbSession session, ComponentDto... projects) {
private void addBrowsePermissionToAnyone(ComponentDto... projects) {
for (ComponentDto project : projects) {
roleDao.insertGroupRole(session, new GroupPermissionDto().setGroupId(null).setResourceId(project.getId()).setRole(UserRole.USER));
db.users().insertProjectPermissionOnAnyone(UserRole.USER, project);
}
}


+ 21
- 26
server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java Vedi File

@@ -41,12 +41,10 @@ import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.property.PropertyDbTester;
import org.sonar.db.property.PropertyDto;
import org.sonar.db.property.PropertyQuery;
import org.sonar.db.user.UserDbTester;
import org.sonar.scanner.protocol.GsonHelper;
import org.sonar.server.component.ComponentFinder;
import org.sonar.server.exceptions.BadRequestException;
@@ -79,22 +77,19 @@ public class SetActionTest {
.setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);
@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
PropertyDbTester propertyDb = new PropertyDbTester(db);
UserDbTester userDb = new UserDbTester(db);
ComponentDbTester componentDb = new ComponentDbTester(db);
DbClient dbClient = db.getDbClient();
DbSession dbSession = db.getSession();
ComponentFinder componentFinder = new ComponentFinder(dbClient);
private PropertyDbTester propertyDb = new PropertyDbTester(db);
private DbClient dbClient = db.getDbClient();
private DbSession dbSession = db.getSession();
private ComponentFinder componentFinder = new ComponentFinder(dbClient);

I18nRule i18n = new I18nRule();
PropertyDefinitions definitions = new PropertyDefinitions();
FakeSettingsNotifier settingsChangeNotifier = new FakeSettingsNotifier(dbClient);
SettingsUpdater settingsUpdater = new SettingsUpdater(dbClient, definitions);
SettingValidations validations = new SettingValidations(definitions, dbClient, i18n);
private I18nRule i18n = new I18nRule();
private PropertyDefinitions definitions = new PropertyDefinitions();
private FakeSettingsNotifier settingsChangeNotifier = new FakeSettingsNotifier(dbClient);
private SettingsUpdater settingsUpdater = new SettingsUpdater(dbClient, definitions);
private SettingValidations validations = new SettingValidations(definitions, dbClient, i18n);
private SetAction underTest = new SetAction(definitions, dbClient, componentFinder, userSession, settingsUpdater, settingsChangeNotifier, validations);

SetAction underTest = new SetAction(definitions, dbClient, componentFinder, userSession, settingsUpdater, settingsChangeNotifier, validations);

WsActionTester ws = new WsActionTester(underTest);
private WsActionTester ws = new WsActionTester(underTest);

@Test
public void empty_204_response() {
@@ -129,7 +124,7 @@ public class SetActionTest {
@Test
public void persist_new_project_setting() {
propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"));
ComponentDto project = componentDb.insertProject();
ComponentDto project = db.components().insertProject();

callForProjectSettingByUuid("my.key", "my project value", project.uuid());

@@ -140,7 +135,7 @@ public class SetActionTest {

@Test
public void persist_project_property_with_project_admin_permission() {
ComponentDto project = componentDb.insertProject();
ComponentDto project = db.components().insertProject();
userSession.anonymous().addProjectUuidPermissions(UserRole.ADMIN, project.uuid());

callForProjectSettingByUuid("my.key", "my value", project.uuid());
@@ -151,7 +146,7 @@ public class SetActionTest {
@Test
public void update_existing_project_setting() {
propertyDb.insertProperty(newGlobalPropertyDto("my.key", "my global value"));
ComponentDto project = componentDb.insertProject();
ComponentDto project = db.components().insertProject();
propertyDb.insertProperty(newComponentPropertyDto("my.key", "my project value", project));
assertComponentSetting("my.key", "my project value", project.getId());

@@ -281,7 +276,7 @@ public class SetActionTest {
.type(PropertyType.STRING)
.build()))
.build());
ComponentDto project = componentDb.insertProject();
ComponentDto project = db.components().insertProject();
propertyDb.insertProperties(
newGlobalPropertyDto("my.key", "1"),
newGlobalPropertyDto("my.key.1.firstField", "oldFirstValue"),
@@ -342,8 +337,8 @@ public class SetActionTest {
.defaultValue("default")
.multiValues(true)
.build());
userDb.insertUser(newUserDto().setLogin("login.1"));
userDb.insertUser(newUserDto().setLogin("login.2"));
db.users().insertUser(newUserDto().setLogin("login.1"));
db.users().insertUser(newUserDto().setLogin("login.2"));

callForMultiValueGlobalSetting("my.key", newArrayList("login.1", "login.2"));

@@ -479,8 +474,8 @@ public class SetActionTest {
.defaultValue("default")
.multiValues(true)
.build());
userDb.insertUser(newUserDto().setLogin("login.1"));
userDb.insertUser(newUserDto().setLogin("login.2").setActive(false));
db.users().insertUser(newUserDto().setLogin("login.1"));
db.users().insertUser(newUserDto().setLogin("login.2").setActive(false));

expectedException.expect(BadRequestException.class);
expectedException.expectMessage("Error when validating login setting with key 'my.key' and values [login.1, login.2]. A value is not a valid login.");
@@ -535,7 +530,7 @@ public class SetActionTest {
.defaultValue("default")
.onQualifiers(Qualifiers.PROJECT)
.build());
ComponentDto view = componentDb.insertComponent(newView("view-uuid"));
ComponentDto view = db.components().insertComponent(newView("view-uuid"));
i18n.put("qualifier." + Qualifiers.VIEW, "View");
expectedException.expect(BadRequestException.class);
expectedException.expectMessage("Setting 'my.key' cannot be set on a View");
@@ -782,7 +777,7 @@ public class SetActionTest {
.fields(newArrayList(PropertyFieldDefinition.build("firstField").name("First Field").type(PropertyType.STRING).build()))
.build());
i18n.put("qualifier." + Qualifiers.PROJECT, "Project");
ComponentDto project = componentDb.insertProject();
ComponentDto project = db.components().insertProject();

expectedException.expect(BadRequestException.class);
expectedException.expectMessage("Setting 'my.key' cannot be set on a Project");

+ 14
- 25
server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java Vedi File

@@ -23,29 +23,29 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.Settings;
import org.sonar.api.config.MapSettings;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.config.Settings;
import org.sonar.api.utils.System2;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.user.GroupDao;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.GroupTesting;
import org.sonar.db.user.UserDao;
import org.sonar.db.user.UserGroupDao;
import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.DefaultOrganizationProviderRule;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.user.ExternalIdentity;
import org.sonar.server.user.NewUser;
import org.sonar.server.user.NewUserNotifier;
import org.sonar.server.user.SecurityRealmFactory;
import org.sonar.server.user.UserUpdater;
import org.sonar.server.user.index.UserIndex;
import org.sonar.server.user.index.UserIndexDefinition;
import org.sonar.server.user.index.UserIndexer;
import org.sonar.server.ws.WsTester;
@@ -57,7 +57,7 @@ import static org.mockito.Mockito.when;

public class ChangePasswordActionTest {

static final Settings settings = new MapSettings().setProperty("sonar.defaultGroup", "sonar-users");
private Settings settings = new MapSettings();

@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);
@@ -68,21 +68,12 @@ public class ChangePasswordActionTest {
@Rule
public UserSessionRule userSessionRule = UserSessionRule.standalone().login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);

WebService.Controller controller;

WsTester tester;

UserIndex index;

DbClient dbClient;

UserUpdater userUpdater;

UserIndexer userIndexer;

DbSession session;

SecurityRealmFactory realmFactory = mock(SecurityRealmFactory.class);
private WsTester tester;
private DbClient dbClient;
private UserUpdater userUpdater;
private DbSession session;
private SecurityRealmFactory realmFactory = mock(SecurityRealmFactory.class);
private DefaultOrganizationProvider defaultOrganizationProvider = DefaultOrganizationProviderRule.create(dbTester);

@Before
public void setUp() {
@@ -92,14 +83,12 @@ public class ChangePasswordActionTest {
GroupDao groupDao = new GroupDao(system2);
dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), userDao, userGroupDao, groupDao);
session = dbClient.openSession(false);
groupDao.insert(session, new GroupDto().setName("sonar-users"));
groupDao.insert(session, GroupTesting.newGroupDto().setName("sonar-users"));
session.commit();

userIndexer = new UserIndexer(dbClient, esTester.client());
index = new UserIndex(esTester.client());
userUpdater = new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2);
UserIndexer userIndexer = new UserIndexer(dbClient, esTester.client());
userUpdater = new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2, defaultOrganizationProvider);
tester = new WsTester(new UsersWs(new ChangePasswordAction(userUpdater, userSessionRule)));
controller = tester.controller("api/users");
}

@After

+ 29
- 45
server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java Vedi File

@@ -20,26 +20,22 @@
package org.sonar.server.user.ws;

import java.util.Locale;
import org.junit.After;
import java.util.Optional;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.MapSettings;
import org.sonar.api.config.Settings;
import org.sonar.api.i18n.I18n;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.user.GroupDao;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDao;
import org.sonar.db.user.UserGroupDao;
import org.sonar.db.user.UserTesting;
import org.sonar.db.user.UserDto;
import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.DefaultOrganizationProviderRule;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.user.NewUserNotifier;
import org.sonar.server.user.UserUpdater;
@@ -52,13 +48,15 @@ import org.sonar.server.ws.WsTester;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.sonar.db.user.UserTesting.newUserDto;

public class CreateActionTest {

private static final Settings settings = new MapSettings().setProperty("sonar.defaultGroup", "sonar-users");
private static final String DEFAULT_GROUP_NAME = "sonar-users";
private Settings settings = new MapSettings().setProperty("sonar.defaultGroup", DEFAULT_GROUP_NAME);

@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);
public DbTester db = DbTester.create(System2.INSTANCE);

@Rule
public EsTester esTester = new EsTester(new UserIndexDefinition(settings));
@@ -66,42 +64,22 @@ public class CreateActionTest {
@Rule
public UserSessionRule userSessionRule = UserSessionRule.standalone();

WebService.Controller controller;

WsTester tester;

UserIndex index;

DbClient dbClient;

UserIndexer userIndexer;

DbSession session;

I18n i18n = mock(I18n.class);
private WsTester tester;
private UserIndex index;
private UserIndexer userIndexer;
private I18n i18n = mock(I18n.class);
private GroupDto defaultGroupInDefaultOrg;

@Before
public void setUp() {
System2 system2 = new System2();
UserDao userDao = new UserDao(dbTester.myBatis(), system2);
UserGroupDao userGroupDao = new UserGroupDao();
GroupDao groupDao = new GroupDao(system2);
dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), userDao, userGroupDao, groupDao);
session = dbClient.openSession(false);
groupDao.insert(session, new GroupDto().setName("sonar-users"));
session.commit();

userIndexer = new UserIndexer(dbClient, esTester.client());
defaultGroupInDefaultOrg = db.users().insertGroup(db.getDefaultOrganization(), DEFAULT_GROUP_NAME);
userIndexer = new UserIndexer(db.getDbClient(), esTester.client());
index = new UserIndex(esTester.client());
tester = new WsTester(new UsersWs(new CreateAction(dbClient,
new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2),
DefaultOrganizationProvider defaultOrganizationProvider = DefaultOrganizationProviderRule.create(db);
tester = new WsTester(new UsersWs(new CreateAction(db.getDbClient(),
new UserUpdater(mock(NewUserNotifier.class), settings, db.getDbClient(), userIndexer, system2, defaultOrganizationProvider),
i18n, userSessionRule, new UserJsonWriter(userSessionRule))));
controller = tester.controller("api/users");
}

@After
public void tearDown() {
session.close();
}

@Test
@@ -121,10 +99,17 @@ public class CreateActionTest {
assertThat(user.name()).isEqualTo("John");
assertThat(user.email()).isEqualTo("john@email.com");
assertThat(user.scmAccounts()).containsOnly("jn");

// exists in db
Optional<UserDto> dbUser = db.users().selectUserByLogin("john");
assertThat(dbUser).isPresent();

// member of default group in default organization
assertThat(db.users().selectGroupIdsOfUser(dbUser.get())).containsOnly(defaultGroupInDefaultOrg.getId());
}

@Test
public void create_user_with_coma_in_scm_account() throws Exception {
public void create_user_with_comma_in_scm_account() throws Exception {
userSessionRule.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);

tester.newPostRequest("api/users", "create")
@@ -174,11 +159,10 @@ public class CreateActionTest {
public void reactivate_user() throws Exception {
userSessionRule.login("admin").setLocale(Locale.FRENCH).setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);

dbClient.userDao().insert(session, UserTesting.newUserDto("john", "John", "john@email.com"));
session.commit();
dbClient.userDao().deactivateUserByLogin(session, "john");
db.users().insertUser(newUserDto("john", "John", "john@email.com"));
db.getDbClient().userDao().deactivateUserByLogin(db.getSession(), "john");
db.commit();
userIndexer.index();

when(i18n.message(Locale.FRENCH, "user.reactivated", "user.reactivated", "john")).thenReturn("The user 'john' has been reactivated.");

tester.newPostRequest("api/users", "create")

+ 5
- 9
server/sonar-server/src/test/java/org/sonar/server/user/ws/CurrentActionTest.java Vedi File

@@ -26,9 +26,7 @@ import org.sonar.api.utils.System2;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.user.GroupDbTester;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDbTester;
import org.sonar.db.user.UserDto;
import org.sonar.db.user.UserGroupDto;
import org.sonar.server.tester.UserSessionRule;
@@ -44,9 +42,7 @@ public class CurrentActionTest {
public UserSessionRule userSessionRule = UserSessionRule.standalone();
@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
UserDbTester userDb = new UserDbTester(db);
GroupDbTester groupDb = new GroupDbTester(db);
DbClient dbClient = db.getDbClient();
private DbClient dbClient = db.getDbClient();

private WsActionTester ws;

@@ -59,15 +55,15 @@ public class CurrentActionTest {
public void json_example() throws Exception {
userSessionRule.login("obiwan.kenobi").setName("Obiwan Kenobi")
.setGlobalPermissions(GlobalPermissions.ALL.toArray(new String[0]));
UserDto obiwan = userDb.insertUser(
UserDto obiwan = db.users().insertUser(
newUserDto("obiwan.kenobi", "Obiwan Kenobi", "obiwan.kenobi@starwars.com")
.setLocal(true)
.setExternalIdentity("obiwan.kenobi")
.setExternalIdentityProvider("sonarqube")
.setScmAccounts(newArrayList("obiwan:github", "obiwan:bitbucket")));
GroupDto jedi = groupDb.insertGroup(newGroupDto().setName("Jedi"));
GroupDto rebel = groupDb.insertGroup(newGroupDto().setName("Rebel"));
groupDb.insertGroup(newGroupDto().setName("Sith"));
GroupDto jedi = db.users().insertGroup(newGroupDto().setName("Jedi"));
GroupDto rebel = db.users().insertGroup(newGroupDto().setName("Rebel"));
db.users().insertGroup(newGroupDto().setName("Sith"));
dbClient.userGroupDao().insert(db.getSession(), new UserGroupDto()
.setUserId(obiwan.getId())
.setGroupId(jedi.getId()));

+ 10
- 10
server/sonar-server/src/test/java/org/sonar/server/user/ws/DeactivateActionTest.java Vedi File

@@ -24,7 +24,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.MapSettings;
import org.sonar.api.config.Settings;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
@@ -38,6 +37,8 @@ import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.DefaultOrganizationProviderRule;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.user.NewUserNotifier;
import org.sonar.server.user.UserUpdater;
@@ -54,7 +55,7 @@ import static org.sonar.db.user.UserTokenTesting.newUserToken;

public class DeactivateActionTest {

static final Settings settings = new MapSettings();
private Settings settings = new MapSettings();

@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
@@ -65,12 +66,11 @@ public class DeactivateActionTest {
@Rule
public UserSessionRule userSessionRule = UserSessionRule.standalone();

WebService.Controller controller;
WsTester ws;
UserIndex index;
DbClient dbClient;
UserIndexer userIndexer;
DbSession dbSession;
private WsTester ws;
private UserIndex index;
private DbClient dbClient;
private UserIndexer userIndexer;
private DbSession dbSession;

@Before
public void setUp() {
@@ -82,10 +82,10 @@ public class DeactivateActionTest {

userIndexer = new UserIndexer(dbClient, esTester.client());
index = new UserIndex(esTester.client());
DefaultOrganizationProvider defaultOrganizationProvider = DefaultOrganizationProviderRule.create(db);
ws = new WsTester(new UsersWs(new DeactivateAction(
new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2), userSessionRule,
new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2, defaultOrganizationProvider), userSessionRule,
new UserJsonWriter(userSessionRule), dbClient)));
controller = ws.controller("api/users");
}

@Test

+ 2
- 1
server/sonar-server/src/test/java/org/sonar/server/user/ws/GroupsActionTest.java Vedi File

@@ -43,6 +43,7 @@ import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;

import static java.util.Collections.singletonList;
import static org.sonar.db.user.GroupTesting.newGroupDto;

public class GroupsActionTest {

@@ -207,7 +208,7 @@ public class GroupsActionTest {
}

private GroupDto createGroup(String name, String description) {
return dbClient.groupDao().insert(session, new GroupDto().setName(name).setDescription(description));
return dbClient.groupDao().insert(session, newGroupDto().setName(name).setDescription(description));
}

private void addUserToGroup(UserDto user, GroupDto usersGroup) {

+ 12
- 17
server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java Vedi File

@@ -30,9 +30,7 @@ import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.user.GroupDbTester;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDbTester;
import org.sonar.db.user.UserDto;
import org.sonar.db.user.UserGroupDto;
import org.sonar.db.user.UserTesting;
@@ -64,29 +62,26 @@ public class SearchActionTest {
@Rule
public DbTester db = DbTester.create(System2.INSTANCE);

UserDbTester userDb = new UserDbTester(db);
GroupDbTester groupDb = new GroupDbTester(db);
DbClient dbClient = db.getDbClient();
DbSession dbSession = db.getSession();

UserIndex index = new UserIndex(esTester.client());
UserIndexer userIndexer = new UserIndexer(dbClient, esTester.client());
WsTester ws = new WsTester(new UsersWs(new SearchAction(index, dbClient, new UserJsonWriter(userSession))));
private DbClient dbClient = db.getDbClient();
private DbSession dbSession = db.getSession();
private UserIndex index = new UserIndex(esTester.client());
private UserIndexer userIndexer = new UserIndexer(dbClient, esTester.client());
private WsTester ws = new WsTester(new UsersWs(new SearchAction(index, dbClient, new UserJsonWriter(userSession))));

@Test
public void search_json_example() throws Exception {
UserDto fmallet = userDb.insertUser(newUserDto("fmallet", "Freddy Mallet", "f@m.com")
UserDto fmallet = db.users().insertUser(newUserDto("fmallet", "Freddy Mallet", "f@m.com")
.setActive(true)
.setLocal(true)
.setScmAccounts(emptyList()));
UserDto simon = userDb.insertUser(newUserDto("sbrandhof", "Simon", "s.brandhof@company.tld")
UserDto simon = db.users().insertUser(newUserDto("sbrandhof", "Simon", "s.brandhof@company.tld")
.setActive(true)
.setLocal(false)
.setExternalIdentity("sbrandhof@ldap.com")
.setExternalIdentityProvider("LDAP")
.setScmAccounts(newArrayList("simon.brandhof", "s.brandhof@company.tld")));
GroupDto sonarUsers = groupDb.insertGroup(newGroupDto().setName("sonar-users"));
GroupDto sonarAdministrators = groupDb.insertGroup(newGroupDto().setName("sonar-administrators"));
GroupDto sonarUsers = db.users().insertGroup(newGroupDto().setName("sonar-users"));
GroupDto sonarAdministrators = db.users().insertGroup(newGroupDto().setName("sonar-administrators"));
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(simon.getId()).setGroupId(sonarUsers.getId()));
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(fmallet.getId()).setGroupId(sonarUsers.getId()));
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(fmallet.getId()).setGroupId(sonarAdministrators.getId()));
@@ -122,7 +117,7 @@ public class SearchActionTest {
public void search_with_query() throws Exception {
loginAsSimpleUser();
injectUsers(5);
UserDto user = userDb.insertUser(newUserDto("user-%_%-login", "user-name", "user@mail.com").setScmAccounts(singletonList("user1")));
UserDto user = db.users().insertUser(newUserDto("user-%_%-login", "user-name", "user@mail.com").setScmAccounts(singletonList("user1")));
esTester.putDocuments(UserIndexDefinition.INDEX, UserIndexDefinition.TYPE_USER,
new UserDoc()
.setActive(true)
@@ -200,8 +195,8 @@ public class SearchActionTest {
loginAsAdmin();
List<UserDto> users = injectUsers(1);

GroupDto group1 = dbClient.groupDao().insert(dbSession, new GroupDto().setName("sonar-users"));
GroupDto group2 = dbClient.groupDao().insert(dbSession, new GroupDto().setName("sonar-admins"));
GroupDto group1 = dbClient.groupDao().insert(dbSession, newGroupDto().setName("sonar-users"));
GroupDto group2 = dbClient.groupDao().insert(dbSession, newGroupDto().setName("sonar-admins"));
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setGroupId(group1.getId()).setUserId(users.get(0).getId()));
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setGroupId(group2.getId()).setUserId(users.get(0).getId()));
dbSession.commit();

+ 15
- 24
server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java Vedi File

@@ -19,23 +19,22 @@
*/
package org.sonar.server.user.ws;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.MapSettings;
import org.sonar.api.config.Settings;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDto;
import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.DefaultOrganizationProviderRule;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.user.NewUserNotifier;
import org.sonar.server.user.UserUpdater;
@@ -46,46 +45,38 @@ import org.sonar.server.ws.WsTester;
import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.sonar.db.user.GroupTesting.newGroupDto;
import static org.sonar.db.user.UserTesting.newUserDto;

public class UpdateActionTest {

static final Settings settings = new MapSettings().setProperty("sonar.defaultGroup", "sonar-users");
private final Settings settings = new MapSettings().setProperty("sonar.defaultGroup", "sonar-users");

System2 system2 = new System2();
private System2 system2 = new System2();

@Rule
public DbTester dbTester = DbTester.create(system2);
@Rule
public EsTester esTester = new EsTester(new UserIndexDefinition(settings));
@Rule
public final UserSessionRule userSessionRule = UserSessionRule.standalone().login("admin")
public UserSessionRule userSessionRule = UserSessionRule.standalone().login("admin")
.setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);

DbClient dbClient = dbTester.getDbClient();

DbSession session = dbTester.getSession();

WebService.Controller controller;

WsTester tester;

UserIndexer userIndexer;
private DbClient dbClient = dbTester.getDbClient();
private DbSession session = dbTester.getSession();
private WsTester tester;
private UserIndexer userIndexer;
private DefaultOrganizationProvider defaultOrganizationProvider = DefaultOrganizationProviderRule.create(dbTester);

@Before
public void setUp() {
dbClient.groupDao().insert(session, new GroupDto().setName("sonar-users"));
dbClient.groupDao().insert(session, newGroupDto().setName("sonar-users"));
session.commit();

userIndexer = new UserIndexer(dbClient, esTester.client());
tester = new WsTester(new UsersWs(new UpdateAction(
new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2), userSessionRule,
new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2, defaultOrganizationProvider), userSessionRule,
new UserJsonWriter(userSessionRule), dbClient)));
controller = tester.controller("api/users");
}

@After
public void tearDown() {
session.close();
}

@Test(expected = ForbiddenException.class)
@@ -223,7 +214,7 @@ public class UpdateActionTest {
}

private void createUser() {
dbClient.userDao().insert(session, new UserDto()
dbClient.userDao().insert(session, newUserDto()
.setEmail("john@email.com")
.setLogin("john")
.setName("John")

+ 4
- 6
server/sonar-server/src/test/java/org/sonar/server/usertoken/ws/GenerateActionTest.java Vedi File

@@ -29,7 +29,6 @@ import org.junit.rules.ExpectedException;
import org.sonar.api.utils.System2;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbTester;
import org.sonar.db.user.UserDbTester;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.ServerException;
@@ -59,14 +58,13 @@ public class GenerateActionTest {

@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
UserDbTester userDb = new UserDbTester(db);
@Rule
public UserSessionRule userSession = UserSessionRule.standalone();
@Rule
public ExpectedException expectedException = ExpectedException.none();

TokenGenerator tokenGenerator = mock(TokenGenerator.class);
WsActionTester ws;
private TokenGenerator tokenGenerator = mock(TokenGenerator.class);
private WsActionTester ws;

@Before
public void setUp() {
@@ -75,8 +73,8 @@ public class GenerateActionTest {
userSession
.login()
.setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);
userDb.insertUser(newUserDto().setLogin(GRACE_HOPPER));
userDb.insertUser(newUserDto().setLogin(ADA_LOVELACE));
db.users().insertUser(newUserDto().setLogin(GRACE_HOPPER));
db.users().insertUser(newUserDto().setLogin(ADA_LOVELACE));

ws = new WsActionTester(
new GenerateAction(db.getDbClient(), userSession, System2.INSTANCE, tokenGenerator));

+ 7
- 11
server/sonar-server/src/test/java/org/sonar/server/usertoken/ws/SearchActionTest.java Vedi File

@@ -31,7 +31,6 @@ import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.user.UserDbTester;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.tester.UserSessionRule;
@@ -47,10 +46,9 @@ import static org.sonar.db.user.UserTokenTesting.newUserToken;
import static org.sonar.test.JsonAssert.assertJson;
import static org.sonarqube.ws.client.usertoken.UserTokensWsParameters.PARAM_LOGIN;


public class SearchActionTest {
static final String GRACE_HOPPER = "grace.hopper";
static final String ADA_LOVELACE = "ada.lovelace";
private static final String GRACE_HOPPER = "grace.hopper";
private static final String ADA_LOVELACE = "ada.lovelace";

@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -58,17 +56,15 @@ public class SearchActionTest {
public UserSessionRule userSession = UserSessionRule.standalone();
@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
UserDbTester userDb = new UserDbTester(db);
DbClient dbClient = db.getDbClient();
final DbSession dbSession = db.getSession();

WsActionTester ws = new WsActionTester(new SearchAction(dbClient, userSession));
private DbClient dbClient = db.getDbClient();
private DbSession dbSession = db.getSession();
private WsActionTester ws = new WsActionTester(new SearchAction(dbClient, userSession));

@Before
public void setUp() {
userSession.login().setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);
userDb.insertUser(newUserDto().setLogin(GRACE_HOPPER));
userDb.insertUser(newUserDto().setLogin(ADA_LOVELACE));
db.users().insertUser(newUserDto().setLogin(GRACE_HOPPER));
db.users().insertUser(newUserDto().setLogin(ADA_LOVELACE));
}

@Test

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java Vedi File

@@ -187,7 +187,7 @@ public class ViewIndexerTest {
ComponentDto project = ComponentTesting.newProjectDto();
ComponentDto file = ComponentTesting.newFileDto(project, null);
dbClient.componentDao().insert(dbSession, project, file);
dbClient.roleDao().insertGroupRole(dbSession, new GroupPermissionDto().setRole(UserRole.USER).setGroupId(null).setResourceId(project.getId()));
dbClient.groupPermissionDao().insert(dbSession, new GroupPermissionDto().setRole(UserRole.USER).setGroupId(null).setResourceId(project.getId()));

IssueDto issue = IssueTesting.newDto(rule, file, project);
dbClient.issueDao().insert(dbSession, issue);

Loading…
Annulla
Salva