/* * SonarQube * Copyright (C) 2009-2017 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.sonarqube.ws.client.permission; import org.junit.Rule; import org.junit.Test; import org.sonarqube.ws.WsPermissions; import org.sonarqube.ws.client.GetRequest; import org.sonarqube.ws.client.PostRequest; import org.sonarqube.ws.client.ServiceTester; import org.sonarqube.ws.client.WsConnector; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_NAME; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY_PATTERN; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_QUALIFIER; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_NAME; import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_USER_LOGIN; public class PermissionsServiceTest { private static final String PERMISSION_VALUE = "permission value"; private static final String PROJECT_ID_VALUE = "project id value"; private static final String PROJECT_KEY_VALUE = "project key value"; private static final String QUERY_VALUE = "query value"; private static final int PAGE_VALUE = 66; private static final int PAGE_SIZE_VALUE = 99; private static final String GROUP_ID_VALUE = "group id value"; private static final String GROUP_NAME_VALUE = "group name value"; private static final String TEMPLATE_ID_VALUE = "template id value"; private static final String TEMPLATE_NAME_VALUE = "template name value"; private static final String LOGIN_VALUE = "login value"; private static final String NAME_VALUE = "name value"; private static final String DESCRIPTION_VALUE = "description value"; private static final String PROJECT_KEY_PATTERN_VALUE = "project key pattern value"; private static final String QUALIFIER_VALUE = "qualifier value"; private static final String PARAM_Q = "q"; private static final String PARAM_PS = "ps"; private static final String PARAM_P = "p"; @Rule public ServiceTester<PermissionsService> serviceTester = new ServiceTester<>(new PermissionsService(mock(WsConnector.class))); private PermissionsService underTest = serviceTester.getInstanceUnderTest(); @Test(expected = NullPointerException.class) public void groups_throws_NPE_if_GroupWsRequest_argument_is_null() { underTest.groups(null); } @Test public void groups_does_POST_on_WS_groups() { GroupsWsRequest request = new GroupsWsRequest(); underTest.groups(request .setPermission(PERMISSION_VALUE) .setProjectId(PROJECT_ID_VALUE) .setProjectKey(PROJECT_KEY_VALUE) .setPage(PAGE_VALUE) .setPageSize(PAGE_SIZE_VALUE) .setQuery(QUERY_VALUE)); assertThat(serviceTester.getGetParser()).isSameAs(WsPermissions.WsGroupsResponse.parser()); GetRequest getRequest = serviceTester.getGetRequest(); serviceTester.assertThat(getRequest) .hasPath("groups") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_PROJECT_ID, PROJECT_ID_VALUE) .hasParam(PARAM_PROJECT_KEY, PROJECT_KEY_VALUE) .hasParam(PARAM_P, PAGE_VALUE) .hasParam(PARAM_PS, PAGE_SIZE_VALUE) .hasParam(PARAM_Q, QUERY_VALUE) .andNoOtherParam(); } @Test public void addGroup_does_POST_on_Ws_add_group() { underTest.addGroup(new AddGroupWsRequest() .setPermission(PERMISSION_VALUE) .setProjectId(PROJECT_ID_VALUE) .setProjectKey(PROJECT_KEY_VALUE) .setGroupId(GROUP_ID_VALUE) .setGroupName(GROUP_NAME_VALUE)); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("add_group") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_PROJECT_ID, PROJECT_ID_VALUE) .hasParam(PARAM_PROJECT_KEY, PROJECT_KEY_VALUE) .hasParam(PARAM_GROUP_ID, GROUP_ID_VALUE) .hasParam(PARAM_GROUP_NAME, GROUP_NAME_VALUE) .andNoOtherParam(); } @Test public void addGroupToTemplate_does_POST_on_Ws_add_group_to_template() { underTest.addGroupToTemplate( new AddGroupToTemplateWsRequest() .setGroupId(GROUP_ID_VALUE) .setGroupName(GROUP_NAME_VALUE) .setPermission(PERMISSION_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("add_group_to_template") .hasParam(PARAM_GROUP_ID, GROUP_ID_VALUE) .hasParam(PARAM_GROUP_NAME, GROUP_NAME_VALUE) .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void addUser_does_POST_on_Ws_add_user() { underTest.addUser(new AddUserWsRequest() .setLogin(LOGIN_VALUE) .setPermission(PERMISSION_VALUE) .setProjectId(PROJECT_ID_VALUE) .setProjectKey(PROJECT_KEY_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("add_user") .hasParam(PARAM_USER_LOGIN, LOGIN_VALUE) .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_PROJECT_ID, PROJECT_ID_VALUE) .hasParam(PARAM_PROJECT_KEY, PROJECT_KEY_VALUE) .andNoOtherParam(); } @Test public void addUserToTemplate_does_POST_on_Ws_add_user_to_template() { underTest.addUserToTemplate(new AddUserToTemplateWsRequest() .setPermission(PERMISSION_VALUE) .setLogin(LOGIN_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("add_user_to_template") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_USER_LOGIN, LOGIN_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void applyTemplate_does_POST_on_Ws_apply_template() { underTest.applyTemplate(new ApplyTemplateWsRequest() .setProjectId(PROJECT_ID_VALUE) .setProjectKey(PROJECT_KEY_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("apply_template") .hasParam(PARAM_PROJECT_ID, PROJECT_ID_VALUE) .hasParam(PARAM_PROJECT_KEY, PROJECT_KEY_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void bulk_apply_template() { underTest.bulkApplyTemplate(new BulkApplyTemplateWsRequest() .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) .setQualifier(QUALIFIER_VALUE) .setQuery(QUERY_VALUE)); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("bulk_apply_template") .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .hasParam("q", QUERY_VALUE) .hasParam(PARAM_QUALIFIER, QUALIFIER_VALUE) .andNoOtherParam(); } @Test public void createTemplate_does_POST_on_Ws_create_template() { underTest.createTemplate(new CreateTemplateWsRequest() .setName(NAME_VALUE) .setDescription(DESCRIPTION_VALUE) .setProjectKeyPattern(PROJECT_KEY_PATTERN_VALUE) ); assertThat(serviceTester.getPostParser()).isSameAs(WsPermissions.CreateTemplateWsResponse.parser()); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("create_template") .hasParam(PARAM_NAME, NAME_VALUE) .hasParam(PARAM_DESCRIPTION, DESCRIPTION_VALUE) .hasParam(PARAM_PROJECT_KEY_PATTERN, PROJECT_KEY_PATTERN_VALUE) .andNoOtherParam(); } @Test public void deleteTemplate_does_POST_on_Ws_delete_template() { underTest.deleteTemplate(new DeleteTemplateWsRequest() .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("delete_template") .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void removeGroup_does_POST_on_Ws_remove_group() { underTest.removeGroup(new RemoveGroupWsRequest() .setPermission(PERMISSION_VALUE) .setGroupId(GROUP_ID_VALUE) .setGroupName(GROUP_NAME_VALUE) .setProjectId(PROJECT_ID_VALUE) .setProjectKey(PROJECT_KEY_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("remove_group") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_GROUP_ID, GROUP_ID_VALUE) .hasParam(PARAM_GROUP_NAME, GROUP_NAME_VALUE) .hasParam(PARAM_PROJECT_ID, PROJECT_ID_VALUE) .hasParam(PARAM_PROJECT_KEY, PROJECT_KEY_VALUE) .andNoOtherParam(); } @Test public void removeGroupFromTemplate_does_POST_on_Ws_remove_group_from_template() { underTest.removeGroupFromTemplate(new RemoveGroupFromTemplateWsRequest() .setPermission(PERMISSION_VALUE) .setGroupId(GROUP_ID_VALUE) .setGroupName(GROUP_NAME_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("remove_group_from_template") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_GROUP_ID, GROUP_ID_VALUE) .hasParam(PARAM_GROUP_NAME, GROUP_NAME_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void removeUser_does_POST_on_Ws_remove_user() { underTest.removeUser(new RemoveUserWsRequest() .setPermission(PERMISSION_VALUE) .setLogin(LOGIN_VALUE) .setProjectId(PROJECT_ID_VALUE) .setProjectKey(PROJECT_KEY_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("remove_user") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_USER_LOGIN, LOGIN_VALUE) .hasParam(PARAM_PROJECT_ID, PROJECT_ID_VALUE) .hasParam(PARAM_PROJECT_KEY, PROJECT_KEY_VALUE) .andNoOtherParam(); } @Test public void removeUserFromTemplate_does_POST_on_Ws_remove_user_from_template() { underTest.removeUserFromTemplate(new RemoveUserFromTemplateWsRequest() .setPermission(PERMISSION_VALUE) .setLogin(LOGIN_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("remove_user_from_template") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_USER_LOGIN, LOGIN_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void searchGlobalPermissions_does_GET_on_Ws_search_global_permissions() { underTest.searchGlobalPermissions(); assertThat(serviceTester.getGetParser()).isSameAs(WsPermissions.WsSearchGlobalPermissionsResponse.parser()); GetRequest getRequest = serviceTester.getGetRequest(); serviceTester.assertThat(getRequest) .hasPath("search_global_permissions") .andNoOtherParam(); } @Test public void searchProjectPermissions_does_GET_on_Ws_search_project_permissions() { underTest.searchProjectPermissions(new SearchProjectPermissionsWsRequest() .setProjectId(PROJECT_ID_VALUE) .setProjectKey(PROJECT_KEY_VALUE) .setQualifier(QUALIFIER_VALUE) .setPage(PAGE_VALUE) .setPageSize(PAGE_SIZE_VALUE) .setQuery(QUERY_VALUE) ); assertThat(serviceTester.getGetParser()).isSameAs(WsPermissions.SearchProjectPermissionsWsResponse.parser()); GetRequest getRequest = serviceTester.getGetRequest(); serviceTester.assertThat(getRequest) .hasPath("search_project_permissions") .hasParam(PARAM_PROJECT_ID, PROJECT_ID_VALUE) .hasParam(PARAM_PROJECT_KEY, PROJECT_KEY_VALUE) .hasParam(PARAM_QUALIFIER, QUALIFIER_VALUE) .hasParam(PARAM_P, PAGE_VALUE) .hasParam(PARAM_PS, PAGE_SIZE_VALUE) .hasParam(PARAM_Q, QUERY_VALUE) .andNoOtherParam(); } @Test public void searchTemplates_does_GET_on_Ws_search_templates() { underTest.searchTemplates(new SearchTemplatesWsRequest() .setQuery(QUERY_VALUE) ); assertThat(serviceTester.getGetParser()).isSameAs(WsPermissions.SearchTemplatesWsResponse.parser()); GetRequest getRequest = serviceTester.getGetRequest(); serviceTester.assertThat(getRequest) .hasPath("search_templates") .hasParam(PARAM_Q, QUERY_VALUE) .andNoOtherParam(); } @Test public void setDefaultTemplate_does_POST_on_Ws_set_default_template() { underTest.setDefaultTemplate(new SetDefaultTemplateWsRequest() .setQualifier(QUALIFIER_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) ); assertThat(serviceTester.getPostParser()).isNull(); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("set_default_template") .hasParam(PARAM_QUALIFIER, QUALIFIER_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void updateTemplate_does_POST_on_Ws_update_template() { underTest.updateTemplate(new UpdateTemplateWsRequest() .setDescription(DESCRIPTION_VALUE) .setId(TEMPLATE_ID_VALUE) .setName(TEMPLATE_NAME_VALUE) .setProjectKeyPattern(PROJECT_KEY_PATTERN_VALUE) ); assertThat(serviceTester.getPostParser()).isSameAs(WsPermissions.UpdateTemplateWsResponse.parser()); PostRequest postRequest = serviceTester.getPostRequest(); serviceTester.assertThat(postRequest) .hasPath("update_template") .hasParam(PARAM_DESCRIPTION, DESCRIPTION_VALUE) .hasParam(PARAM_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_NAME, TEMPLATE_NAME_VALUE) .hasParam(PARAM_PROJECT_KEY_PATTERN, PROJECT_KEY_PATTERN_VALUE) .andNoOtherParam(); } @Test public void add_project_creator_to_template() { underTest.addProjectCreatorToTemplate(AddProjectCreatorToTemplateWsRequest.builder() .setPermission(PERMISSION_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) .build()); assertThat(serviceTester.getPostParser()).isNull(); PostRequest getRequest = serviceTester.getPostRequest(); serviceTester.assertThat(getRequest) .hasPath("add_project_creator_to_template") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } @Test public void remove_project_creator_from_template() { underTest.removeProjectCreatorFromTemplate(RemoveProjectCreatorFromTemplateWsRequest.builder() .setPermission(PERMISSION_VALUE) .setTemplateId(TEMPLATE_ID_VALUE) .setTemplateName(TEMPLATE_NAME_VALUE) .build()); assertThat(serviceTester.getPostParser()).isNull(); PostRequest getRequest = serviceTester.getPostRequest(); serviceTester.assertThat(getRequest) .hasPath("remove_project_creator_from_template") .hasParam(PARAM_PERMISSION, PERMISSION_VALUE) .hasParam(PARAM_TEMPLATE_ID, TEMPLATE_ID_VALUE) .hasParam(PARAM_TEMPLATE_NAME, TEMPLATE_NAME_VALUE) .andNoOtherParam(); } }