summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-08-26 12:08:16 +0200
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-08-27 09:52:44 +0200
commit771647e32377530d4a659bf286fe509ab93c02be (patch)
tree0a23a06803af231e055c1ae23549519033a47fa7
parentc34b9f3648628a836c437b29e2cf20f84ddd06b4 (diff)
downloadsonarqube-771647e32377530d4a659bf286fe509ab93c02be.tar.gz
sonarqube-771647e32377530d4a659bf286fe509ab93c02be.zip
SONAR-6498 WS permissions/delete_template delete a permission template
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.java70
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java9
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWsModule.java3
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveUserFromTemplateAction.java4
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/permission/ws/UpdateTemplateAction.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/permission/ws/DeleteTemplateActionTest.java129
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsModuleTest.java2
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java4
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateMapper.java2
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml5
-rw-r--r--sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java79
14 files changed, 277 insertions, 48 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java
index 9c4bbf1b31a..77882af0b3d 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java
@@ -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);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java
index 22443cfb09a..4e0922313b0 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserToTemplateAction.java
@@ -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);
}
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
new file mode 100644
index 00000000000..0eaeb105d73
--- /dev/null
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/DeleteTemplateAction.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 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);
+ }
+ }
+}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java
index 7d11fac90c5..d9a8fac4cfe 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/Parameters.java
@@ -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");
+ }
}
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 2ff2cfcd9d7..6998cf23015 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
@@ -43,6 +43,7 @@ public class PermissionsWsModule extends Module {
AddGroupToTemplateAction.class,
RemoveGroupFromTemplateAction.class,
CreateTemplateAction.class,
- UpdateTemplateAction.class);
+ UpdateTemplateAction.class,
+ DeleteTemplateAction.class);
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateAction.java
index 3a625cb0b53..ebd3820f4eb 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateAction.java
@@ -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);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveUserFromTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveUserFromTemplateAction.java
index 4d0474b6af3..3ed9eeebf40 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveUserFromTemplateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveUserFromTemplateAction.java
@@ -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);
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UpdateTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UpdateTemplateAction.java
index bab5ce1c3ad..77544635e70 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UpdateTemplateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/UpdateTemplateAction.java
@@ -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")
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
new file mode 100644
index 00000000000..e30c3f403ee
--- /dev/null
+++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/DeleteTemplateActionTest.java
@@ -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();
+ }
+
+}
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 59edfb47928..69eadbe065f 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(20);
+ assertThat(container.size()).isEqualTo(21);
}
}
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
index fda57b228c8..a7c2ff80497 100644
--- a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
@@ -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 {
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateMapper.java b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateMapper.java
index 49ac13fdb12..536a79afbb5 100644
--- a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateMapper.java
+++ b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateMapper.java
@@ -64,4 +64,6 @@ public interface PermissionTemplateMapper {
int countUsers(Map<String, Object> params);
int countGroups(Map<String, Object> parameters);
+
+ void deleteByKey(String key);
}
diff --git a/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml b/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml
index 4ab1ae42006..9eb1a4850c6 100644
--- a/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml
+++ b/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml
@@ -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}
diff --git a/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java b/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java
index b403a838c27..686aecd5a84 100644
--- a/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/permission/PermissionTemplateDaoTest.java
@@ -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,16 +154,16 @@ 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);
@@ -169,8 +171,19 @@ public class PermissionTemplateDaoTest {
}
@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");
}
}