@@ -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; | |||
} | |||
} |
@@ -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() { |
@@ -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; | |||
} | |||
} |
@@ -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()); | |||
} |
@@ -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; | |||
} |
@@ -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); | |||
@@ -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); | |||
} | |||
} | |||
@@ -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"); |
@@ -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 |
@@ -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") |
@@ -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())); |
@@ -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 |
@@ -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) { |
@@ -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(); |
@@ -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") |
@@ -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)); |
@@ -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 |
@@ -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); |