Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

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

Merge branch 'release' into 'main'

Release 1.1.0

See merge request !106
parents 213ee0be 594d74bb
No related branches found
No related tags found
2 merge requests!107Update version to 1.2.0,!106Release 1.1.0
Pipeline #270551 failed
Showing
with 1060 additions and 2326 deletions
{
"openapi": "3.0.1",
"info": {
"title": "OpenAPI definition",
"version": "v0"
},
"servers": [
{
"url": "http://localhost:8082",
"description": "Generated server url"
}
],
"paths": {
"/identity-attribute/{id}": {
"get": {
"tags": [
"identity-attribute-controller"
],
"summary": "Find Identity Attribute by ID",
"description": "Retrieves an identity attribute by its unique identifier.",
"operationId": "findById",
"parameters": [
{
"name": "id",
"in": "path",
"description": "UUID of the identity attribute to be retrieved",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "Successfully retrieved identity attribute",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IdentityAttributeDTO"
}
}
}
},
"404": {
"description": "Identity attribute not found"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
}
}
},
"put": {
"tags": [
"identity-attribute-controller"
],
"summary": "Update Identity Attribute",
"description": "Updates an existing identity attribute by its unique identifier.",
"operationId": "updateAttributes",
"parameters": [
{
"name": "id",
"in": "path",
"description": "UUID of the identity attribute to be updated",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"requestBody": {
"description": "Updated identity attribute data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IdentityAttributeDTO"
}
}
},
"required": true
},
"responses": {
"204": {
"description": "Successfully updated identity attribute"
},
"400": {
"description": "Invalid input data"
},
"404": {
"description": "Identity attribute not found"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
}
}
},
"delete": {
"tags": [
"identity-attribute-controller"
],
"summary": "Delete Identity Attribute",
"description": "Deletes an identity attribute by its unique identifier.",
"operationId": "delete",
"parameters": [
{
"name": "id",
"in": "path",
"description": "UUID of the identity attribute to be deleted",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"204": {
"description": "Successfully deleted identity attribute"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
},
"404": {
"description": "Identity attribute not found"
}
}
}
},
"/identity-attribute/assignable/{value}": {
"put": {
"tags": [
"identity-attribute-controller"
],
"summary": "Update Assignable Parameter",
"description": "Updates the assignable parameter for a list of identity attributes.",
"operationId": "updateAssignableParameter",
"parameters": [
{
"name": "value",
"in": "path",
"description": "Boolean value to assign to the 'assignable' parameter",
"required": true,
"schema": {
"type": "boolean"
}
}
],
"requestBody": {
"description": "List of UUIDs representing identity attributes",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successfully updated assignable parameter"
},
"400": {
"description": "Invalid input data"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
}
}
}
},
"/identity-attribute/assign-participant/{userId}": {
"put": {
"tags": [
"identity-attribute-controller"
],
"summary": "Assign Identity Attributes",
"description": "Assigns a list of identity attributes to a user.",
"operationId": "assign",
"parameters": [
{
"name": "userId",
"in": "path",
"description": "UUID of the user to whom the identity attributes will be assigned",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"requestBody": {
"description": "List of UUIDs representing identity attributes to be assigned",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"required": true
},
"responses": {
"204": {
"description": "Successfully assigned identity attributes"
},
"400": {
"description": "Invalid input data"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
}
}
}
},
"/identity-attribute/add-participant-type/{participantType}": {
"put": {
"tags": [
"identity-attribute-controller"
],
"summary": "Add Participant Type",
"description": "Adds a participant type to a list of identity attributes.",
"operationId": "addParticipantType",
"parameters": [
{
"name": "participantType",
"in": "path",
"description": "Type of participant to be added",
"required": true,
"schema": {
"type": "string",
"enum": [
"CONSUMER",
"APPLICATION_PROVIDER",
"DATA_PROVIDER",
"INFRASTRUCTURE_PROVIDER",
"GOVERNANCE_AUTHORITY"
]
}
}
],
"requestBody": {
"description": "Array of UUIDs representing identity attributes",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successfully added participant type"
},
"400": {
"description": "Invalid input data"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
}
}
}
},
"/identity-attribute": {
"post": {
"tags": [
"identity-attribute-controller"
],
"summary": "Create Identity Attribute",
"description": "Creates a new identity attribute.",
"operationId": "create",
"requestBody": {
"description": "Identity attribute to be created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IdentityAttributeDTO"
}
}
},
"required": true
},
"responses": {
"409": {
"description": "Conflict: Identity attribute with the same code or name already exists"
},
"201": {
"description": "Successfully created identity attribute",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IdentityAttributeDTO"
}
}
}
},
"400": {
"description": "Invalid input data"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
}
}
}
},
"/mtls/identity-attribute": {
"get": {
"tags": [
"mtls-controller"
],
"summary": "Get Identity Attributes with Ownership",
"description": "Retrieves a list of identity attributes with ownership information for a given participant ID.",
"operationId": "getIdentityAttributesWithOwnership",
"parameters": [
{
"name": "Participant-Id",
"in": "header",
"description": "UUID of the participant to retrieve identity attributes for",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "Successfully retrieved identity attributes with ownership",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IdentityAttributeWithOwnershipDTO"
}
}
}
}
},
"400": {
"description": "Invalid participant ID format"
}
}
}
},
"/mtls/identity-attribute/{certificateId}": {
"get": {
"tags": [
"mtls-controller"
],
"summary": "Get Identity Attributes by Certificate ID",
"description": "Retrieves a list of identity attributes associated with a given certificate ID.",
"operationId": "getIdentityAttributesByCertificateIdInUri",
"parameters": [
{
"name": "certificateId",
"in": "path",
"description": "Certificate ID used to fetch associated identity attributes",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successfully retrieved identity attributes",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IdentityAttributeDTO"
}
}
}
}
},
"404": {
"description": "Certificate ID not found"
}
}
}
},
"/identity-attribute/search": {
"get": {
"tags": [
"identity-attribute-controller"
],
"summary": "Search Identity Attributes",
"description": "Searches for identity attributes based on provided filters and pagination options.",
"operationId": "search",
"parameters": [
{
"name": "code",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "name",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "enabled",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
}
},
{
"name": "participantTypeIn",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "participantTypeNotIn",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "participantIdIn",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "participantIdNotIn",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "updateTimestampFrom",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "updateTimestampTo",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "page",
"in": "query",
"description": "Zero-based page index (0..N)",
"required": false,
"schema": {
"minimum": 0,
"type": "integer",
"default": 0
}
},
{
"name": "size",
"in": "query",
"description": "The size of the page to be returned",
"required": false,
"schema": {
"minimum": 1,
"type": "integer",
"default": 10
}
},
{
"name": "sort",
"in": "query",
"description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
"required": false,
"schema": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"id,ASC"
]
}
}
],
"responses": {
"200": {
"description": "Successfully retrieved search results",
"content": {
"*/*": {
"schema": {
"$ref": "#/components/schemas/PageResponseIdentityAttributeDTO"
}
}
}
},
"400": {
"description": "Invalid input data"
}
}
}
},
"/identity-attribute/unassign-participant/{userId}": {
"delete": {
"tags": [
"identity-attribute-controller"
],
"summary": "Unassign Identity Attributes",
"description": "Unassigns a list of identity attributes from a user.",
"operationId": "unassign",
"parameters": [
{
"name": "userId",
"in": "path",
"description": "UUID of the user from whom the identity attributes will be unassigned",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"requestBody": {
"description": "List of UUIDs representing identity attributes to be unassigned",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successfully unassigned identity attributes"
},
"400": {
"description": "Invalid input data"
},
"401": {
"description": "Access denied"
},
"403": {
"description": "Forbidden: User does not have the required role"
},
"204": {
"description": "No Content"
}
}
}
}
},
"components": {
"schemas": {
"ErrorDTO": {
"type": "object",
"properties": {
"error": {
"type": "string"
},
"elementName": {
"type": "string"
}
}
},
"IdentityAttributeDTO": {
"required": [
"assignableToRoles",
"code",
"enabled",
"name"
],
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"assignableToRoles": {
"type": "boolean"
},
"enabled": {
"type": "boolean"
},
"creationTimestamp": {
"type": "string",
"format": "date-time"
},
"updateTimestamp": {
"type": "string",
"format": "date-time"
},
"participantTypes": {
"uniqueItems": true,
"type": "array",
"items": {
"type": "string"
}
},
"used": {
"type": "boolean",
"readOnly": true
}
}
},
"IdentityAttributeWithOwnershipDTO": {
"required": [
"assignableToRoles",
"code",
"enabled",
"name"
],
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"assignableToRoles": {
"type": "boolean"
},
"enabled": {
"type": "boolean"
},
"creationTimestamp": {
"type": "string",
"format": "date-time"
},
"updateTimestamp": {
"type": "string",
"format": "date-time"
},
"participantTypes": {
"uniqueItems": true,
"type": "array",
"items": {
"type": "string"
}
},
"used": {
"type": "boolean",
"readOnly": true
},
"assignedToParticipant": {
"type": "boolean"
}
}
},
"PageMetadata": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"format": "int64"
},
"number": {
"type": "integer",
"format": "int64"
},
"totalElements": {
"type": "integer",
"format": "int64"
},
"totalPages": {
"type": "integer",
"format": "int64"
}
}
},
"PageResponseIdentityAttributeDTO": {
"type": "object",
"properties": {
"content": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IdentityAttributeDTO"
}
},
"page": {
"$ref": "#/components/schemas/PageMetadata"
},
"empty": {
"type": "boolean"
}
}
}
}
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
PROJECT_VERSION_NUMBER="1.0.1"
PROJECT_VERSION_NUMBER="1.1.0"
......@@ -5,12 +5,12 @@
<parent>
<groupId>eu.europa.ec.simpl</groupId>
<artifactId>simpl-parent</artifactId>
<version>1.0.1</version>
<version>1.1.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<artifactId>security-attributes-provider</artifactId>
<version>1.0.1</version>
<version>1.1.0</version>
<name>Security Attributes Provider</name>
<description>Security Attributes Provider Microservice for SIMPL project</description>
......@@ -20,6 +20,10 @@
<groupId>eu.europa.ec.simpl</groupId>
<artifactId>simpl-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>eu.europa.ec.simpl</groupId>
<artifactId>simpl-api-iaa</artifactId>
</dependency>
<dependency>
<groupId>eu.europa.ec.simpl</groupId>
<artifactId>simpl-test-lib</artifactId>
......
package eu.europa.ec.simpl.securityattributesprovider;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeWithOwnershipDTO;
import org.springdoc.core.utils.SpringDocUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
......
......@@ -2,11 +2,10 @@ package eu.europa.ec.simpl.securityattributesprovider.controllers;
import eu.europa.ec.simpl.common.exchanges.securityattributeprovider.IdentityAttributeExchange;
import eu.europa.ec.simpl.common.filters.IdentityAttributeFilter;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.validators.UpdateOperation;
import eu.europa.ec.simpl.common.responses.PageResponse;
import eu.europa.ec.simpl.securityattributesprovider.services.IdentityAttributeService;
import io.swagger.v3.oas.annotations.Hidden;
import java.util.List;
import java.util.UUID;
import lombok.extern.log4j.Log4j2;
......@@ -74,14 +73,12 @@ public class IdentityAttributeController implements IdentityAttributeExchange {
service.assign(participantId, identityAttributes);
}
@Hidden
@Override
@SuppressWarnings("all")
public void assignSnapshot(String participantType, UUID participantId, List<UUID> excludedAttributes) {
service.assignLastSnapshot(participantType, participantId, excludedAttributes);
}
@Hidden
@Override
public void importIdentityAttributes(@RequestBody List<IdentityAttributeDTO> list) {
log.info("Initializing identity attributes from CLI");
......
package eu.europa.ec.simpl.securityattributesprovider.controllers;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.exchanges.IdentityAttributesApi;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeDTO;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.PageResponseIdentityAttributeDTO;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.SearchFilterParameterDTO;
import eu.europa.ec.simpl.securityattributesprovider.mappers.IdentityAttributeMapperV1;
import java.util.List;
import java.util.UUID;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("v1")
public class IdentityAttributeControllerV1 implements IdentityAttributesApi {
private final IdentityAttributeController controller;
private final IdentityAttributeMapperV1 mapper;
public IdentityAttributeControllerV1(IdentityAttributeController controller, IdentityAttributeMapperV1 mapper) {
this.controller = controller;
this.mapper = mapper;
}
@Override
public void addParticipantType(String participantType, List<UUID> UUID) {
controller.addParticipantType(UUID, participantType);
}
@Override
public void assign(UUID participantId, List<UUID> UUID) {
controller.assign(participantId, UUID);
}
@Override
public void assignDeprecated(UUID participantId, List<UUID> UUID) {
assign(participantId, UUID);
}
@Override
public void assignSnapshot(String participantType, UUID participantId, List<UUID> UUID) {
controller.assignSnapshot(participantType, participantId, UUID);
}
@Override
public IdentityAttributeDTO create(IdentityAttributeDTO identityAttributeDTO) {
return mapper.toV1(controller.create(mapper.toV0(identityAttributeDTO)));
}
@Override
public void delete(UUID id) {
controller.delete(id);
}
@Override
public IdentityAttributeDTO findById(UUID id) {
return mapper.toV1(controller.findById(id));
}
@Override
public void importIdentityAttributes(List<IdentityAttributeDTO> identityAttributeDTO) {
controller.importIdentityAttributes(mapper.toV0(identityAttributeDTO));
}
@Override
public PageResponseIdentityAttributeDTO search(
Integer page, Integer size, List<String> sort, SearchFilterParameterDTO filter) {
return mapper.toV1(controller.search(
mapper.toV0(filter), PageRequest.of(page, size, Sort.by(sort.toArray(String[]::new)))));
}
@Override
public void unassign(UUID participantId, List<UUID> UUID) {
controller.unassign(participantId, UUID);
}
@Override
public void unassignDeprecated(UUID participantId, List<UUID> UUID) {
unassign(participantId, UUID);
}
@Override
public void updateAssignableParameter(Boolean value, List<UUID> UUID) {
controller.updateAssignableParameter(UUID, value);
}
@Override
public void updateAttributes(UUID id, IdentityAttributeDTO identityAttributeDTO) {
controller.updateAttributes(id, mapper.toV0(identityAttributeDTO));
}
}
package eu.europa.ec.simpl.securityattributesprovider.controllers;
import eu.europa.ec.simpl.common.constants.SimplHeaders;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.securityattributesprovider.services.IdentityAttributeService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
......
package eu.europa.ec.simpl.securityattributesprovider.controllers;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.exchanges.MtlsApi;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeDTO;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.securityattributesprovider.mappers.IdentityAttributeMapperV1;
import java.util.List;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("v1")
public class MtlsControllerV1 implements MtlsApi {
private final MtlsController controller;
private final IdentityAttributeMapperV1 mapper;
public MtlsControllerV1(MtlsController controller, IdentityAttributeMapperV1 mapper) {
this.controller = controller;
this.mapper = mapper;
}
@Override
public List<IdentityAttributeDTO> getIdentityAttributesByCertificateIdInUri(
String certificateId, String credentialId) {
return mapper.toV1(controller.getIdentityAttributesByCertificateIdInUri(credentialId));
}
@Override
public List<IdentityAttributeWithOwnershipDTO> getIdentityAttributesWithOwnership(String credentialId) {
return mapper.toV1IdentityAttributeWithOwnershipDTO(
controller.getIdentityAttributesWithOwnership(credentialId));
}
}
package eu.europa.ec.simpl.securityattributesprovider.mappers;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.securityattributesprovider.dto.SecurityAttributesMappingDTO;
import eu.europa.ec.simpl.securityattributesprovider.entities.IdentityAttribute;
import eu.europa.ec.simpl.securityattributesprovider.projection.IdentityAttributeWithOwnership;
......
package eu.europa.ec.simpl.securityattributesprovider.mappers;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.PageResponseIdentityAttributeDTO;
import eu.europa.ec.simpl.api.securityattributesprovider.v1.model.SearchFilterParameterDTO;
import eu.europa.ec.simpl.common.filters.IdentityAttributeFilter;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.responses.PageResponse;
import java.util.List;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
@Mapper(unmappedSourcePolicy = ReportingPolicy.ERROR, unmappedTargetPolicy = ReportingPolicy.ERROR)
public interface IdentityAttributeMapperV1 {
IdentityAttributeDTO toV0(
eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeDTO identityAttributeDTO);
eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeDTO toV1(
IdentityAttributeDTO identityAttributeDTO);
IdentityAttributeFilter toV0(SearchFilterParameterDTO filter);
PageResponseIdentityAttributeDTO toV1(PageResponse<IdentityAttributeDTO> search);
List<IdentityAttributeWithOwnershipDTO> toV1IdentityAttributeWithOwnershipDTO(
List<eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeWithOwnershipDTO>
identityAttributesWithOwnership);
@Mapping(target = "id", source = "identityAttribute.id")
@Mapping(target = "code", source = "identityAttribute.code")
@Mapping(target = "name", source = "identityAttribute.name")
@Mapping(target = "description", source = "identityAttribute.description")
@Mapping(target = "assignableToRoles", source = "identityAttribute.assignableToRoles")
@Mapping(target = "enabled", source = "identityAttribute.enabled")
@Mapping(target = "creationTimestamp", source = "identityAttribute.creationTimestamp")
@Mapping(target = "updateTimestamp", source = "identityAttribute.updateTimestamp")
@Mapping(target = "participantTypes", source = "identityAttribute.participantTypes")
@Mapping(target = "used", source = "identityAttribute.used")
eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeWithOwnershipDTO toV1(
eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeWithOwnershipDTO
identityAttributeWithOwnershipDTO);
List<eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeDTO> toV1(
List<IdentityAttributeDTO> identityAttributesByCertificateIdInUri);
List<IdentityAttributeDTO> toV0(
List<eu.europa.ec.simpl.api.securityattributesprovider.v1.model.IdentityAttributeDTO> identityAttributeDTO);
}
package eu.europa.ec.simpl.securityattributesprovider.services;
import eu.europa.ec.simpl.common.filters.IdentityAttributeFilter;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.common.model.validators.CreateOperation;
import eu.europa.ec.simpl.common.model.validators.UpdateOperation;
import jakarta.validation.Valid;
......
......@@ -3,9 +3,9 @@ package eu.europa.ec.simpl.securityattributesprovider.services.impl;
import eu.europa.ec.simpl.common.exchanges.identityprovider.IdentityProviderParticipantExchange;
import eu.europa.ec.simpl.common.filters.IdentityAttributeFilter;
import eu.europa.ec.simpl.common.filters.ParticipantFilter;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.common.model.dto.ParticipantDTO;
import eu.europa.ec.simpl.common.model.dto.identityprovider.ParticipantDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeWithOwnershipDTO;
import eu.europa.ec.simpl.common.model.validators.CreateOperation;
import eu.europa.ec.simpl.common.model.validators.UpdateOperation;
import eu.europa.ec.simpl.securityattributesprovider.entities.IdentityAttribute;
......
package eu.europa.ec.simpl.securityattributesprovider.services.impl;
import eu.europa.ec.simpl.common.exchanges.onboarding.ParticipantTypeExchange;
import eu.europa.ec.simpl.common.model.dto.ParticipantTypeDTO;
import eu.europa.ec.simpl.common.model.dto.onboarding.ParticipantTypeDTO;
import eu.europa.ec.simpl.securityattributesprovider.exceptions.ParticipantTypeDoesNotExistException;
import eu.europa.ec.simpl.securityattributesprovider.services.ParticipantTypeService;
import java.util.HashSet;
......
......@@ -3,7 +3,7 @@ package eu.europa.ec.simpl.securityattributesprovider.services.impl;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.europa.ec.simpl.common.exchanges.onboarding.ParticipantTypeExchange;
import eu.europa.ec.simpl.common.model.dto.ParticipantTypeDTO;
import eu.europa.ec.simpl.common.model.dto.onboarding.ParticipantTypeDTO;
import eu.europa.ec.simpl.securityattributesprovider.configurations.DBSeedingProperties;
import eu.europa.ec.simpl.securityattributesprovider.dto.SecurityAttributesMappingDTO;
import eu.europa.ec.simpl.securityattributesprovider.exceptions.ParticipantTypeDoesNotExistException;
......
package eu.europa.ec.simpl.securityattributesprovider.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import eu.europa.ec.simpl.common.exceptions.RuntimeWrapperException;
import java.util.Optional;
import lombok.extern.log4j.Log4j2;
@Log4j2
public class DtoUtils {
public static String json(Object dto) {
var om = new ObjectMapper();
om.registerModule(new JavaTimeModule());
try {
return om.writeValueAsString(dto);
} catch (JsonProcessingException e) {
throw new RuntimeWrapperException(e);
}
}
public static boolean jsonCompare(Object a, Object b) {
var jsonA = json(a);
var jsonB = json(b);
var typeA = Optional.of(a).map(Object::getClass).map(Class::getName).orElse(null);
var typeB = Optional.of(b).map(Object::getClass).map(Class::getName).orElse(null);
var result = jsonA.equals(jsonB);
log.info("Type A: {} ", typeA);
log.info("Type B: {} ", typeB);
log.info("JSON A: {}", jsonA);
log.info("JSON B: {}", jsonB);
log.info("JSON compare result: {}", result);
return result;
}
}
......@@ -11,7 +11,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.europa.ec.simpl.common.filters.IdentityAttributeFilter;
import eu.europa.ec.simpl.common.model.dto.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.common.test.WithMockSecurityContext;
import eu.europa.ec.simpl.securityattributesprovider.services.IdentityAttributeService;
import java.util.Arrays;
......
package eu.europa.ec.simpl.securityattributesprovider.mappers;
import eu.europa.ec.simpl.common.model.dto.securityattributesprovider.IdentityAttributeDTO;
import eu.europa.ec.simpl.securityattributesprovider.dto.SecurityAttributesMappingDTO;
import eu.europa.ec.simpl.securityattributesprovider.entities.IdentityAttribute;
import eu.europa.ec.simpl.securityattributesprovider.projection.IdentityAttributeWithOwnership;
import org.instancio.Instancio;
import org.junit.jupiter.api.Test;
public class IdentityAttributeMapperTest {
private final IdentityAttributeMapper mapper = new IdentityAttributeMapperImpl();
@Test
void toEntityTest() {
mapper.toEntity(Instancio.create(SecurityAttributesMappingDTO.class));
mapper.toEntity(Instancio.create(IdentityAttributeDTO.class));
}
@Test
void toDtoTest() {
mapper.toDto(Instancio.create(IdentityAttribute.class));
}
@Test
void toLightDtoTest() {
mapper.toLightDto(Instancio.create(IdentityAttribute.class));
}
@Test
void updateEntityTest() {
mapper.updateEntity(Instancio.create(IdentityAttributeDTO.class), Instancio.create(IdentityAttribute.class));
}
@Test
void toDtoWithOwnershipTest() {
mapper.toDtoWithOwnership(Instancio.create(IdentityAttributeWithOwnership.class));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment