소스 검색

SONAR-9022 Clean up some unit tests in usergroups

tags/6.4-RC1
Julien Lancelot 7 년 전
부모
커밋
79150c9cad
20개의 변경된 파일320개의 추가작업 그리고 285개의 파일을 삭제
  1. 48
    24
      server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/AddUserActionTest.java
  2. 29
    21
      server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/RemoveUserActionTest.java
  3. 85
    37
      server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/SearchActionTest.java
  4. 37
    30
      server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
  5. 121
    47
      server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UsersActionTest.java
  6. 0
    10
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/customers.json
  7. 0
    6
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/empty.json
  8. 0
    12
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/five_groups.json
  9. 0
    10
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/page_1.json
  10. 0
    9
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/page_2.json
  11. 0
    6
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/page_3.json
  12. 0
    12
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/with_members.json
  13. 0
    8
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all.json
  14. 0
    11
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_ada.json
  15. 0
    8
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_page1.json
  16. 0
    8
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_page2.json
  17. 0
    7
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_users.json
  18. 0
    7
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/deselected.json
  19. 0
    5
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/empty.json
  20. 0
    7
      server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/selected.json

+ 48
- 24
server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/AddUserActionTest.java 파일 보기

@@ -19,7 +19,6 @@
*/
package org.sonar.server.usergroups.ws;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -33,9 +32,13 @@ import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.exceptions.UnauthorizedException;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;

import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.api.security.DefaultGroups.ANYONE;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_LOGIN;
@@ -51,12 +54,7 @@ public class AddUserActionTest {
public ExpectedException expectedException = ExpectedException.none();

private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private WsTester ws;

@Before
public void setUp() {
ws = new WsTester(new UserGroupsWs(new AddUserAction(db.getDbClient(), userSession, newGroupWsSupport())));
}
private WsActionTester ws = new WsActionTester(new AddUserAction(db.getDbClient(), userSession, newGroupWsSupport()));

@Test
public void add_user_to_group_referenced_by_its_id() throws Exception {
@@ -67,8 +65,7 @@ public class AddUserActionTest {
newRequest()
.setParam("id", group.getId().toString())
.setParam("login", user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(group.getId());
}
@@ -82,8 +79,7 @@ public class AddUserActionTest {
newRequest()
.setParam(PARAM_GROUP_NAME, group.getName())
.setParam(PARAM_LOGIN, user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(group.getId());
}
@@ -100,8 +96,7 @@ public class AddUserActionTest {
.setParam(PARAM_ORGANIZATION_KEY, org.getKey())
.setParam(PARAM_GROUP_NAME, group.getName())
.setParam(PARAM_LOGIN, user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(group.getId());
}
@@ -118,8 +113,7 @@ public class AddUserActionTest {
newRequest()
.setParam("id", admins.getId().toString())
.setParam("login", user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(admins.getId(), users.getId());
}
@@ -134,8 +128,7 @@ public class AddUserActionTest {
newRequest()
.setParam("id", users.getId().toString())
.setParam("login", user.getLogin())
.execute()
.assertNoContent();
.execute();

// do not insert duplicated row
assertThat(db.users().selectGroupIdsOfUser(user)).hasSize(1).containsOnly(users.getId());
@@ -152,19 +145,33 @@ public class AddUserActionTest {
newRequest()
.setParam("id", users.getId().toString())
.setParam("login", user2.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user1)).containsOnly(users.getId());
assertThat(db.users().selectGroupIdsOfUser(user2)).containsOnly(users.getId());
}

@Test
public void response_status_is_no_content() throws Exception {
GroupDto group = db.users().insertGroup();
UserDto user = db.users().insertUser();
loginAsAdminOnDefaultOrganization();

TestResponse response = newRequest()
.setParam("id", group.getId().toString())
.setParam("login", user.getLogin())
.execute();

assertThat(response.getStatus()).isEqualTo(HTTP_NO_CONTENT);
}

@Test
public void fail_if_group_does_not_exist() throws Exception {
UserDto user = db.users().insertUser();
loginAsAdminOnDefaultOrganization();

expectedException.expect(NotFoundException.class);
expectedException.expectMessage("No group with id '42'");

newRequest()
.setParam("id", "42")
@@ -178,6 +185,7 @@ public class AddUserActionTest {
loginAsAdminOnDefaultOrganization();

expectedException.expect(NotFoundException.class);
expectedException.expectMessage("Could not find a user with login 'my-admin'");

newRequest()
.setParam("id", group.getId().toString())
@@ -228,8 +236,24 @@ public class AddUserActionTest {
.setParam(PARAM_ORGANIZATION_KEY, org.getKey())
.setParam(PARAM_GROUP_NAME, group.getName())
.setParam(PARAM_LOGIN, user.getLogin())
.execute()
.assertNoContent();
.execute();
}

@Test
public void fail_to_add_user_to_anyone() throws Exception {
OrganizationDto organization = db.organizations().insert(org -> org.setKey("org"));
UserDto user = db.users().insertUser();
addUserAsMemberOfOrganization(organization, user);
loginAsAdmin(organization);

expectedException.expect(NotFoundException.class);
expectedException.expectMessage("No group with name 'Anyone' in organization 'org'");

newRequest()
.setParam(PARAM_GROUP_NAME, ANYONE)
.setParam(PARAM_LOGIN, user.getLogin())
.setParam(PARAM_ORGANIZATION_KEY, organization.getKey())
.execute();
}

private void executeRequest(GroupDto groupDto, UserDto userDto) throws Exception {
@@ -239,8 +263,8 @@ public class AddUserActionTest {
.execute();
}

private WsTester.TestRequest newRequest() {
return ws.newPostRequest("api/user_groups", "add_user");
private TestRequest newRequest() {
return ws.newRequest();
}

private void loginAsAdminOnDefaultOrganization() {

+ 29
- 21
server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/RemoveUserActionTest.java 파일 보기

@@ -19,7 +19,6 @@
*/
package org.sonar.server.usergroups.ws;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -34,8 +33,11 @@ import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;

import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
@@ -52,13 +54,7 @@ public class RemoveUserActionTest {
public ExpectedException expectedException = ExpectedException.none();

private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private WsTester ws;

@Before
public void setUp() {
GroupWsSupport groupSupport = new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider);
ws = new WsTester(new UserGroupsWs(new RemoveUserAction(db.getDbClient(), userSession, groupSupport)));
}
private WsActionTester ws = new WsActionTester(new RemoveUserAction(db.getDbClient(), userSession, new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider)));

@Test
public void does_nothing_if_user_is_not_in_group() throws Exception {
@@ -72,8 +68,7 @@ public class RemoveUserActionTest {
newRequest()
.setParam("id", group.getId().toString())
.setParam("login", user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).isEmpty();
}
@@ -90,8 +85,7 @@ public class RemoveUserActionTest {
newRequest()
.setParam("id", users.getId().toString())
.setParam("login", user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).isEmpty();
}
@@ -107,8 +101,7 @@ public class RemoveUserActionTest {
newRequest()
.setParam(PARAM_GROUP_NAME, group.getName())
.setParam(PARAM_LOGIN, user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).isEmpty();
}
@@ -128,8 +121,7 @@ public class RemoveUserActionTest {
.setParam(PARAM_ORGANIZATION_KEY, org.getKey())
.setParam(PARAM_GROUP_NAME, group.getName())
.setParam(PARAM_LOGIN, user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).isEmpty();
}
@@ -150,12 +142,28 @@ public class RemoveUserActionTest {
newRequest()
.setParam("id", admins.getId().toString())
.setParam("login", user.getLogin())
.execute()
.assertNoContent();
.execute();

assertThat(db.users().selectGroupIdsOfUser(user)).containsOnly(users.getId());
}

@Test
public void response_status_is_no_content() throws Exception {
// keep an administrator
insertAnAdministratorInDefaultOrganization();
GroupDto users = db.users().insertGroup(db.getDefaultOrganization(), "users");
UserDto user = db.users().insertUser("my-admin");
db.users().insertMember(users, user);
loginAsAdminOnDefaultOrganization();

TestResponse response = newRequest()
.setParam("id", users.getId().toString())
.setParam("login", user.getLogin())
.execute();

assertThat(response.getStatus()).isEqualTo(HTTP_NO_CONTENT);
}

@Test
public void fail_if_unknown_group() throws Exception {
UserDto user = db.users().insertUser("my-admin");
@@ -217,8 +225,8 @@ public class RemoveUserActionTest {
.execute();
}

private WsTester.TestRequest newRequest() {
return ws.newPostRequest("api/user_groups", "remove_user");
private TestRequest newRequest() {
return ws.newRequest();
}

private void loginAsAdminOnDefaultOrganization() {

+ 85
- 37
server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/SearchActionTest.java 파일 보기

@@ -19,7 +19,6 @@
*/
package org.sonar.server.usergroups.ws;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -32,12 +31,14 @@ import org.sonar.db.user.UserDto;
import org.sonar.server.exceptions.UnauthorizedException;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.WsActionTester;

import static org.apache.commons.lang.StringUtils.capitalize;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.user.GroupTesting.newGroupDto;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.db.user.GroupTesting.newGroupDto;
import static org.sonar.test.JsonAssert.assertJson;

public class SearchActionTest {

@@ -50,17 +51,20 @@ public class SearchActionTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();

private WsTester ws;

@Before
public void setUp() {
ws = new WsTester(new UserGroupsWs(new SearchAction(db.getDbClient(), userSession, newGroupWsSupport())));
}
private WsActionTester ws = new WsActionTester(new SearchAction(db.getDbClient(), userSession, newGroupWsSupport()));

@Test
public void search_empty() throws Exception {
loginAsDefaultOrgAdmin();
newRequest().execute().assertJson(getClass(), "empty.json");

String result = newRequest().execute().getInput();

assertJson(result).isSimilarTo("{\n" +
" \"p\": 1,\n" +
" \"ps\": 100,\n" +
" \"total\": 0,\n" +
" \"groups\": []\n" +
"}");
}

@Test
@@ -70,9 +74,19 @@ public class SearchActionTest {
insertGroup(db.getDefaultOrganization(), "customer1", 0);
insertGroup(db.getDefaultOrganization(), "customer2", 0);
insertGroup(db.getDefaultOrganization(), "customer3", 0);

loginAsDefaultOrgAdmin();
newRequest().execute().assertJson(getClass(), "five_groups.json");

String result = newRequest().execute().getInput();

assertJson(result).isSimilarTo("{\n" +
" \"groups\": [\n" +
" {\"name\": \"admins\", \"description\": \"Admins\", \"membersCount\": 0},\n" +
" {\"name\": \"customer1\", \"description\": \"Customer1\", \"membersCount\": 0},\n" +
" {\"name\": \"customer2\", \"description\": \"Customer2\", \"membersCount\": 0},\n" +
" {\"name\": \"customer3\", \"description\": \"Customer3\", \"membersCount\": 0},\n" +
" {\"name\": \"users\", \"description\": \"Users\", \"membersCount\": 0}\n" +
" ]\n" +
"}");
}

@Test
@@ -82,9 +96,19 @@ public class SearchActionTest {
insertGroup(db.getDefaultOrganization(), "customer1", 0);
insertGroup(db.getDefaultOrganization(), "customer2", 4);
insertGroup(db.getDefaultOrganization(), "customer3", 0);

loginAsDefaultOrgAdmin();
newRequest().execute().assertJson(getClass(), "with_members.json");

String result = newRequest().execute().getInput();

assertJson(result).isSimilarTo("{\n" +
" \"groups\": [\n" +
" {\"name\": \"admins\", \"description\": \"Admins\", \"membersCount\": 1},\n" +
" {\"name\": \"customer1\", \"description\": \"Customer1\", \"membersCount\": 0},\n" +
" {\"name\": \"customer2\", \"description\": \"Customer2\", \"membersCount\": 4},\n" +
" {\"name\": \"customer3\", \"description\": \"Customer3\", \"membersCount\": 0},\n" +
" {\"name\": \"users\", \"description\": \"Users\", \"membersCount\": 5}\n" +
" ]\n" +
"}\n");
}

@Test
@@ -94,9 +118,17 @@ public class SearchActionTest {
insertGroup(db.getDefaultOrganization(), "customer%_%/1", 0);
insertGroup(db.getDefaultOrganization(), "customer%_%/2", 0);
insertGroup(db.getDefaultOrganization(), "customer%_%/3", 0);

loginAsDefaultOrgAdmin();
newRequest().setParam(Param.TEXT_QUERY, "tomer%_%/").execute().assertJson(getClass(), "customers.json");

String result = newRequest().setParam(Param.TEXT_QUERY, "tomer%_%/").execute().getInput();

assertJson(result).ignoreFields("id").isSimilarTo("{\n" +
" \"groups\": [\n" +
" {\"name\": \"customer%_%/1\", \"description\": \"Customer%_%/1\", \"membersCount\": 0},\n" +
" {\"name\": \"customer%_%/2\", \"description\": \"Customer%_%/2\", \"membersCount\": 0},\n" +
" {\"name\": \"customer%_%/3\", \"description\": \"Customer%_%/3\", \"membersCount\": 0}\n" +
" ]\n" +
"}\n");
}

@Test
@@ -106,46 +138,65 @@ public class SearchActionTest {
insertGroup(db.getDefaultOrganization(), "customer1", 0);
insertGroup(db.getDefaultOrganization(), "customer2", 0);
insertGroup(db.getDefaultOrganization(), "customer3", 0);

loginAsDefaultOrgAdmin();
newRequest()
.setParam(Param.PAGE_SIZE, "3").execute().assertJson(getClass(), "page_1.json");
newRequest()
.setParam(Param.PAGE_SIZE, "3").setParam(Param.PAGE, "2").execute().assertJson(getClass(), "page_2.json");
newRequest()
.setParam(Param.PAGE_SIZE, "3").setParam(Param.PAGE, "3").execute().assertJson(getClass(), "page_3.json");

assertJson(newRequest().setParam(Param.PAGE_SIZE, "3").execute().getInput()).isSimilarTo("{\n" +
" \"p\": 1,\n" +
" \"ps\": 3,\n" +
" \"total\": 5,\n" +
" \"groups\": [\n" +
" {\"name\": \"admins\", \"description\": \"Admins\", \"membersCount\": 0},\n" +
" {\"name\": \"customer1\", \"description\": \"Customer1\", \"membersCount\": 0},\n" +
" {\"name\": \"customer2\", \"description\": \"Customer2\", \"membersCount\": 0}\n" +
" ]\n" +
"}\n");
assertJson(newRequest().setParam(Param.PAGE_SIZE, "3").setParam(Param.PAGE, "2").execute().getInput()).isSimilarTo("{\n" +
" \"p\": 2,\n" +
" \"ps\": 3,\n" +
" \"total\": 5,\n" +
" \"groups\": [\n" +
" {\"name\": \"customer3\", \"description\": \"Customer3\", \"membersCount\": 0},\n" +
" {\"name\": \"users\", \"description\": \"Users\", \"membersCount\": 0}\n" +
" ]\n" +
"}\n");
assertJson(newRequest().setParam(Param.PAGE_SIZE, "3").setParam(Param.PAGE, "3").execute().getInput()).isSimilarTo("{\n" +
" \"p\": 3,\n" +
" \"ps\": 3,\n" +
" \"total\": 5,\n" +
" \"groups\": []\n" +
"}\n");
}

@Test
public void search_with_fields() throws Exception {
insertGroup(db.getDefaultOrganization(), "sonar-users", 0);

loginAsDefaultOrgAdmin();
assertThat(newRequest().execute().outputAsString())

assertThat(newRequest().execute().getInput())
.contains("id")
.contains("name")
.contains("description")
.contains("membersCount");

assertThat(newRequest().setParam(Param.FIELDS, "").execute().outputAsString())
assertThat(newRequest().setParam(Param.FIELDS, "").execute().getInput())
.contains("id")
.contains("name")
.contains("description")
.contains("membersCount");

assertThat(newRequest().setParam(Param.FIELDS, "name").execute().outputAsString())
assertThat(newRequest().setParam(Param.FIELDS, "name").execute().getInput())
.contains("id")
.contains("name")
.doesNotContain("description")
.doesNotContain("membersCount");

assertThat(newRequest().setParam(Param.FIELDS, "description").execute().outputAsString())
assertThat(newRequest().setParam(Param.FIELDS, "description").execute().getInput())
.contains("id")
.doesNotContain("name")
.contains("description")
.doesNotContain("membersCount");

assertThat(newRequest().setParam(Param.FIELDS, "membersCount").execute().outputAsString())
assertThat(newRequest().setParam(Param.FIELDS, "membersCount").execute().getInput())
.contains("id")
.doesNotContain("name")
.doesNotContain("description")
@@ -161,12 +212,9 @@ public class SearchActionTest {
loginAsDefaultOrgAdmin();
userSession.addPermission(ADMINISTER, org);

newRequest()
.setParam("organization", org.getKey())
.execute()
.assertJson(
"{\"total\":1,\"p\":1,\"ps\":100," +
"\"groups\":[{\"id\":\"" + group.getId() + "\",\"name\":\"users\"}]}\n");
String result = newRequest().setParam("organization", org.getKey()).execute().getInput();

assertJson(result).isSimilarTo("{\"groups\":[{\"id\":\"" + group.getId() + "\",\"name\":\"users\"}]}\n");
}

@Test
@@ -177,8 +225,8 @@ public class SearchActionTest {
newRequest().execute();
}

private WsTester.TestRequest newRequest() {
return ws.newGetRequest("api/user_groups", "search");
private TestRequest newRequest() {
return ws.newRequest();
}

private void insertGroup(OrganizationDto org, String name, int numberOfMembers) {

+ 37
- 30
server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java 파일 보기

@@ -33,14 +33,15 @@ import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.exceptions.ServerException;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.WsActionTester;

import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.test.JsonAssert.assertJson;

public class UpdateActionTest {

private static final String DEFAULT_GROUP_NAME_KEY = "sonar.defaultGroup";
private static final String DEFAULT_GROUP_NAME_VALUE = "DEFAULT_GROUP_NAME_VALUE";
private static final String DEFAULT_GROUP_NAME_VALUE = "sonar-users";

@Rule
public DbTester db = DbTester.create(System2.INSTANCE);
@@ -50,7 +51,7 @@ public class UpdateActionTest {
public ExpectedException expectedException = ExpectedException.none();

private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private WsTester ws = new WsTester(new UserGroupsWs(new UpdateAction(db.getDbClient(), userSession, new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider))));
private WsActionTester ws = new WsActionTester(new UpdateAction(db.getDbClient(), userSession, new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider)));

@Test
public void update_both_name_and_description() throws Exception {
@@ -59,17 +60,19 @@ public class UpdateActionTest {
db.users().insertMember(group, user);
loginAsAdminOnDefaultOrganization();

newRequest()
String result = newRequest()
.setParam("id", group.getId().toString())
.setParam("name", "new-name")
.setParam("description", "New Description")
.execute().assertJson("{" +
" \"group\": {" +
" \"name\": \"new-name\"," +
" \"description\": \"New Description\"," +
" \"membersCount\": 1" +
" }" +
"}");
.execute().getInput();

assertJson(result).isSimilarTo("{" +
" \"group\": {" +
" \"name\": \"new-name\"," +
" \"description\": \"New Description\"," +
" \"membersCount\": 1" +
" }" +
"}");
}

@Test
@@ -77,16 +80,18 @@ public class UpdateActionTest {
GroupDto group = db.users().insertGroup();
loginAsAdminOnDefaultOrganization();

newRequest()
String result = newRequest()
.setParam("id", group.getId().toString())
.setParam("name", "new-name")
.execute().assertJson("{" +
" \"group\": {" +
" \"name\": \"new-name\"," +
" \"description\": \"" + group.getDescription() + "\"," +
" \"membersCount\": 0" +
" }" +
"}");
.execute().getInput();

assertJson(result).isSimilarTo("{" +
" \"group\": {" +
" \"name\": \"new-name\"," +
" \"description\": \"" + group.getDescription() + "\"," +
" \"membersCount\": 0" +
" }" +
"}");
}

@Test
@@ -94,16 +99,18 @@ public class UpdateActionTest {
GroupDto group = db.users().insertGroup();
loginAsAdminOnDefaultOrganization();

newRequest()
String result = newRequest()
.setParam("id", group.getId().toString())
.setParam("description", "New Description")
.execute().assertJson("{" +
" \"group\": {" +
" \"name\": \"" + group.getName() + "\"," +
" \"description\": \"New Description\"," +
" \"membersCount\": 0" +
" }" +
"}");
.execute().getInput();

assertJson(result).isSimilarTo("{" +
" \"group\": {" +
" \"name\": \"" + group.getName() + "\"," +
" \"description\": \"New Description\"," +
" \"membersCount\": 0" +
" }" +
"}");
}

@Test
@@ -233,8 +240,8 @@ public class UpdateActionTest {
.execute();
}

private WsTester.TestRequest newRequest() {
return ws.newPostRequest("api/user_groups", "update");
private TestRequest newRequest() {
return ws.newRequest();
}

private void loginAsAdminOnDefaultOrganization() {

+ 121
- 47
server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UsersActionTest.java 파일 보기

@@ -19,7 +19,6 @@
*/
package org.sonar.server.usergroups.ws;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -34,13 +33,14 @@ import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;
import org.sonar.server.ws.WsTester.TestRequest;
import org.sonar.server.ws.TestRequest;
import org.sonar.server.ws.WsActionTester;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.user.UserTesting.newUserDto;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.db.user.UserTesting.newUserDto;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
import static org.sonar.test.JsonAssert.assertJson;

public class UsersActionTest {

@@ -51,17 +51,7 @@ public class UsersActionTest {
@Rule
public UserSessionRule userSession = UserSessionRule.standalone();
private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private WsTester wsTester;

@Before
public void setUp() {
GroupWsSupport groupSupport = new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider);
wsTester = new WsTester(new UserGroupsWs(
new UsersAction(
db.getDbClient(),
userSession,
groupSupport)));
}
private WsActionTester ws = new WsActionTester(new UsersAction(db.getDbClient(), userSession, new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider)));

@Test
public void fail_if_unknown_group_id() throws Exception {
@@ -106,11 +96,17 @@ public class UsersActionTest {
GroupDto group = db.users().insertGroup();
loginAsAdminOnDefaultOrganization();

newUsersRequest()
String result = newUsersRequest()
.setParam("login", "john")
.setParam("id", group.getId().toString())
.execute()
.assertJson(getClass(), "empty.json");
.getInput();

assertJson(result).isSimilarTo("{\n" +
" \"p\": 1,\n" +
" \"total\": 0,\n" +
" \"users\": []\n" +
"}");
}

@Test
@@ -121,11 +117,18 @@ public class UsersActionTest {
db.users().insertMember(group, lovelace);
loginAsAdminOnDefaultOrganization();

newUsersRequest()
String result = newUsersRequest()
.setParam("id", group.getId().toString())
.setParam(Param.SELECTED, SelectionMode.ALL.value())
.execute()
.assertJson(getClass(), "all.json");
.getInput();

assertJson(result).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\"login\": \"ada.login\", \"name\": \"Ada Lovelace\", \"selected\": true},\n" +
" {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
" ]\n" +
"}\n");
}

@Test
@@ -139,12 +142,19 @@ public class UsersActionTest {
db.organizations().addMember(org, hopper);
loginAsAdmin(org);

newUsersRequest()
String result = newUsersRequest()
.setParam("organization", org.getKey())
.setParam("name", group.getName())
.setParam(Param.SELECTED, SelectionMode.ALL.value())
.execute()
.assertJson(getClass(), "all.json");
.getInput();

assertJson(result).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\"login\": \"ada.login\", \"name\": \"Ada Lovelace\", \"selected\": true},\n" +
" {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
" ]\n" +
"}\n");
}

@Test
@@ -155,11 +165,18 @@ public class UsersActionTest {
db.users().insertMember(group, lovelace);
loginAsAdminOnDefaultOrganization();

newUsersRequest()
String result = newUsersRequest()
.setParam("name", group.getName())
.setParam(Param.SELECTED, SelectionMode.ALL.value())
.execute()
.assertJson(getClass(), "all.json");
.getInput();

assertJson(result).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\"login\": \"ada.login\", \"name\": \"Ada Lovelace\", \"selected\": true},\n" +
" {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
" ]\n" +
"}\n");
}

@Test
@@ -171,7 +188,7 @@ public class UsersActionTest {
db.users().insertMember(group, graceHopper);
loginAsAdminOnDefaultOrganization();

String response = newUsersRequest().setParam(PARAM_GROUP_ID, group.getId().toString()).execute().outputAsString();
String response = newUsersRequest().setParam(PARAM_GROUP_ID, group.getId().toString()).execute().getInput();

assertThat(response).contains("Ada Lovelace", "Grace Hopper");
}
@@ -184,16 +201,24 @@ public class UsersActionTest {
db.users().insertMember(group, lovelace);
loginAsAdminOnDefaultOrganization();

newUsersRequest()
assertJson(newUsersRequest()
.setParam("id", group.getId().toString())
.execute()
.assertJson(getClass(), "selected.json");
.getInput()).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\"login\": \"ada\", \"name\": \"Ada Lovelace\", \"selected\": true}\n" +
" ]\n" +
"}");

newUsersRequest()
assertJson(newUsersRequest()
.setParam("id", group.getId().toString())
.setParam(Param.SELECTED, SelectionMode.SELECTED.value())
.execute()
.assertJson(getClass(), "selected.json");
.getInput()).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\"login\": \"ada\", \"name\": \"Ada Lovelace\", \"selected\": true}\n" +
" ]\n" +
"}");
}

@Test
@@ -204,11 +229,17 @@ public class UsersActionTest {
db.users().insertMember(group, lovelace);
loginAsAdminOnDefaultOrganization();

newUsersRequest()
String result = newUsersRequest()
.setParam("id", group.getId().toString())
.setParam(Param.SELECTED, SelectionMode.DESELECTED.value())
.execute()
.assertJson(getClass(), "deselected.json");
.getInput();

assertJson(result).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
" ]\n" +
"}");
}

@Test
@@ -219,20 +250,34 @@ public class UsersActionTest {
db.users().insertMember(group, lovelace);
loginAsAdminOnDefaultOrganization();

newUsersRequest()
assertJson(newUsersRequest()
.setParam("id", group.getId().toString())
.setParam("ps", "1")
.setParam(Param.SELECTED, SelectionMode.ALL.value())
.execute()
.assertJson(getClass(), "all_page1.json");

newUsersRequest()
.getInput()).isSimilarTo("{\n" +
" \"p\": 1,\n" +
" \"ps\": 1,\n" +
" \"total\": 2,\n" +
" \"users\": [\n" +
" {\"login\": \"ada\", \"name\": \"Ada Lovelace\", \"selected\": true}\n" +
" ]\n" +
"}");

assertJson(newUsersRequest()
.setParam("id", group.getId().toString())
.setParam("ps", "1")
.setParam("p", "2")
.setParam(Param.SELECTED, SelectionMode.ALL.value())
.execute()
.assertJson(getClass(), "all_page2.json");
.getInput()).isSimilarTo("{\n" +
" \"p\": 2,\n" +
" \"ps\": 1,\n" +
" \"total\": 2,\n" +
" \"users\": [\n" +
" {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
" ]\n" +
"}");
}

@Test
@@ -243,31 +288,60 @@ public class UsersActionTest {
db.users().insertMember(group, lovelace);
loginAsAdminOnDefaultOrganization();

newUsersRequest()
assertJson(newUsersRequest()
.setParam("id", group.getId().toString())
.setParam("q", "ace")
.setParam(Param.SELECTED, SelectionMode.ALL.value())
.execute()
.assertJson(getClass(), "all.json");

newUsersRequest().setParam("id", group.getId().toString())
.getInput()).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\"login\": \"ada.login\", \"name\": \"Ada Lovelace\", \"selected\": true},\n" +
" {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
" ]\n" +
"}\n");

assertJson(newUsersRequest().setParam("id", group.getId().toString())
.setParam("q", ".logi")
.execute()
.assertJson(getClass(), "all_ada.json");

newUsersRequest().setParam("id", group.getId().toString())
.getInput()).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\n" +
" \"login\": \"ada.login\",\n" +
" \"name\": \"Ada Lovelace\",\n" +
" \"selected\": true\n" +
" }\n" +
" ]\n" +
"}\n");

assertJson(newUsersRequest().setParam("id", group.getId().toString())
.setParam("q", "OvE")
.execute()
.assertJson(getClass(), "all_ada.json");

newUsersRequest().setParam("id", group.getId().toString())
.getInput()).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\n" +
" \"login\": \"ada.login\",\n" +
" \"name\": \"Ada Lovelace\",\n" +
" \"selected\": true\n" +
" }\n" +
" ]\n" +
"}\n");

assertJson(newUsersRequest().setParam("id", group.getId().toString())
.setParam("q", "mail")
.execute()
.assertJson(getClass(), "all_ada.json");
.getInput()).isSimilarTo("{\n" +
" \"users\": [\n" +
" {\n" +
" \"login\": \"ada.login\",\n" +
" \"name\": \"Ada Lovelace\",\n" +
" \"selected\": true\n" +
" }\n" +
" ]\n" +
"}\n");
}

private TestRequest newUsersRequest() {
return wsTester.newGetRequest("api/user_groups", "users");
return ws.newRequest();
}

private void loginAsAdminOnDefaultOrganization() {

+ 0
- 10
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/customers.json 파일 보기

@@ -1,10 +0,0 @@
{
"p": 1,
"ps": 100,
"total": 3,
"groups": [
{"name": "customer%_%/1", "description": "Customer%_%/1", "membersCount": 0},
{"name": "customer%_%/2", "description": "Customer%_%/2", "membersCount": 0},
{"name": "customer%_%/3", "description": "Customer%_%/3", "membersCount": 0}
]
}

+ 0
- 6
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/empty.json 파일 보기

@@ -1,6 +0,0 @@
{
"p": 1,
"ps": 100,
"total": 0,
"groups": []
}

+ 0
- 12
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/five_groups.json 파일 보기

@@ -1,12 +0,0 @@
{
"p": 1,
"ps": 100,
"total": 5,
"groups": [
{"name": "admins", "description": "Admins", "membersCount": 0},
{"name": "customer1", "description": "Customer1", "membersCount": 0},
{"name": "customer2", "description": "Customer2", "membersCount": 0},
{"name": "customer3", "description": "Customer3", "membersCount": 0},
{"name": "users", "description": "Users", "membersCount": 0}
]
}

+ 0
- 10
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/page_1.json 파일 보기

@@ -1,10 +0,0 @@
{
"p": 1,
"ps": 3,
"total": 5,
"groups": [
{"name": "admins", "description": "Admins", "membersCount": 0},
{"name": "customer1", "description": "Customer1", "membersCount": 0},
{"name": "customer2", "description": "Customer2", "membersCount": 0}
]
}

+ 0
- 9
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/page_2.json 파일 보기

@@ -1,9 +0,0 @@
{
"p": 2,
"ps": 3,
"total": 5,
"groups": [
{"name": "customer3", "description": "Customer3", "membersCount": 0},
{"name": "users", "description": "Users", "membersCount": 0}
]
}

+ 0
- 6
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/page_3.json 파일 보기

@@ -1,6 +0,0 @@
{
"p": 3,
"ps": 3,
"total": 5,
"groups": []
}

+ 0
- 12
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/SearchActionTest/with_members.json 파일 보기

@@ -1,12 +0,0 @@
{
"p": 1,
"ps": 100,
"total": 5,
"groups": [
{"name": "admins", "description": "Admins", "membersCount": 1},
{"name": "customer1", "description": "Customer1", "membersCount": 0},
{"name": "customer2", "description": "Customer2", "membersCount": 4},
{"name": "customer3", "description": "Customer3", "membersCount": 0},
{"name": "users", "description": "Users", "membersCount": 5}
]
}

+ 0
- 8
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all.json 파일 보기

@@ -1,8 +0,0 @@
{
"p": 1,
"total": 2,
"users": [
{"login": "ada.login", "name": "Ada Lovelace", "selected": true},
{"login": "grace", "name": "Grace Hopper", "selected": false}
]
}

+ 0
- 11
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_ada.json 파일 보기

@@ -1,11 +0,0 @@
{
"p": 1,
"total": 1,
"users": [
{
"login": "ada.login",
"name": "Ada Lovelace",
"selected": true
}
]
}

+ 0
- 8
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_page1.json 파일 보기

@@ -1,8 +0,0 @@
{
"p": 1,
"ps": 1,
"total": 2,
"users": [
{"login": "ada", "name": "Ada Lovelace", "selected": true}
]
}

+ 0
- 8
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_page2.json 파일 보기

@@ -1,8 +0,0 @@
{
"p": 2,
"ps": 1,
"total": 2,
"users": [
{"login": "grace", "name": "Grace Hopper", "selected": false}
]
}

+ 0
- 7
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/all_users.json 파일 보기

@@ -1,7 +0,0 @@
{
"p": 1,
"total": 1,
"users": [
{"login": "ada", "name": "Ada Lovelace", "selected": true}
]
}

+ 0
- 7
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/deselected.json 파일 보기

@@ -1,7 +0,0 @@
{
"p": 1,
"total": 1,
"users": [
{"login": "grace", "name": "Grace Hopper", "selected": false}
]
}

+ 0
- 5
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/empty.json 파일 보기

@@ -1,5 +0,0 @@
{
"p": 1,
"total": 0,
"users": []
}

+ 0
- 7
server/sonar-server/src/test/resources/org/sonar/server/usergroups/ws/UsersActionTest/selected.json 파일 보기

@@ -1,7 +0,0 @@
{
"p": 1,
"total": 1,
"users": [
{"login": "ada", "name": "Ada Lovelace", "selected": true}
]
}

Loading…
취소
저장