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

Skip to content
Snippets Groups Projects
Commit d455dcb3 authored by Marco Amoia's avatar Marco Amoia
Browse files

Merge branch 'feature/SIMPL-10198' into 'develop'

SIMPL-10198 Bugfix

See merge request !200
parents ad1f98c2 700c7ab9
No related branches found
No related tags found
1 merge request!200SIMPL-10198 Bugfix
Pipeline #282676 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