diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-08-28 15:43:20 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-08-28 17:30:34 +0200 |
commit | ffc4e81629792f92b532e661b7a5d2a05550fd3a (patch) | |
tree | 74094bbe16ea21d20334a643af8e20dfe7d85c5d /server/sonar-server | |
parent | 332c20dbcc77765ac095634817b5d60c9bbe1dcf (diff) | |
download | sonarqube-ffc4e81629792f92b532e661b7a5d2a05550fd3a.tar.gz sonarqube-ffc4e81629792f92b532e661b7a5d2a05550fd3a.zip |
SONAR-6498 WS permissions/delete_template impossible to delete a default template
Diffstat (limited to 'server/sonar-server')
24 files changed, 377 insertions, 78 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/DefaultPermissionTemplates.java b/server/sonar-server/src/main/java/org/sonar/server/permission/DefaultPermissionTemplates.java new file mode 100644 index 00000000000..ed1743a0537 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/DefaultPermissionTemplates.java @@ -0,0 +1,32 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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.sonar.server.permission; + +import static java.lang.String.format; + +public class DefaultPermissionTemplates { + public static final String DEFAULT_TEMPLATE_PROPERTY = "sonar.permission.template.default"; + private static final String DEFAULT_ROOT_QUALIFIER_TEMPLATE_PROPERTY = "sonar.permission.template.%s.default"; + + public static String defaultRootQualifierTemplateProperty(String qualifier) { + return format(DEFAULT_ROOT_QUALIFIER_TEMPLATE_PROPERTY, qualifier); + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionFinder.java b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionFinder.java index cff70f7e089..393d594d963 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionFinder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionFinder.java @@ -152,7 +152,7 @@ public class PermissionFinder { } private Long templateId(String templateKey) { - PermissionTemplateDto dto = permissionTemplateDao.selectByKey(templateKey); + PermissionTemplateDto dto = permissionTemplateDao.selectByUuid(templateKey); if (dto == null) { throw new NotFoundException(String.format("Template '%s' does not exist", templateKey)); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java index 1d658d0d195..d7e412765d9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java @@ -75,7 +75,7 @@ public class PermissionTemplateService { @CheckForNull public PermissionTemplate selectPermissionTemplate(String templateKey) { checkGlobalAdminUser(userSession); - PermissionTemplateDto permissionTemplateDto = permissionTemplateDao.selectByKeyWithUserAndGroupPermissions(templateKey); + PermissionTemplateDto permissionTemplateDto = permissionTemplateDao.selectByUuidWithUserAndGroupPermissions(templateKey); return PermissionTemplate.create(permissionTemplateDto); } @@ -132,7 +132,13 @@ public class PermissionTemplateService { public void deletePermissionTemplate(Long templateId) { checkGlobalAdminUser(userSession); - permissionTemplateDao.deleteById(templateId); + DbSession dbSession = dbClient.openSession(false); + try { + permissionTemplateDao.deleteById(dbSession, templateId); + dbSession.commit(); + } finally { + dbClient.closeSession(dbSession); + } } /** diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateUpdater.java index a0a34505897..55fde3b4055 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateUpdater.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateUpdater.java @@ -87,7 +87,7 @@ abstract class PermissionTemplateUpdater { } private Long getTemplateId(String key) { - PermissionTemplateDto permissionTemplateDto = dbClient.permissionTemplateDao().selectByKey(key); + PermissionTemplateDto permissionTemplateDto = dbClient.permissionTemplateDao().selectByUuid(key); if (permissionTemplateDto == null) { throw new BadRequestException("Unknown template: " + key); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/CreateTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/CreateTemplateAction.java index 04141c3dad4..92ea3b0097d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/CreateTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/CreateTemplateAction.java @@ -31,6 +31,7 @@ import org.sonar.server.user.UserSession; import org.sonarqube.ws.Permissions; import org.sonarqube.ws.Permissions.PermissionTemplate; +import static java.lang.String.format; import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser; import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_DESCRIPTION; import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_NAME; @@ -100,8 +101,7 @@ public class CreateTemplateAction implements PermissionsWsAction { validateTemplateNameFormat(name); PermissionTemplateDto permissionTemplateWithSameName = dbClient.permissionTemplateDao().selectByName(dbSession, name); - checkRequest(permissionTemplateWithSameName == null, String.format - (MSG_TEMPLATE_WITH_SAME_NAME, name)); + checkRequest(permissionTemplateWithSameName == null, format(MSG_TEMPLATE_WITH_SAME_NAME, name)); } private PermissionTemplateDto insertTemplate(DbSession dbSession, String name, String description, String projectPattern) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DefaultPermissionTemplateFinder.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DefaultPermissionTemplateFinder.java new file mode 100644 index 00000000000..1f6c8536408 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DefaultPermissionTemplateFinder.java @@ -0,0 +1,70 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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.sonar.server.permission.ws; + +import com.google.common.base.Function; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableSet; +import java.util.Set; +import javax.annotation.Nonnull; +import org.sonar.api.config.Settings; +import org.sonar.api.resources.ResourceTypes; + +import static com.google.common.base.Objects.firstNonNull; +import static org.sonar.server.permission.DefaultPermissionTemplates.DEFAULT_TEMPLATE_PROPERTY; +import static org.sonar.server.permission.DefaultPermissionTemplates.defaultRootQualifierTemplateProperty; +import static org.sonar.server.permission.ws.ResourceTypeToQualifier.RESOURCE_TYPE_TO_QUALIFIER; + +public class DefaultPermissionTemplateFinder { + private final Settings settings; + private final ResourceTypes resourceTypes; + + public DefaultPermissionTemplateFinder(Settings settings, ResourceTypes resourceTypes) { + this.settings = settings; + this.resourceTypes = resourceTypes; + } + + public Set<String> getDefaultTemplateUuids() { + return ImmutableSet.<String>builder() + .addAll( + FluentIterable.from(resourceTypes.getRoots()) + .transform(RESOURCE_TYPE_TO_QUALIFIER) + .transform(new QualifierToDefaultTemplate(settings)) + .toSet()) + .add(settings.getString(DEFAULT_TEMPLATE_PROPERTY)) + .build(); + } + + private static class QualifierToDefaultTemplate implements Function<String, String> { + private final Settings settings; + + QualifierToDefaultTemplate(Settings settings) { + this.settings = settings; + } + + @Override + public String apply(@Nonnull String qualifier) { + String qualifierProperty = settings.getString(defaultRootQualifierTemplateProperty(qualifier)); + return firstNonNull(qualifierProperty, settings.getString(DEFAULT_TEMPLATE_PROPERTY)); + } + } + +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java index 8f15173e3e3..1e25d69cad1 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java @@ -20,24 +20,31 @@ package org.sonar.server.permission.ws; +import java.util.Set; import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; import org.sonar.db.DbClient; import org.sonar.db.DbSession; +import org.sonar.db.permission.PermissionTemplateDto; import org.sonar.server.user.UserSession; import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser; import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_ID; import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; +import static org.sonar.server.ws.WsUtils.checkRequest; public class DeleteTemplateAction implements PermissionsWsAction { private final DbClient dbClient; private final UserSession userSession; + private final PermissionDependenciesFinder finder; + private final DefaultPermissionTemplateFinder defaultPermissionTemplateFinder; - public DeleteTemplateAction(DbClient dbClient, UserSession userSession) { + public DeleteTemplateAction(DbClient dbClient, UserSession userSession, PermissionDependenciesFinder finder, DefaultPermissionTemplateFinder defaultPermissionTemplateFinder) { this.dbClient = dbClient; this.userSession = userSession; + this.finder = finder; + this.defaultPermissionTemplateFinder = defaultPermissionTemplateFinder; } @Override @@ -55,16 +62,28 @@ public class DeleteTemplateAction implements PermissionsWsAction { @Override public void handle(Request wsRequest, Response wsResponse) throws Exception { checkGlobalAdminUser(userSession); - String key = wsRequest.mandatoryParam(PARAM_TEMPLATE_ID); + String uuid = wsRequest.mandatoryParam(PARAM_TEMPLATE_ID); + checkTemplateUuidIsNotDefault(uuid); + + deleteTemplate(uuid); + + wsResponse.noContent(); + } + + private void deleteTemplate(String uuid) { DbSession dbSession = dbClient.openSession(false); try { - dbClient.permissionTemplateDao().deleteByKey(dbSession, key); + PermissionTemplateDto template = finder.getTemplate(dbSession, uuid); + dbClient.permissionTemplateDao().deleteById(dbSession, template.getId()); dbSession.commit(); - - wsResponse.noContent(); } finally { dbClient.closeSession(dbSession); } } + + private void checkTemplateUuidIsNotDefault(String key) { + Set<String> defaultTemplateUuids = defaultPermissionTemplateFinder.getDefaultTemplateUuids(); + checkRequest(!defaultTemplateUuids.contains(key), "It is not possible to delete a default template"); + } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java index a6a4e862d8c..dcd4d66dbb3 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java @@ -95,8 +95,8 @@ public class PermissionDependenciesFinder { format("User with login '%s' is not found'", userLogin)); } - PermissionTemplateDto getTemplate(DbSession dbSession, String templateKey) { - return checkFound(dbClient.permissionTemplateDao().selectByKey(dbSession, templateKey), - format("Permission template with key '%s' is not found", templateKey)); + PermissionTemplateDto getTemplate(DbSession dbSession, String uuid) { + return checkFound(dbClient.permissionTemplateDao().selectByUuid(dbSession, uuid), + format("Permission template with id '%s' is not found", uuid)); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWsModule.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWsModule.java index 6998cf23015..6769088cde5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWsModule.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWsModule.java @@ -27,6 +27,7 @@ public class PermissionsWsModule extends Module { protected void configureModule() { add( PermissionsWs.class, + // actions AddGroupAction.class, AddUserAction.class, RemoveGroupAction.class, @@ -34,16 +35,18 @@ public class PermissionsWsModule extends Module { UsersAction.class, GroupsAction.class, SearchGlobalPermissionsAction.class, - PermissionChangeBuilder.class, SearchProjectPermissionsAction.class, - SearchProjectPermissionsDataLoader.class, - PermissionDependenciesFinder.class, - AddUserToTemplateAction.class, RemoveUserFromTemplateAction.class, + AddUserToTemplateAction.class, AddGroupToTemplateAction.class, RemoveGroupFromTemplateAction.class, CreateTemplateAction.class, UpdateTemplateAction.class, - DeleteTemplateAction.class); + DeleteTemplateAction.class, + // utility classes + PermissionChangeBuilder.class, + SearchProjectPermissionsDataLoader.class, + PermissionDependenciesFinder.class, + DefaultPermissionTemplateFinder.class); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/ResourceTypeToQualifier.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/ResourceTypeToQualifier.java new file mode 100644 index 00000000000..a751be79838 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/ResourceTypeToQualifier.java @@ -0,0 +1,39 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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.sonar.server.permission.ws; + +import com.google.common.base.Function; +import javax.annotation.Nonnull; +import org.sonar.api.resources.ResourceType; + +class ResourceTypeToQualifier { + + static final Function<ResourceType, String> RESOURCE_TYPE_TO_QUALIFIER = Singleton.INSTANCE; + + private enum Singleton implements Function<ResourceType, String> { + INSTANCE; + + @Override + public String apply(@Nonnull ResourceType resourceType) { + return resourceType.getQualifier(); + } + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java index 925b70d735f..1326164704b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java @@ -31,7 +31,6 @@ import java.util.List; import javax.annotation.Nonnull; import org.apache.ibatis.session.ResultContext; import org.apache.ibatis.session.ResultHandler; -import org.sonar.api.resources.ResourceType; import org.sonar.api.resources.ResourceTypes; import org.sonar.api.server.ws.Request; import org.sonar.api.utils.Paging; @@ -46,6 +45,7 @@ import static org.sonar.api.server.ws.WebService.Param.PAGE; import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE; import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY; import static org.sonar.api.utils.Paging.forPageIndex; +import static org.sonar.server.permission.ws.ResourceTypeToQualifier.RESOURCE_TYPE_TO_QUALIFIER; import static org.sonar.server.permission.ws.SearchProjectPermissionsData.newBuilder; public class SearchProjectPermissionsDataLoader { @@ -56,7 +56,7 @@ public class SearchProjectPermissionsDataLoader { public SearchProjectPermissionsDataLoader(DbClient dbClient, ComponentFinder componentFinder, ResourceTypes resourceTypes) { this.dbClient = dbClient; this.componentFinder = componentFinder; - this.rootQualifiers = Collections2.transform(resourceTypes.getRoots(), new ResourceTypeToQualifierFunction()); + this.rootQualifiers = Collections2.transform(resourceTypes.getRoots(), RESOURCE_TYPE_TO_QUALIFIER); } public SearchProjectPermissionsData load(Request wsRequest) { @@ -135,11 +135,4 @@ public class SearchProjectPermissionsDataLoader { return component.getId(); } } - - private static class ResourceTypeToQualifierFunction implements Function<ResourceType, String> { - @Override - public String apply(@Nonnull ResourceType resourceType) { - return resourceType.getQualifier(); - } - } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java index b54beb3e14f..688e3bf3c70 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java +++ b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java @@ -20,6 +20,7 @@ package org.sonar.server.startup; +import org.sonar.api.resources.Qualifiers; import org.sonar.api.security.DefaultGroups; import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; @@ -32,10 +33,10 @@ import org.sonar.db.permission.PermissionTemplateDto; import org.sonar.db.user.GroupDto; import org.sonar.server.platform.PersistentSettings; -public class RegisterPermissionTemplates { +import static org.sonar.server.permission.DefaultPermissionTemplates.DEFAULT_TEMPLATE_PROPERTY; +import static org.sonar.server.permission.DefaultPermissionTemplates.defaultRootQualifierTemplateProperty; - public static final String DEFAULT_TEMPLATE_PROPERTY = "sonar.permission.template.default"; - public static final String DEFAULT_PROJECTS_TEMPLATE_PROPERTY = "sonar.permission.template.TRK.default"; +public class RegisterPermissionTemplates { private static final Logger LOG = Loggers.get(RegisterPermissionTemplates.class); @@ -52,7 +53,7 @@ public class RegisterPermissionTemplates { if (shouldRegister()) { if (hasExistingPermissionsConfig()) { - String projectsPermissionsKey = settings.getString(DEFAULT_PROJECTS_TEMPLATE_PROPERTY); + String projectsPermissionsKey = settings.getString(defaultRootQualifierTemplateProperty(Qualifiers.PROJECT)); setDefaultProperty(projectsPermissionsKey); } else { insertDefaultTemplate(); @@ -64,7 +65,7 @@ public class RegisterPermissionTemplates { } private boolean hasExistingPermissionsConfig() { - return settings.getString(DEFAULT_PROJECTS_TEMPLATE_PROPERTY) != null; + return settings.getString(defaultRootQualifierTemplateProperty(Qualifiers.PROJECT)) != null; } private boolean shouldRegister() { diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionFinderTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionFinderTest.java index b3592ca78a2..36cf19fc38e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionFinderTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionFinderTest.java @@ -264,7 +264,7 @@ public class PermissionFinderTest { @Test public void find_users_from_permission_template() { - when(permissionTemplateDao.selectByKey(anyString())).thenReturn(new PermissionTemplateDto().setId(1L).setKee("my_template")); + when(permissionTemplateDao.selectByUuid(anyString())).thenReturn(new PermissionTemplateDto().setId(1L).setKee("my_template")); when(permissionTemplateDao.selectUsers(any(DbSession.class), any(PermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn( newArrayList(new UserWithPermissionDto().setName("user1").setPermission("user")) @@ -279,7 +279,7 @@ public class PermissionFinderTest { @Test public void fail_to_find_users_from_permission_template_when_template_not_found() { - when(permissionTemplateDao.selectByKey(anyString())).thenReturn(null); + when(permissionTemplateDao.selectByUuid(anyString())).thenReturn(null); try { underTest.findUsersWithPermissionTemplate(PermissionQuery.builder().permission("user").template("Unknown").build()); @@ -291,7 +291,7 @@ public class PermissionFinderTest { @Test public void find_groups_from_permission_template() { - when(permissionTemplateDao.selectByKey(anyString())).thenReturn(new PermissionTemplateDto().setId(1L).setKee("my_template")); + when(permissionTemplateDao.selectByUuid(anyString())).thenReturn(new PermissionTemplateDto().setId(1L).setKee("my_template")); when(permissionTemplateDao.selectGroups(any(DbSession.class), any(PermissionQuery.class), anyLong())).thenReturn( newArrayList(new GroupWithPermissionDto().setName("users").setPermission("user")) @@ -305,7 +305,7 @@ public class PermissionFinderTest { @Test public void fail_to_find_groups_from_permission_template_when_template_not_found() { - when(permissionTemplateDao.selectByKey(anyString())).thenReturn(null); + when(permissionTemplateDao.selectByUuid(anyString())).thenReturn(null); try { underTest.findGroupsWithPermissionTemplate(PermissionQuery.builder().permission("user").template("Unknown").build()); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateServiceTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateServiceTest.java index 02cdf8b6c19..6dd8aab0185 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateServiceTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateServiceTest.java @@ -147,11 +147,11 @@ public class PermissionTemplateServiceTest { @Test public void should_delete_permission_template() { - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); underTest.deletePermissionTemplate(1L); - verify(permissionTemplateDao, times(1)).deleteById(1L); + verify(permissionTemplateDao).deleteById(any(DbSession.class), eq(1L)); } @Test @@ -177,7 +177,7 @@ public class PermissionTemplateServiceTest { .setUsersPermissions(usersPermissions) .setGroupsByPermission(groupsPermissions); - when(permissionTemplateDao.selectByKeyWithUserAndGroupPermissions("my template")).thenReturn(permissionTemplateDto); + when(permissionTemplateDao.selectByUuidWithUserAndGroupPermissions("my template")).thenReturn(permissionTemplateDto); PermissionTemplate permissionTemplate = underTest.selectPermissionTemplate("my template"); @@ -271,7 +271,7 @@ public class PermissionTemplateServiceTest { public void should_add_user_permission() { UserDto userDto = new UserDto().setId(1L).setLogin("user").setName("user"); when(userDao.selectActiveUserByLogin("user")).thenReturn(userDto); - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); underTest.addUserPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "user"); @@ -283,7 +283,7 @@ public class PermissionTemplateServiceTest { expected.expect(BadRequestException.class); expected.expectMessage("Unknown user:"); - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); when(userDao.selectActiveUserByLogin("unknown")).thenReturn(null); underTest.addUserPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "unknown"); @@ -293,7 +293,7 @@ public class PermissionTemplateServiceTest { public void should_remove_user_permission() { UserDto userDto = new UserDto().setId(1L).setLogin("user").setName("user"); when(userDao.selectActiveUserByLogin("user")).thenReturn(userDto); - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); underTest.removeUserPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "user"); @@ -304,7 +304,7 @@ public class PermissionTemplateServiceTest { public void should_add_group_permission() { GroupDto groupDto = new GroupDto().setId(1L).setName("group"); when(groupDao.selectByName(any(DbSession.class), eq("group"))).thenReturn(groupDto); - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); underTest.addGroupPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "group"); @@ -316,7 +316,7 @@ public class PermissionTemplateServiceTest { expected.expect(BadRequestException.class); expected.expectMessage("Unknown group:"); - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); when(groupDao.selectByName(any(DbSession.class), eq("unknown"))).thenReturn(null); underTest.addGroupPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "unknown"); @@ -326,7 +326,7 @@ public class PermissionTemplateServiceTest { public void should_remove_group_permission() { GroupDto groupDto = new GroupDto().setId(1L).setName("group"); when(groupDao.selectByName(any(DbSession.class), eq("group"))).thenReturn(groupDto); - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); underTest.removeGroupPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "group"); @@ -335,7 +335,7 @@ public class PermissionTemplateServiceTest { @Test public void should_add_permission_to_anyone_group() { - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); underTest.addGroupPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "Anyone"); @@ -345,7 +345,7 @@ public class PermissionTemplateServiceTest { @Test public void should_remove_permission_from_anyone_group() { - when(permissionTemplateDao.selectByKey(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); + when(permissionTemplateDao.selectByUuid(DEFAULT_KEY)).thenReturn(DEFAULT_TEMPLATE); underTest.removeGroupPermission(DEFAULT_KEY, DEFAULT_PERMISSION, "Anyone"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateUpdaterTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateUpdaterTest.java index 270bf15228e..2e346fe58ce 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateUpdaterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateUpdaterTest.java @@ -76,7 +76,7 @@ public class PermissionTemplateUpdaterTest { public void should_execute_on_valid_parameters() { final PermissionTemplateDao permissionTemplateDao = mock(PermissionTemplateDao.class); - when(permissionTemplateDao.selectByKey("my_template")).thenReturn(new PermissionTemplateDto().setId(1L)); + when(permissionTemplateDao.selectByUuid("my_template")).thenReturn(new PermissionTemplateDto().setId(1L)); when(dbClient.permissionTemplateDao()).thenReturn(permissionTemplateDao); PermissionTemplateUpdater updater = @@ -97,7 +97,7 @@ public class PermissionTemplateUpdaterTest { expected.expectMessage("Unknown template:"); final PermissionTemplateDao permissionTemplateDao = mock(PermissionTemplateDao.class); - when(permissionTemplateDao.selectByKey("my_template")).thenReturn(null); + when(permissionTemplateDao.selectByUuid("my_template")).thenReturn(null); PermissionTemplateUpdater updater = new PermissionTemplateUpdater(dbClient, userSessionRule, "my_template", UserRole.USER, "user") { @@ -113,7 +113,7 @@ public class PermissionTemplateUpdaterTest { expected.expect(BadRequestException.class); final PermissionTemplateDao permissionTemplateDao = mock(PermissionTemplateDao.class); - when(permissionTemplateDao.selectByKey("my_template")).thenReturn(new PermissionTemplateDto().setId(1L)); + when(permissionTemplateDao.selectByUuid("my_template")).thenReturn(new PermissionTemplateDto().setId(1L)); when(dbClient.permissionTemplateDao()).thenReturn(permissionTemplateDao); PermissionTemplateUpdater updater = diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupToTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupToTemplateActionTest.java index 559d4660572..16c4e5ea593 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupToTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupToTemplateActionTest.java @@ -189,7 +189,7 @@ public class AddGroupToTemplateActionTest { @Test public void fail_if_template_key_does_not_exist() { expectedException.expect(NotFoundException.class); - expectedException.expectMessage("Permission template with key 'unknown-key' is not found"); + expectedException.expectMessage("Permission template with id 'unknown-key' is not found"); newRequest(GROUP_NAME, "unknown-key", CODEVIEWER); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserToTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserToTemplateActionTest.java index 5f4afa4bb4d..023da2d0854 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserToTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserToTemplateActionTest.java @@ -157,7 +157,7 @@ public class AddUserToTemplateActionTest { @Test public void fail_if_template_key_does_not_exist() { expectedException.expect(NotFoundException.class); - expectedException.expectMessage("Permission template with key 'unknown-key' is not found"); + expectedException.expectMessage("Permission template with id 'unknown-key' is not found"); newRequest(USER_LOGIN, "unknown-key", CODEVIEWER); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DefaultPermissionTemplateFinderTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DefaultPermissionTemplateFinderTest.java new file mode 100644 index 00000000000..c7425eb3c66 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DefaultPermissionTemplateFinderTest.java @@ -0,0 +1,92 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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.sonar.server.permission.ws; + +import java.util.Collections; +import java.util.List; +import java.util.Set; +import org.junit.Before; +import org.junit.Test; +import org.sonar.api.config.Settings; +import org.sonar.api.resources.Qualifiers; +import org.sonar.api.resources.ResourceType; +import org.sonar.api.resources.ResourceTypes; + +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.sonar.server.permission.DefaultPermissionTemplates.DEFAULT_TEMPLATE_PROPERTY; +import static org.sonar.server.permission.DefaultPermissionTemplates.defaultRootQualifierTemplateProperty; + +public class DefaultPermissionTemplateFinderTest { + + ResourceTypes resourceTypes = mock(ResourceTypes.class); + Settings settings = new Settings(); + + DefaultPermissionTemplateFinder underTest; + + @Before + public void setUp() { + underTest = new DefaultPermissionTemplateFinder(settings, resourceTypes); + settings + .setProperty(DEFAULT_TEMPLATE_PROPERTY, "default-template-uuid") + .setProperty(defaultRootQualifierTemplateProperty(Qualifiers.PROJECT), "default-project-template-uuid") + .setProperty(defaultRootQualifierTemplateProperty("DEV"), "default-dev-template-uuid") + .setProperty(defaultRootQualifierTemplateProperty(Qualifiers.VIEW), "default-view-template-uuid"); + when(resourceTypes.getRoots()).thenReturn(rootResourceTypes()); + } + + @Test + public void get_default_template_uuids_in_settings() { + Set<String> result = underTest.getDefaultTemplateUuids(); + + assertThat(result).containsOnly("default-template-uuid", "default-project-template-uuid", "default-view-template-uuid", "default-dev-template-uuid"); + } + + @Test + public void get_default_template_uuid_if_no_root_resource() { + when(resourceTypes.getRoots()).thenReturn(Collections.<ResourceType>emptySet()); + + Set<String> result = underTest.getDefaultTemplateUuids(); + + assertThat(result).containsOnly("default-template-uuid"); + } + + @Test + public void get_default_template_uuid_if_no_property() { + settings = new Settings(); + settings.setProperty(DEFAULT_TEMPLATE_PROPERTY, "default-template-uuid"); + underTest = new DefaultPermissionTemplateFinder(settings, resourceTypes); + + Set<String> result = underTest.getDefaultTemplateUuids(); + + assertThat(result).containsOnly("default-template-uuid"); + } + + private static List<ResourceType> rootResourceTypes() { + ResourceType project = ResourceType.builder(Qualifiers.PROJECT).build(); + ResourceType view = ResourceType.builder(Qualifiers.VIEW).build(); + ResourceType dev = ResourceType.builder("DEV").build(); + + return asList(project, view, dev); + } +} diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DeleteTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DeleteTemplateActionTest.java index ce7bf055326..319a7e1fa22 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DeleteTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DeleteTemplateActionTest.java @@ -20,18 +20,27 @@ package org.sonar.server.permission.ws; +import java.util.Collections; import javax.annotation.Nullable; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.api.utils.System2; +import org.sonar.api.web.UserRole; 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.permission.PermissionTemplateDto; +import org.sonar.db.user.GroupDto; +import org.sonar.db.user.GroupTesting; +import org.sonar.db.user.UserDto; +import org.sonar.db.user.UserTesting; +import org.sonar.server.component.ComponentFinder; +import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.exceptions.ForbiddenException; +import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.TestRequest; @@ -39,12 +48,15 @@ import org.sonar.server.ws.TestResponse; import org.sonar.server.ws.WsActionTester; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.mockito.internal.util.collections.Sets.newSet; import static org.sonar.db.permission.PermissionTemplateTesting.newPermissionTemplateDto; import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_ID; public class DeleteTemplateActionTest { - static final String TEMPLATE_KEY = "permission-template-key"; + static final String TEMPLATE_UUID = "permission-template-uuid"; @Rule public DbTester db = DbTester.create(System2.INSTANCE); @@ -56,6 +68,8 @@ public class DeleteTemplateActionTest { WsActionTester ws; DbClient dbClient; DbSession dbSession; + DefaultPermissionTemplateFinder defautTemplatePermissionFinder; + PermissionTemplateDto permissionTemplate; @Before @@ -64,20 +78,40 @@ public class DeleteTemplateActionTest { dbClient = db.getDbClient(); dbSession = db.getSession(); - ws = new WsActionTester(new DeleteTemplateAction(dbClient, userSession)); - - permissionTemplate = insertTemplate(newPermissionTemplateDto().setKee("permission-template-key")); - commit(); - assertThat(dbClient.permissionTemplateDao().selectByKey(dbSession, TEMPLATE_KEY)).isNotNull(); + defautTemplatePermissionFinder = mock(DefaultPermissionTemplateFinder.class); + when(defautTemplatePermissionFinder.getDefaultTemplateUuids()).thenReturn(Collections.<String>emptySet()); + PermissionDependenciesFinder finder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient)); + ws = new WsActionTester(new DeleteTemplateAction(dbClient, userSession, finder, defautTemplatePermissionFinder)); + + permissionTemplate = insertTemplateAndAssociatedPermissions(newPermissionTemplateDto().setKee(TEMPLATE_UUID)); + PermissionTemplateDto permissionTemplateInDatabase = dbClient.permissionTemplateDao().selectByUuidWithUserAndGroupPermissions(dbSession, TEMPLATE_UUID); + assertThat(permissionTemplateInDatabase.getKee()).isEqualTo(TEMPLATE_UUID); + assertThat(permissionTemplateInDatabase.getGroupsPermissions()).isNotEmpty(); + assertThat(permissionTemplateInDatabase.getUsersPermissions()).isNotEmpty(); } @Test public void delete_template_in_db() { - - TestResponse result = newRequest(TEMPLATE_KEY); + TestResponse result = newRequest(TEMPLATE_UUID); assertThat(result.getInput()).isEmpty(); - assertThat(dbClient.permissionTemplateDao().selectByKey(dbSession, TEMPLATE_KEY)).isNull(); + assertThat(dbClient.permissionTemplateDao().selectByUuidWithUserAndGroupPermissions(dbSession, TEMPLATE_UUID)).isNull(); + } + + @Test + public void fail_if_uuid_is_not_known() { + expectedException.expect(NotFoundException.class); + + newRequest("unknown-template-uuid"); + } + + @Test + public void fail_if_template_is_default() { + expectedException.expect(BadRequestException.class); + expectedException.expectMessage("It is not possible to delete a default template"); + when(defautTemplatePermissionFinder.getDefaultTemplateUuids()).thenReturn(newSet(TEMPLATE_UUID)); + + newRequest(TEMPLATE_UUID); } @Test @@ -85,7 +119,7 @@ public class DeleteTemplateActionTest { expectedException.expect(UnauthorizedException.class); userSession.anonymous(); - newRequest(TEMPLATE_KEY); + newRequest(TEMPLATE_UUID); } @Test @@ -93,28 +127,35 @@ public class DeleteTemplateActionTest { expectedException.expect(ForbiddenException.class); userSession.login().setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN); - newRequest(TEMPLATE_KEY); + newRequest(TEMPLATE_UUID); } @Test - public void fail_if_key_is_not_provided() { + public void fail_if_uuid_is_not_provided() { expectedException.expect(IllegalArgumentException.class); newRequest(null); } - private PermissionTemplateDto insertTemplate(PermissionTemplateDto template) { - return dbClient.permissionTemplateDao().insert(dbSession, template); + private PermissionTemplateDto insertTemplateAndAssociatedPermissions(PermissionTemplateDto template) { + dbClient.permissionTemplateDao().insert(dbSession, template); + UserDto user = dbClient.userDao().insert(dbSession, UserTesting.newUserDto().setActive(true)); + GroupDto group = dbClient.groupDao().insert(dbSession, GroupTesting.newGroupDto()); + dbClient.permissionTemplateDao().insertUserPermission(dbSession, template.getId(), user.getId(), UserRole.ADMIN); + dbClient.permissionTemplateDao().insertGroupPermission(dbSession, template.getId(), group.getId(), UserRole.CODEVIEWER); + commit(); + + return template; } private void commit() { dbSession.commit(); } - private TestResponse newRequest(@Nullable String key) { + private TestResponse newRequest(@Nullable String id) { TestRequest request = ws.newRequest(); - if (key != null) { - request.setParam(PARAM_TEMPLATE_ID, key); + if (id != null) { + request.setParam(PARAM_TEMPLATE_ID, id); } TestResponse result = executeRequest(request); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsModuleTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsModuleTest.java index 69eadbe065f..c8c59d23090 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsModuleTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsModuleTest.java @@ -30,6 +30,6 @@ public class PermissionsWsModuleTest { public void verify_count_of_added_components() { ComponentContainer container = new ComponentContainer(); new PermissionsWsModule().configure(container); - assertThat(container.size()).isEqualTo(21); + assertThat(container.size()).isEqualTo(22); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateActionTest.java index 28e64178f61..9d2da24e995 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateActionTest.java @@ -189,7 +189,7 @@ public class RemoveGroupFromTemplateActionTest { @Test public void fail_if_template_key_does_not_exist() { expectedException.expect(NotFoundException.class); - expectedException.expectMessage("Permission template with key 'unknown-key' is not found"); + expectedException.expectMessage("Permission template with id 'unknown-key' is not found"); newRequest(GROUP_NAME, "unknown-key", PERMISSION); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserFromTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserFromTemplateActionTest.java index 7b42bab1fd1..08ffe9ca61b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserFromTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserFromTemplateActionTest.java @@ -181,7 +181,7 @@ public class RemoveUserFromTemplateActionTest { @Test public void fail_if_template_key_does_not_exist() { expectedException.expect(NotFoundException.class); - expectedException.expectMessage("Permission template with key 'unknown-key' is not found"); + expectedException.expectMessage("Permission template with id 'unknown-key' is not found"); newRequest(USER_LOGIN, "unknown-key", DEFAULT_PERMISSION); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UpdateTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UpdateTemplateActionTest.java index e9c1afa6f6d..684f96ed564 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UpdateTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UpdateTemplateActionTest.java @@ -108,7 +108,7 @@ public class UpdateTemplateActionTest { public void update_with_the_same_values() { newRequest(templateDto.getKee(), templateDto.getName(), templateDto.getDescription(), templateDto.getKeyPattern()); - PermissionTemplateDto updatedTemplate = dbClient.permissionTemplateDao().selectByKey(dbSession, templateDto.getKee()); + PermissionTemplateDto updatedTemplate = dbClient.permissionTemplateDao().selectByUuid(dbSession, templateDto.getKee()); assertThat(updatedTemplate.getName()).isEqualTo(templateDto.getName()); assertThat(updatedTemplate.getDescription()).isEqualTo(templateDto.getDescription()); assertThat(updatedTemplate.getKeyPattern()).isEqualTo(templateDto.getKeyPattern()); @@ -127,7 +127,7 @@ public class UpdateTemplateActionTest { @Test public void fail_if_key_is_not_found() { expectedException.expect(NotFoundException.class); - expectedException.expectMessage("Permission template with key 'unknown-key' is not found"); + expectedException.expectMessage("Permission template with id 'unknown-key' is not found"); newRequest("unknown-key", null, null, null); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java index 5c607857295..750248d7dc9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java @@ -24,6 +24,7 @@ import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.junit.Before; import org.junit.Test; +import org.sonar.api.resources.Qualifiers; import org.sonar.api.security.DefaultGroups; import org.sonar.api.web.UserRole; import org.sonar.db.DbClient; @@ -46,6 +47,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; +import static org.sonar.server.permission.DefaultPermissionTemplates.DEFAULT_TEMPLATE_PROPERTY; +import static org.sonar.server.permission.DefaultPermissionTemplates.defaultRootQualifierTemplateProperty; public class RegisterPermissionTemplatesTest { @@ -94,7 +97,7 @@ public class RegisterPermissionTemplatesTest { verify(permissionTemplateDao).insertGroupPermission(1L, null, UserRole.USER); verify(permissionTemplateDao).insertGroupPermission(1L, null, UserRole.CODEVIEWER); verifyNoMoreInteractions(permissionTemplateDao); - verify(settings).saveProperty(RegisterPermissionTemplates.DEFAULT_TEMPLATE_PROPERTY, PermissionTemplateDto.DEFAULT.getKee()); + verify(settings).saveProperty(DEFAULT_TEMPLATE_PROPERTY, PermissionTemplateDto.DEFAULT.getKee()); } @Test @@ -111,7 +114,7 @@ public class RegisterPermissionTemplatesTest { @Test public void should_reference_TRK_template_as_default_when_present() { - when(settings.getString(RegisterPermissionTemplates.DEFAULT_PROJECTS_TEMPLATE_PROPERTY)).thenReturn("my_projects_template"); + when(settings.getString(defaultRootQualifierTemplateProperty(Qualifiers.PROJECT))).thenReturn("my_projects_template"); LoadedTemplateDto expectedTemplate = new LoadedTemplateDto().setKey(PermissionTemplateDto.DEFAULT.getKee()) .setType(LoadedTemplateDto.PERMISSION_TEMPLATE_TYPE); @@ -120,7 +123,7 @@ public class RegisterPermissionTemplatesTest { initializer.start(); verify(loadedTemplateDao).insert(argThat(Matches.template(expectedTemplate))); - verify(settings).saveProperty(RegisterPermissionTemplates.DEFAULT_TEMPLATE_PROPERTY, "my_projects_template"); + verify(settings).saveProperty(DEFAULT_TEMPLATE_PROPERTY, "my_projects_template"); verifyZeroInteractions(permissionTemplateDao); } |