Browse Source

SONAR-6498 WS permissions/delete_template delete a permission template

tags/5.2-RC1
Teryk Bellahsene 8 years ago
parent
commit
771647e323

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java View File

@@ -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);

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java View File

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

+ 70
- 0
server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java View File

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

+ 8
- 1
server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java View File

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

+ 2
- 1
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWsModule.java View File

@@ -43,6 +43,7 @@ public class PermissionsWsModule extends Module {
AddGroupToTemplateAction.class,
RemoveGroupFromTemplateAction.class,
CreateTemplateAction.class,
UpdateTemplateAction.class);
UpdateTemplateAction.class,
DeleteTemplateAction.class);
}
}

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateAction.java View File

@@ -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);

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveUserFromTemplateAction.java View File

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

+ 2
- 4
server/sonar-server/src/main/java/org/sonar/server/permission/ws/UpdateTemplateAction.java View File

@@ -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")

+ 129
- 0
server/sonar-server/src/test/java/org/sonar/server/permission/ws/DeleteTemplateActionTest.java View File

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

}

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsModuleTest.java View File

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

+ 4
- 0
sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java View File

@@ -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 {

+ 2
- 0
sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateMapper.java View File

@@ -64,4 +64,6 @@ public interface PermissionTemplateMapper {
int countUsers(Map<String, Object> params);

int countGroups(Map<String, Object> parameters);

void deleteByKey(String key);
}

+ 5
- 0
sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml View File

@@ -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
- 33
sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java View File

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

}

Loading…
Cancel
Save