Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 700c7ab9 authored by giovanni frison's avatar giovanni frison
Browse files

SIMPL-10198 Bugfix

Changelog: fixed
parent f62a4c14
No related branches found
No related tags found
1 merge request!200SIMPL-10198 Bugfix
Pipeline #280829 passed
package eu.europa.ec.simpl.usersroles.exceptions;
import eu.europa.ec.simpl.common.exceptions.StatusException;
import org.springframework.http.HttpStatus;
public class KeycloakRoleException extends StatusException {
public KeycloakRoleException(String e) {
super(HttpStatus.INTERNAL_SERVER_ERROR, e);
}
}
......@@ -4,7 +4,7 @@ import eu.europa.ec.simpl.common.filters.RoleFilter;
import eu.europa.ec.simpl.common.model.dto.usersroles.KeycloakRoleDTO;
import eu.europa.ec.simpl.common.model.dto.usersroles.RoleDTO;
import eu.europa.ec.simpl.usersroles.entities.IdentityAttributeRoles;
import eu.europa.ec.simpl.usersroles.exceptions.KeycloakRoleException;
import eu.europa.ec.simpl.usersroles.exceptions.KeycloakException;
import eu.europa.ec.simpl.usersroles.exceptions.RoleDuplicationException;
import eu.europa.ec.simpl.usersroles.exceptions.RoleNotFoundException;
import eu.europa.ec.simpl.usersroles.exceptions.RoleUpdateException;
......@@ -161,7 +161,7 @@ public class RoleServiceImpl implements RoleService {
keycloakService.importRole(roleDTO);
keycloakRole = keycloakService.getRole(roleDTO.name());
} catch (ClientErrorException e) {
throw new KeycloakRoleException(e.getMessage());
throw new KeycloakException(e.getResponse());
}
log.info("role {} stored successfully", keycloakRole.getName());
return roleMapper.toDto(keycloakRole, Collections.emptyList());
......@@ -182,7 +182,7 @@ public class RoleServiceImpl implements RoleService {
try {
keycloakService.updateRole(roleDTO);
} catch (ClientErrorException e) {
throw new KeycloakRoleException(e.getMessage());
throw new KeycloakException(e.getResponse());
}
var updatedRole = getRoleRepresentation(roleDTO.getId());
......@@ -200,7 +200,7 @@ public class RoleServiceImpl implements RoleService {
try {
keycloakService.deleteRole(roleName);
} catch (ClientErrorException e) {
throw new KeycloakRoleException(e.getMessage());
throw new KeycloakException(e.getResponse());
}
}
......
package eu.europa.ec.simpl.usersroles.services.impl;
import static eu.europa.ec.simpl.common.test.TestUtil.*;
import static eu.europa.ec.simpl.common.test.TestUtil.a;
import static eu.europa.ec.simpl.common.test.TestUtil.aListOf;
import static eu.europa.ec.simpl.common.test.TestUtil.anEmptyList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.then;
import static org.mockito.Mockito.*;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import eu.europa.ec.simpl.common.filters.RoleFilter;
import eu.europa.ec.simpl.common.model.dto.usersroles.KeycloakRoleDTO;
import eu.europa.ec.simpl.common.model.dto.usersroles.RoleDTO;
import eu.europa.ec.simpl.usersroles.entities.IdentityAttributeRoles;
import eu.europa.ec.simpl.usersroles.exceptions.*;
import eu.europa.ec.simpl.usersroles.exceptions.KeycloakException;
import eu.europa.ec.simpl.usersroles.exceptions.RoleDuplicationException;
import eu.europa.ec.simpl.usersroles.exceptions.RoleNotFoundException;
import eu.europa.ec.simpl.usersroles.exceptions.RoleUpdateException;
import eu.europa.ec.simpl.usersroles.mappers.RoleMapperImpl;
import eu.europa.ec.simpl.usersroles.repositories.IdentityAttributeRolesRepository;
import eu.europa.ec.simpl.usersroles.services.KeycloakUserService;
import eu.europa.ec.simpl.usersroles.services.RoleService;
import jakarta.ws.rs.ClientErrorException;
import jakarta.ws.rs.NotFoundException;
import java.util.*;
import jakarta.ws.rs.core.Response;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.instancio.Instancio;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.keycloak.representations.idm.RoleRepresentation;
import org.mockito.Answers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@Import({RoleServiceImpl.class, RoleMapperImpl.class})
class RoleServiceImplTest {
@MockBean
@MockitoBean
private IdentityAttributeRolesRepository identityAttributeRolesRepository;
@MockBean(answer = Answers.RETURNS_DEEP_STUBS)
@MockitoBean(answers = Answers.RETURNS_DEEP_STUBS)
private KeycloakUserService keycloakService;
@Autowired
......@@ -96,8 +113,8 @@ class RoleServiceImplTest {
void testCreateRole_KeycloakError() {
var input = a(KeycloakRoleDTO.class);
given(keycloakService.isRolePresent(anyString())).willReturn(false);
doThrow(ClientErrorException.class).when(keycloakService).importRole(any(KeycloakRoleDTO.class));
assertThrows(KeycloakRoleException.class, () -> roleService.create(input));
doThrow(generateClientErrorException()).when(keycloakService).importRole(any(KeycloakRoleDTO.class));
assertThrows(KeycloakException.class, () -> roleService.create(input));
}
@Test
......@@ -162,9 +179,9 @@ class RoleServiceImplTest {
when(keycloakService.getRole(any(UUID.class))).thenReturn(found);
when(identityAttributeRolesRepository.findByRoleNameAndEnabledTrue(anyString()))
.thenReturn(idas);
doThrow(ClientErrorException.class).when(keycloakService).updateRole(any(RoleDTO.class));
doThrow(generateClientErrorException()).when(keycloakService).updateRole(any(RoleDTO.class));
assertThrows(KeycloakRoleException.class, () -> roleService.update(input));
assertThrows(KeycloakException.class, () -> roleService.update(input));
}
@Test
......@@ -197,9 +214,16 @@ class RoleServiceImplTest {
var roleRepr = a(RoleRepresentation.class);
roleRepr.setId(UUID.randomUUID().toString());
when(keycloakService.getRole(any(UUID.class))).thenReturn(roleRepr);
doThrow(ClientErrorException.class).when(keycloakService).deleteRole(anyString());
doThrow(generateClientErrorException()).when(keycloakService).deleteRole(anyString());
assertThrows(KeycloakException.class, () -> roleService.delete(UUID.randomUUID()));
}
assertThrows(KeycloakRoleException.class, () -> roleService.delete(UUID.randomUUID()));
private ClientErrorException generateClientErrorException() {
var clientErrorException = mock(ClientErrorException.class);
var response = mock(Response.class);
when(clientErrorException.getResponse()).thenReturn(response);
when(response.getStatus()).thenReturn(500);
return clientErrorException;
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment