@@ -41,7 +41,7 @@ import static org.sonar.server.permission.ws.Parameters.PARAM_LONG_TEMPLATE_KEY; | |||
import static org.sonar.server.permission.ws.Parameters.createGroupIdParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createGroupNameParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createProjectPermissionParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameterToAddRemoveUserOrGroup; | |||
public class AddGroupToTemplateAction implements PermissionsWsAction { | |||
private final DbClient dbClient; | |||
@@ -65,7 +65,7 @@ public class AddGroupToTemplateAction implements PermissionsWsAction { | |||
"It requires administration permissions to access.") | |||
.setHandler(this); | |||
createTemplateKeyParameter(action); | |||
createTemplateKeyParameterToAddRemoveUserOrGroup(action); | |||
createProjectPermissionParameter(action); | |||
createGroupIdParameter(action); | |||
createGroupNameParameter(action); |
@@ -41,7 +41,7 @@ import static org.sonar.server.permission.ws.Parameters.PARAM_PERMISSION; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_LONG_TEMPLATE_KEY; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_USER_LOGIN; | |||
import static org.sonar.server.permission.ws.Parameters.createProjectPermissionParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameterToAddRemoveUserOrGroup; | |||
import static org.sonar.server.permission.ws.Parameters.createUserLoginParameter; | |||
public class AddUserToTemplateAction implements PermissionsWsAction { | |||
@@ -65,7 +65,7 @@ public class AddUserToTemplateAction implements PermissionsWsAction { | |||
"It requires administration permissions to access.") | |||
.setHandler(this); | |||
createTemplateKeyParameter(action); | |||
createTemplateKeyParameterToAddRemoveUserOrGroup(action); | |||
createProjectPermissionParameter(action); | |||
createUserLoginParameter(action); | |||
} |
@@ -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 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.server.user.UserSession; | |||
import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_KEY; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; | |||
public class DeleteTemplateAction implements PermissionsWsAction { | |||
private final DbClient dbClient; | |||
private final UserSession userSession; | |||
public DeleteTemplateAction(DbClient dbClient, UserSession userSession) { | |||
this.dbClient = dbClient; | |||
this.userSession = userSession; | |||
} | |||
@Override | |||
public void define(WebService.NewController context) { | |||
WebService.NewAction action = context.createAction("delete_template") | |||
.setDescription("Delete a permission template.<br />" + | |||
"It requires administration permissions to access.") | |||
.setSince("5.2") | |||
.setPost(true) | |||
.setHandler(this); | |||
createTemplateKeyParameter(action); | |||
} | |||
@Override | |||
public void handle(Request wsRequest, Response wsResponse) throws Exception { | |||
checkGlobalAdminUser(userSession); | |||
String key = wsRequest.mandatoryParam(PARAM_TEMPLATE_KEY); | |||
DbSession dbSession = dbClient.openSession(false); | |||
try { | |||
dbClient.permissionTemplateDao().deleteByKey(dbSession, key); | |||
dbSession.commit(); | |||
wsResponse.noContent(); | |||
} finally { | |||
dbClient.closeSession(dbSession); | |||
} | |||
} | |||
} |
@@ -98,7 +98,7 @@ class Parameters { | |||
.setExampleValue("g.hopper"); | |||
} | |||
static void createTemplateKeyParameter(NewAction action) { | |||
static void createTemplateKeyParameterToAddRemoveUserOrGroup(NewAction action) { | |||
action.createParam(PARAM_LONG_TEMPLATE_KEY) | |||
.setRequired(true) | |||
.setDescription("Template key") | |||
@@ -116,4 +116,11 @@ class Parameters { | |||
.setDescription("Description") | |||
.setExampleValue("Permissions for all projects related to the financial service"); | |||
} | |||
static void createTemplateKeyParameter(NewAction action) { | |||
action.createParam(PARAM_TEMPLATE_KEY) | |||
.setRequired(true) | |||
.setDescription("Key") | |||
.setExampleValue("af8cb8cc-1e78-4c4e-8c00-ee8e814009a5"); | |||
} | |||
} |
@@ -43,6 +43,7 @@ public class PermissionsWsModule extends Module { | |||
AddGroupToTemplateAction.class, | |||
RemoveGroupFromTemplateAction.class, | |||
CreateTemplateAction.class, | |||
UpdateTemplateAction.class); | |||
UpdateTemplateAction.class, | |||
DeleteTemplateAction.class); | |||
} | |||
} |
@@ -36,7 +36,7 @@ import static org.sonar.server.permission.ws.Parameters.PARAM_LONG_TEMPLATE_KEY; | |||
import static org.sonar.server.permission.ws.Parameters.createGroupIdParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createGroupNameParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createProjectPermissionParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameterToAddRemoveUserOrGroup; | |||
public class RemoveGroupFromTemplateAction implements PermissionsWsAction { | |||
private final DbClient dbClient; | |||
@@ -60,7 +60,7 @@ public class RemoveGroupFromTemplateAction implements PermissionsWsAction { | |||
"It requires administration permissions to access.") | |||
.setHandler(this); | |||
createTemplateKeyParameter(action); | |||
createTemplateKeyParameterToAddRemoveUserOrGroup(action); | |||
createProjectPermissionParameter(action); | |||
createGroupIdParameter(action); | |||
createGroupNameParameter(action); |
@@ -35,7 +35,7 @@ import static org.sonar.server.permission.ws.Parameters.PARAM_PERMISSION; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_LONG_TEMPLATE_KEY; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_USER_LOGIN; | |||
import static org.sonar.server.permission.ws.Parameters.createProjectPermissionParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameterToAddRemoveUserOrGroup; | |||
import static org.sonar.server.permission.ws.Parameters.createUserLoginParameter; | |||
public class RemoveUserFromTemplateAction implements PermissionsWsAction { | |||
@@ -59,7 +59,7 @@ public class RemoveUserFromTemplateAction implements PermissionsWsAction { | |||
"It requires administration permissions to access.") | |||
.setHandler(this); | |||
createTemplateKeyParameter(action); | |||
createTemplateKeyParameterToAddRemoveUserOrGroup(action); | |||
createProjectPermissionParameter(action); | |||
createUserLoginParameter(action); | |||
} |
@@ -44,6 +44,7 @@ import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_KEY; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_NAME; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_PATTERN; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateDescriptionParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateKeyParameter; | |||
import static org.sonar.server.permission.ws.Parameters.createTemplateProjectKeyPatternParameter; | |||
import static org.sonar.server.permission.ws.PermissionTemplateDtoToPermissionTemplateResponse.toPermissionTemplateResponse; | |||
import static org.sonar.server.ws.WsUtils.checkRequest; | |||
@@ -72,10 +73,7 @@ public class UpdateTemplateAction implements PermissionsWsAction { | |||
.setPost(true) | |||
.setHandler(this); | |||
action.createParam(PARAM_TEMPLATE_KEY) | |||
.setRequired(true) | |||
.setDescription("Key") | |||
.setExampleValue("af8cb8cc-1e78-4c4e-8c00-ee8e814009a5"); | |||
createTemplateKeyParameter(action); | |||
action.createParam(PARAM_TEMPLATE_NAME) | |||
.setDescription("Name") |
@@ -0,0 +1,129 @@ | |||
/* | |||
* 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 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.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.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.UnauthorizedException; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.ws.TestRequest; | |||
import org.sonar.server.ws.TestResponse; | |||
import org.sonar.server.ws.WsActionTester; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.db.permission.PermissionTemplateTesting.newPermissionTemplateDto; | |||
import static org.sonar.server.permission.ws.Parameters.PARAM_TEMPLATE_KEY; | |||
public class DeleteTemplateActionTest { | |||
static final String TEMPLATE_KEY = "permission-template-key"; | |||
@Rule | |||
public DbTester db = DbTester.create(System2.INSTANCE); | |||
@Rule | |||
public UserSessionRule userSession = UserSessionRule.standalone(); | |||
@Rule | |||
public ExpectedException expectedException = ExpectedException.none(); | |||
WsActionTester ws; | |||
DbClient dbClient; | |||
DbSession dbSession; | |||
PermissionTemplateDto permissionTemplate; | |||
@Before | |||
public void setUp() { | |||
userSession.login().setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); | |||
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(); | |||
} | |||
@Test | |||
public void delete_template_in_db() { | |||
TestResponse result = newRequest(TEMPLATE_KEY); | |||
assertThat(result.getInput()).isEmpty(); | |||
assertThat(dbClient.permissionTemplateDao().selectByKey(dbSession, TEMPLATE_KEY)).isNull(); | |||
} | |||
@Test | |||
public void fail_if_not_logged_in() { | |||
expectedException.expect(UnauthorizedException.class); | |||
userSession.anonymous(); | |||
newRequest(TEMPLATE_KEY); | |||
} | |||
@Test | |||
public void fail_if_not_admin() { | |||
expectedException.expect(ForbiddenException.class); | |||
userSession.login().setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN); | |||
newRequest(TEMPLATE_KEY); | |||
} | |||
@Test | |||
public void fail_if_key_is_not_provided() { | |||
expectedException.expect(IllegalArgumentException.class); | |||
newRequest(null); | |||
} | |||
private PermissionTemplateDto insertTemplate(PermissionTemplateDto template) { | |||
return dbClient.permissionTemplateDao().insert(dbSession, template); | |||
} | |||
private void commit() { | |||
dbSession.commit(); | |||
} | |||
private TestResponse newRequest(@Nullable String key) { | |||
TestRequest request = ws.newRequest(); | |||
if (key != null) { | |||
request.setParam(PARAM_TEMPLATE_KEY, key); | |||
} | |||
TestResponse result = executeRequest(request); | |||
commit(); | |||
return result; | |||
} | |||
private static TestResponse executeRequest(TestRequest request) { | |||
return request.execute(); | |||
} | |||
} |
@@ -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(20); | |||
assertThat(container.size()).isEqualTo(21); | |||
} | |||
} |
@@ -186,6 +186,10 @@ public class PermissionTemplateDao implements Dao { | |||
return permissionTemplate; | |||
} | |||
public void deleteByKey(DbSession dbSession, String key) { | |||
mapper(dbSession).deleteByKey(key); | |||
} | |||
public void deletePermissionTemplate(Long templateId) { | |||
SqlSession session = myBatis.openSession(false); | |||
try { |
@@ -64,4 +64,6 @@ public interface PermissionTemplateMapper { | |||
int countUsers(Map<String, Object> params); | |||
int countGroups(Map<String, Object> parameters); | |||
void deleteByKey(String key); | |||
} |
@@ -19,6 +19,11 @@ | |||
WHERE id = #{templateId} | |||
</delete> | |||
<delete id="deleteByKey" parameterType="string"> | |||
DELETE FROM permission_templates | |||
WHERE kee = #{key} | |||
</delete> | |||
<delete id="deleteUsersPermissions" parameterType="long"> | |||
DELETE FROM perm_templates_users | |||
WHERE template_id = #{templateId} |
@@ -46,32 +46,34 @@ public class PermissionTemplateDaoTest { | |||
System2 system = mock(System2.class); | |||
@Rule | |||
public DbTester dbTester = DbTester.create(system); | |||
public DbTester db = DbTester.create(system); | |||
@Rule | |||
public ExpectedException expectedException = ExpectedException.none(); | |||
PermissionTemplateDao underTest = dbTester.getDbClient().permissionTemplateDao(); | |||
DbSession session = db.getSession(); | |||
PermissionTemplateDao underTest = new PermissionTemplateDao(db.myBatis(), system); | |||
@Test | |||
public void should_create_permission_template() throws ParseException { | |||
dbTester.prepareDbUnit(getClass(), "createPermissionTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "createPermissionTemplate.xml"); | |||
Date now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2013-01-02 01:04:05"); | |||
when(system.now()).thenReturn(now.getTime()); | |||
PermissionTemplateDto permissionTemplate = underTest.insert(dbTester.getSession(), newPermissionTemplateDto() | |||
PermissionTemplateDto permissionTemplate = underTest.insert(db.getSession(), newPermissionTemplateDto() | |||
.setName("my template") | |||
.setDescription("my description") | |||
.setKeyPattern("myregexp")); | |||
assertThat(permissionTemplate).isNotNull(); | |||
assertThat(permissionTemplate.getId()).isEqualTo(1L); | |||
dbTester.assertDbUnitTable(getClass(), "createPermissionTemplate-result.xml", "permission_templates", "id", "name", "description"); | |||
db.assertDbUnitTable(getClass(), "createPermissionTemplate-result.xml", "permission_templates", "id", "name", "description"); | |||
} | |||
@Test | |||
public void should_skip_key_normalization_on_default_template() { | |||
dbTester.truncateTables(); | |||
db.truncateTables(); | |||
PermissionTemplateMapper mapper = mock(PermissionTemplateMapper.class); | |||
@@ -92,7 +94,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_select_permission_template() { | |||
dbTester.prepareDbUnit(getClass(), "selectPermissionTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "selectPermissionTemplate.xml"); | |||
PermissionTemplateDto permissionTemplate = underTest.selectPermissionTemplate("my_template_20130102_030405"); | |||
@@ -113,7 +115,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_select_empty_permission_template() { | |||
dbTester.prepareDbUnit(getClass(), "selectEmptyPermissionTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "selectEmptyPermissionTemplate.xml"); | |||
PermissionTemplateDto permissionTemplate = underTest.selectPermissionTemplate("my_template_20130102_030405"); | |||
@@ -126,7 +128,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_select_permission_template_by_key() { | |||
dbTester.prepareDbUnit(getClass(), "selectPermissionTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "selectPermissionTemplate.xml"); | |||
PermissionTemplateDto permissionTemplate = underTest.selectByKey("my_template_20130102_030405"); | |||
@@ -139,7 +141,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_select_all_permission_templates() { | |||
dbTester.prepareDbUnit(getClass(), "selectAllPermissionTemplates.xml"); | |||
db.prepareDbUnit(getClass(), "selectAllPermissionTemplates.xml"); | |||
List<PermissionTemplateDto> permissionTemplates = underTest.selectAllPermissionTemplates(); | |||
@@ -152,25 +154,36 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_update_permission_template() { | |||
dbTester.prepareDbUnit(getClass(), "updatePermissionTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "updatePermissionTemplate.xml"); | |||
underTest.update(1L, "new_name", "new_description", "new_regexp"); | |||
dbTester.assertDbUnitTable(getClass(), "updatePermissionTemplate-result.xml", "permission_templates", "id", "name", "kee", "description"); | |||
db.assertDbUnitTable(getClass(), "updatePermissionTemplate-result.xml", "permission_templates", "id", "name", "kee", "description"); | |||
} | |||
@Test | |||
public void should_delete_permission_template() { | |||
dbTester.prepareDbUnit(getClass(), "deletePermissionTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "deletePermissionTemplate.xml"); | |||
underTest.deletePermissionTemplate(1L); | |||
checkTemplateTables("deletePermissionTemplate-result.xml"); | |||
} | |||
@Test | |||
public void delete_by_key() { | |||
String templateKey = "permission-template-key"; | |||
underTest.insert(session, newPermissionTemplateDto().setKee(templateKey)); | |||
assertThat(underTest.selectByKey(session, templateKey)).isNotNull(); | |||
underTest.deleteByKey(session, templateKey); | |||
assertThat(underTest.selectByKey(session, templateKey)).isNull(); | |||
} | |||
@Test | |||
public void should_add_user_permission_to_template() { | |||
dbTester.prepareDbUnit(getClass(), "addUserPermissionToTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "addUserPermissionToTemplate.xml"); | |||
underTest.insertUserPermission(1L, 1L, "new_permission"); | |||
@@ -179,7 +192,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_remove_user_permission_from_template() { | |||
dbTester.prepareDbUnit(getClass(), "removeUserPermissionFromTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "removeUserPermissionFromTemplate.xml"); | |||
underTest.deleteUserPermission(1L, 2L, "permission_to_remove"); | |||
@@ -188,7 +201,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_add_group_permission_to_template() { | |||
dbTester.prepareDbUnit(getClass(), "addGroupPermissionToTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "addGroupPermissionToTemplate.xml"); | |||
underTest.insertGroupPermission(1L, 1L, "new_permission"); | |||
@@ -197,7 +210,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_remove_group_permission_from_template() { | |||
dbTester.prepareDbUnit(getClass(), "removeGroupPermissionFromTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "removeGroupPermissionFromTemplate.xml"); | |||
underTest.deleteGroupPermission(1L, 2L, "permission_to_remove"); | |||
@@ -206,17 +219,17 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void remove_by_group() { | |||
dbTester.prepareDbUnit(getClass(), "remove_by_group.xml"); | |||
db.prepareDbUnit(getClass(), "remove_by_group.xml"); | |||
underTest.deleteByGroup(dbTester.getSession(), 2L); | |||
dbTester.getSession().commit(); | |||
underTest.deleteByGroup(db.getSession(), 2L); | |||
db.getSession().commit(); | |||
dbTester.assertDbUnitTable(getClass(), "remove_by_group-result.xml", "permission_templates", "id", "name", "kee", "description"); | |||
db.assertDbUnitTable(getClass(), "remove_by_group-result.xml", "permission_templates", "id", "name", "kee", "description"); | |||
} | |||
@Test | |||
public void should_add_group_permission_with_null_name() { | |||
dbTester.prepareDbUnit(getClass(), "addNullGroupPermissionToTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "addNullGroupPermissionToTemplate.xml"); | |||
underTest.insertGroupPermission(1L, null, "new_permission"); | |||
@@ -225,7 +238,7 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_remove_group_permission_with_null_name() { | |||
dbTester.prepareDbUnit(getClass(), "removeNullGroupPermissionFromTemplate.xml"); | |||
db.prepareDbUnit(getClass(), "removeNullGroupPermissionFromTemplate.xml"); | |||
underTest.deleteGroupPermission(1L, null, "permission_to_remove"); | |||
@@ -234,33 +247,33 @@ public class PermissionTemplateDaoTest { | |||
@Test | |||
public void should_retrieve_permission_template() { | |||
dbTester.truncateTables(); | |||
db.truncateTables(); | |||
PermissionTemplateDto permissionTemplateDto = new PermissionTemplateDto().setName("Test template").setKee("test_template"); | |||
PermissionTemplateDto templateWithPermissions = new PermissionTemplateDto().setKee("test_template"); | |||
underTest = mock(PermissionTemplateDao.class); | |||
when(underTest.selectByKey(dbTester.getSession(), "test_template")).thenReturn(permissionTemplateDto); | |||
when(underTest.selectPermissionTemplate(dbTester.getSession(), "test_template")).thenReturn(templateWithPermissions); | |||
when(underTest.selectPermissionTemplateWithPermissions(dbTester.getSession(), "test_template")).thenCallRealMethod(); | |||
when(underTest.selectByKey(db.getSession(), "test_template")).thenReturn(permissionTemplateDto); | |||
when(underTest.selectPermissionTemplate(db.getSession(), "test_template")).thenReturn(templateWithPermissions); | |||
when(underTest.selectPermissionTemplateWithPermissions(db.getSession(), "test_template")).thenCallRealMethod(); | |||
PermissionTemplateDto permissionTemplate = underTest.selectPermissionTemplateWithPermissions(dbTester.getSession(), "test_template"); | |||
PermissionTemplateDto permissionTemplate = underTest.selectPermissionTemplateWithPermissions(db.getSession(), "test_template"); | |||
assertThat(permissionTemplate).isSameAs(templateWithPermissions); | |||
} | |||
@Test | |||
public void should_fail_on_unmatched_template() { | |||
dbTester.truncateTables(); | |||
db.truncateTables(); | |||
expectedException.expect(IllegalArgumentException.class); | |||
underTest.selectPermissionTemplateWithPermissions(dbTester.getSession(), "unmatched"); | |||
underTest.selectPermissionTemplateWithPermissions(db.getSession(), "unmatched"); | |||
} | |||
private void checkTemplateTables(String fileName) { | |||
dbTester.assertDbUnitTable(getClass(), fileName, "permission_templates", "id", "name", "description"); | |||
dbTester.assertDbUnitTable(getClass(), fileName, "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); | |||
dbTester.assertDbUnitTable(getClass(), fileName, "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); | |||
db.assertDbUnitTable(getClass(), fileName, "permission_templates", "id", "name", "description"); | |||
db.assertDbUnitTable(getClass(), fileName, "perm_templates_users", "id", "template_id", "user_id", "permission_reference"); | |||
db.assertDbUnitTable(getClass(), fileName, "perm_templates_groups", "id", "template_id", "group_id", "permission_reference"); | |||
} | |||
} |