fix #494: add delete impact confirmations

This commit is contained in:
devmrko
2026-06-26 14:33:25 +09:00
parent c8326f954d
commit cacf7b2bc4
13 changed files with 383 additions and 25 deletions

View File

@@ -173,6 +173,24 @@ class PermissionServiceTest {
assertThat(disabled[0]).isTrue();
}
@Test
void rejectsPermissionDeleteWithoutImpactConfirmation() {
assertThatThrownBy(() -> permissionService.deletePermission(1000L, false))
.isInstanceOf(AppException.class)
.hasMessageContaining("영향 확인");
}
@Test
void blocksRoleDeleteWhenDependenciesRemain() {
var mapper = new FakePermissionMapper();
mapper.userRoleCount = 1;
PermissionService service = new PermissionService(mapper, protectedObjectService, new AuditService(new NoopAuditMapper()));
assertThatThrownBy(() -> service.deleteRole(10L, true))
.isInstanceOf(AppException.class)
.hasMessageContaining("먼저 해제");
}
private static class NoopAuditMapper implements AuditMapper {
@Override
public void insert(AuditEvent event) {
@@ -211,6 +229,25 @@ class PermissionServiceTest {
return 1;
}
private int userRoleCount;
private int groupRoleCount;
private int permissionCountByRole;
@Override
public int countUserRolesByRoleId(long roleId) {
return userRoleCount;
}
@Override
public int countGroupRolesByRoleId(long roleId) {
return groupRoleCount;
}
@Override
public int countPermissionsByRoleId(long roleId) {
return permissionCountByRole;
}
@Override
public List<PermissionView> findPermissionViews() {
return List.of();