diff --git a/connector-api/pom.xml b/connector-api/pom.xml index 5bc779259..ba4e168fc 100644 --- a/connector-api/pom.xml +++ b/connector-api/pom.xml @@ -23,7 +23,13 @@ it.pagopa.selfcare onboarding-sdk-product - 0.3.2 + 0.3.3 + compile + + + it.pagopa.selfcare + onboarding-sdk-common + 0.3.3 compile diff --git a/connector/rest/docs/openapi/selfcare-user-docs.json b/connector/rest/docs/openapi/selfcare-user-docs.json index d707ea1f4..572c8f4d3 100644 --- a/connector/rest/docs/openapi/selfcare-user-docs.json +++ b/connector/rest/docs/openapi/selfcare-user-docs.json @@ -17,8 +17,12 @@ "name" : "Institution" }, { "name" : "User" + }, { + "name" : "external-pnpg" }, { "name" : "external-v2" + }, { + "name" : "internal-v1" }, { "name" : "support" }, { @@ -29,6 +33,8 @@ "get" : { "tags" : [ "User Permission Controller" ], "summary" : "Get permission for a user in an institution", + "description" : "Determines if the authenticated user possesses a specific permission within the given institution and product context.", + "operationId" : "getPermission", "parameters" : [ { "name" : "institutionId", "in" : "query", @@ -75,13 +81,15 @@ "/events/sc-users" : { "post" : { "tags" : [ "Events" ], - "summary" : "The API resend all the users's given an institutionId and a userId after the given fromDate", + "summary" : "Resend all user events based on institutionId, userId, and fromDate", + "description" : "Resends all events for a specific user within a given institution starting from the specified date and time. This endpoint allows administrators to trigger the reprocessing or notification of user-related events that occurred after the provided `fromDate`.", + "operationId" : "sendUsersEvents", "parameters" : [ { "name" : "fromDate", "in" : "query", "required" : true, "schema" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" } }, { "name" : "institutionId", @@ -115,7 +123,9 @@ "/institutions/{institutionId}" : { "put" : { "tags" : [ "Institution" ], - "summary" : "The API updates the description in all occurrences of userInstitution, given a certain institutionId.", + "summary" : "Update institution's description across all userInstitution records", + "description" : "Modifies the description field in all occurrences of `userInstitution` entities associated with a given institutionId. This ensures that the institution's descriptive information is consistently updated across all related user records.", + "operationId" : "updateInstitutionDescription", "parameters" : [ { "name" : "institutionId", "in" : "path", @@ -152,10 +162,12 @@ } ] } }, - "/institutions/{institutionId}/products/{productId}/createdAt" : { + "/institutions/{institutionId}/products/{productId}/created-at" : { "put" : { "tags" : [ "Institution" ], - "summary" : "The API updates user's onboarded product with createdAt passed in input", + "summary" : "Update user's onboarded product creation date", + "description" : "Updates the `createdAt` timestamp for a user's onboarded product based on the provided institutionId, productId, and list of userIds. This is useful for tracking when a user was onboarded to a specific product within an institution.", + "operationId" : "updateUserProductCreatedAt", "parameters" : [ { "name" : "institutionId", "in" : "path", @@ -175,7 +187,7 @@ "in" : "query", "required" : true, "schema" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" } }, { "name" : "userIds", @@ -210,7 +222,9 @@ "/institutions/{institutionId}/user-institutions" : { "get" : { "tags" : [ "Institution" ], - "summary" : "The API retrieves users with optional filters in input as query params", + "summary" : "Retrieve users with optional filters", + "description" : "Fetches a list of users associated with a specific institution, applying optional filters such as userId, roles, states, products, and productRoles. This allows for flexible querying based on various user attributes and statuses.", + "operationId" : "retrieveUserInstitutions", "parameters" : [ { "name" : "institutionId", "in" : "path", @@ -290,7 +304,9 @@ "/institutions/{institutionId}/users" : { "get" : { "tags" : [ "support", "support-pnpg", "Institution" ], - "summary" : "The API retrieves user's info including details of roles on products", + "summary" : "Retrieve user's information including product role details", + "description" : "Fetches detailed information about users associated with a specific institution, including their roles on various products. This endpoint is useful for administrators to obtain comprehensive user-role mappings within an institution.", + "operationId" : "getInstitutionUsersUsingGET", "parameters" : [ { "name" : "institutionId", "in" : "path", @@ -313,11 +329,45 @@ } } }, + "400" : { + "description" : "Bad Request", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, "401" : { - "description" : "Not Authorized" + "description" : "Not Authorized", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } }, "403" : { - "description" : "Not Allowed" + "description" : "Forbidden", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, + "404" : { + "description" : "Not Found", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } } }, "security" : [ { @@ -328,7 +378,9 @@ "/users" : { "get" : { "tags" : [ "User" ], - "summary" : "The API retrieves paged users with optional filters in input as query params", + "summary" : "Retrieve paged users with optional query filters", + "description" : "The API retrieves paged users with optional filters in input as query params", + "operationId" : "retrievePaginatedAndFilteredUser", "parameters" : [ { "name" : "institutionId", "in" : "query", @@ -367,7 +419,7 @@ "schema" : { "type" : "array", "items" : { - "$ref" : "#/components/schemas/PartyRole" + "type" : "string" } } }, { @@ -421,7 +473,9 @@ }, "post" : { "tags" : [ "User" ], - "summary" : "The createOrUpdateByFiscalCode function is used to create a new user or update an existing one.", + "summary" : "Create or update a user by fiscal code", + "description" : "The createOrUpdateByFiscalCode function is used to create a new user or update an existing one.", + "operationId" : "createOrUpdateByFiscalCode", "requestBody" : { "content" : { "application/json" : { @@ -460,7 +514,9 @@ "/users/emails" : { "get" : { "tags" : [ "User" ], - "summary" : "The API retrieves Users' emails using institution id and product id", + "summary" : "Retrieve users' emails by institution ID and product ID", + "description" : "The API retrieves Users' emails using institution id and product id", + "operationId" : "getUsersEmailByInstitutionAndProduct", "parameters" : [ { "name" : "institutionId", "in" : "query", @@ -505,7 +561,9 @@ "/users/ids" : { "get" : { "tags" : [ "User" ], - "summary" : "Retrieve all users given their userIds", + "summary" : "Retrieve multiple users by their user IDs", + "description" : "Retrieve all users given their userIds", + "operationId" : "findAllByIds", "parameters" : [ { "name" : "userIds", "in" : "query", @@ -545,7 +603,9 @@ "/users/notification" : { "get" : { "tags" : [ "User" ], - "summary" : "Retrieve all SC-User for DataLake filtered by optional productId", + "summary" : "Retrieve all SC-Users for DataLake with optional product filter", + "description" : "Retrieve all SC-User for DataLake filtered by optional productId", + "operationId" : "getUsers", "parameters" : [ { "name" : "page", "in" : "query", @@ -595,7 +655,9 @@ "/users/search" : { "post" : { "tags" : [ "User" ], - "summary" : "Search user by fiscalCode", + "summary" : "Search for a user using fiscal code", + "description" : "Search user by fiscalCode", + "operationId" : "searchUserByFiscalCode", "parameters" : [ { "name" : "institutionId", "in" : "query", @@ -637,8 +699,10 @@ }, "/users/{id}" : { "get" : { - "tags" : [ "User", "external-v2", "support" ], - "summary" : "Retrieves user given userId and optional ProductId", + "tags" : [ "User", "external-v2", "support", "support-pnpg", "external-pnpg" ], + "summary" : "Retrieve user information by userId and optional ProductId", + "description" : "Retrieves user given userId and optional ProductId", + "operationId" : "getUserInfoUsingGET", "parameters" : [ { "name" : "id", "in" : "path", @@ -670,11 +734,45 @@ } } }, + "400" : { + "description" : "Bad Request", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, "401" : { - "description" : "Not Authorized" + "description" : "Not Authorized", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } }, "403" : { - "description" : "Not Allowed" + "description" : "Forbidden", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, + "404" : { + "description" : "Not Found", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } } }, "security" : [ { @@ -685,7 +783,9 @@ "/users/{id}/details" : { "get" : { "tags" : [ "User" ], - "summary" : "Retrieves user's information from pdv: name, familyName, email, fiscalCode and workContacts", + "summary" : "Retrieve detailed user information from PDV by userId", + "description" : "Retrieves user's information from pdv: name, familyName, email, fiscalCode and workContacts", + "operationId" : "getUserDetailsById", "parameters" : [ { "name" : "id", "in" : "path", @@ -732,7 +832,9 @@ "/users/{id}/institution/{institutionId}/product/{productId}/status" : { "put" : { "tags" : [ "User" ], - "summary" : "Service to update user product status", + "summary" : "Update the status of a user's product", + "description" : "Service to update user product status", + "operationId" : "updateUserProductStatus", "parameters" : [ { "name" : "id", "in" : "path", @@ -786,8 +888,10 @@ }, "/users/{id}/status" : { "put" : { - "tags" : [ "User" ], - "summary" : "Update user status with optional filter for institution, product, role and productRole", + "tags" : [ "User", "internal-v1" ], + "summary" : "Update a user's product status with optional filters", + "description" : "Update user status with optional filter for institution, product, role and productRole", + "operationId" : "updateUserStatusUsingPUT", "parameters" : [ { "name" : "id", "in" : "path", @@ -817,7 +921,8 @@ "name" : "role", "in" : "query", "schema" : { - "$ref" : "#/components/schemas/PartyRole" + "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR, ADMIN_EA", + "type" : "string" } }, { "name" : "status", @@ -827,17 +932,48 @@ } } ], "responses" : { - "200" : { - "description" : "OK", + "204" : { + "description" : "No Content" + }, + "400" : { + "description" : "Bad Request", "content" : { - "application/json" : { } + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } } }, "401" : { - "description" : "Not Authorized" + "description" : "Not Authorized", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } }, "403" : { - "description" : "Not Allowed" + "description" : "Forbidden", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } + }, + "404" : { + "description" : "Not Found", + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/Problem" + } + } + } } }, "security" : [ { @@ -848,7 +984,9 @@ "/users/{id}/user-registry" : { "put" : { "tags" : [ "User" ], - "summary" : "Service to update user in user-registry and send notification when user data gets updated", + "summary" : "Update user registry and send notification upon data update", + "description" : "Service to update user in user-registry and send notification when user data gets updated", + "operationId" : "updateUserRegistryAndSendNotification", "parameters" : [ { "name" : "id", "in" : "path", @@ -894,7 +1032,9 @@ "/users/{userId}" : { "post" : { "tags" : [ "User" ], - "summary" : "The createOrUpdateByUserId function is used to update existing user adding userRole.", + "summary" : "Update or create a user by userId with a new role", + "description" : "The createOrUpdateByUserId function is used to update existing user adding userRole.", + "operationId" : "createOrUpdateByUserId", "parameters" : [ { "name" : "userId", "in" : "path", @@ -937,7 +1077,9 @@ "/users/{userId}/institution/{institutionId}" : { "get" : { "tags" : [ "User" ], - "summary" : "The retrieveUsers function is used to retrieve a list of users from the UserInstitution collection and userRegistry.\nAt first it try to retrieve a UserInstitution document associated with a logged user (admin)\nIf this userInstitution object is not null, so user has AdminRole, it try to retriew the userInstitutions filtered by given institutionId, roles, states, products and productRoles\nand optional given personId, otherwise it do the same query using the logged user id instead of personId.\nAfter that it retrieve personal user data, foreach userId retrieved, from userRegistry and return a stream of UserDataResponse objects containing the requested user data.", + "summary" : "Retrieve a list of users with optional filters and permissions", + "description" : "The retrieveUsers function is used to retrieve a list of users from the UserInstitution collection and userRegistry.\nAt first it try to retrieve a UserInstitution document associated with a logged user (admin)\nIf this userInstitution object is not null, so user has AdminRole, it try to retriew the userInstitutions filtered by given institutionId, roles, states, products and productRoles\nand optional given personId, otherwise it do the same query using the logged user id instead of personId.\nAfter that it retrieve personal user data, foreach userId retrieved, from userRegistry and return a stream of UserDataResponse objects containing the requested user data.", + "operationId" : "retrieveUsers", "parameters" : [ { "name" : "institutionId", "in" : "path", @@ -1024,7 +1166,9 @@ "/users/{userId}/institutions" : { "get" : { "tags" : [ "User" ], - "summary" : "Retrieves products info and role which the user is enabled", + "summary" : "Retrieve product information and user roles", + "description" : "Retrieves products info and role which the user is enabled", + "operationId" : "getUserProductsInfo", "parameters" : [ { "name" : "userId", "in" : "path", @@ -1074,7 +1218,9 @@ "/users/{userId}/institutions/{institutionId}" : { "get" : { "tags" : [ "User" ], - "summary" : "Retrieves userInstitution data with list of actions permitted for each user's product", + "summary" : "Retrieve userInstitution data with permitted actions for each product", + "description" : "Retrieves userInstitution data with list of actions permitted for each user's product", + "operationId" : "getUserInstitutionWithPermission", "parameters" : [ { "name" : "institutionId", "in" : "path", @@ -1122,7 +1268,9 @@ "/users/{userId}/institutions/{institutionId}/products/{productId}" : { "delete" : { "tags" : [ "User" ], - "summary" : "Delete logically the association institution and product", + "summary" : "Logically delete the association between institution and product", + "description" : "Delete logically the association institution and product", + "operationId" : "deleteProducts", "parameters" : [ { "name" : "institutionId", "in" : "path", @@ -1233,10 +1381,21 @@ "enum" : [ "ROOT", "DEV", "COLL", "PROD" ], "type" : "string" }, - "LocalDateTime" : { + "InvalidParam" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string" + }, + "reason" : { + "type" : "string" + } + } + }, + "OffsetDateTime" : { "format" : "date-time", "type" : "string", - "example" : "2022-03-10T12:15:50" + "example" : "2022-03-10T12:15:50-04:00" }, "OnboardedProductResponse" : { "type" : "object", @@ -1254,17 +1413,17 @@ "type" : "string" }, "role" : { - "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR", + "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR, ADMIN_EA", "type" : "string" }, "env" : { "$ref" : "#/components/schemas/Env" }, "createdAt" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" }, "updatedAt" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" } } }, @@ -1288,16 +1447,17 @@ "type" : "string" }, "role" : { - "$ref" : "#/components/schemas/PartyRole" + "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR, ADMIN_EA", + "type" : "string" }, "env" : { "$ref" : "#/components/schemas/Env" }, "createdAt" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" }, "updatedAt" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" }, "delegationId" : { "type" : "string" @@ -1310,14 +1470,37 @@ } } }, - "PartyRole" : { - "enum" : [ "MANAGER", "DELEGATE", "SUB_DELEGATE", "OPERATOR"], - "type" : "string" - }, "PermissionTypeEnum" : { "enum" : [ "ADMIN", "ANY" ], "type" : "string" }, + "Problem" : { + "type" : "object", + "properties" : { + "detail" : { + "type" : "string" + }, + "instance" : { + "type" : "string" + }, + "invalidParams" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/InvalidParam" + } + }, + "status" : { + "format" : "int32", + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "type" : { + "type" : "string" + } + } + }, "Product" : { "required" : [ "productId", "role", "productRoles" ], "type" : "object", @@ -1327,7 +1510,8 @@ "type" : "string" }, "role" : { - "$ref" : "#/components/schemas/PartyRole" + "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR, ADMIN_EA", + "type" : "string" }, "tokenId" : { "type" : "string" @@ -1352,7 +1536,8 @@ "type" : "string" }, "role" : { - "$ref" : "#/components/schemas/PartyRole" + "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR, ADMIN_EA", + "type" : "string" }, "tokenId" : { "type" : "string" @@ -1549,7 +1734,7 @@ "type" : "string" }, "role" : { - "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR", + "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR, ADMIN_EA", "type" : "string" }, "status" : { @@ -1599,10 +1784,10 @@ "type" : "string" }, "createdAt" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" }, "updatedAt" : { - "$ref" : "#/components/schemas/LocalDateTime" + "$ref" : "#/components/schemas/OffsetDateTime" }, "eventType" : { "$ref" : "#/components/schemas/QueueEvent" @@ -1684,7 +1869,7 @@ "type" : "string" }, "role" : { - "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR", + "description" : "Available values: MANAGER, DELEGATE, SUB_DELEGATE, OPERATOR, ADMIN_EA", "type" : "string" }, "productRole" : { diff --git a/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImpl.java b/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImpl.java index 7ef8f40f7..39d582dde 100644 --- a/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImpl.java +++ b/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImpl.java @@ -43,7 +43,7 @@ public class UserConnectorImpl implements UserApiConnector { @Retry(name = "retryTimeout") public List getUserInstitutions(String userId) { log.trace("getUserProducts start"); - UserInfoResponse userInfoResponse = userApiRestClient._usersUserIdInstitutionsGet(userId, null, + UserInfoResponse userInfoResponse = userApiRestClient._getUserProductsInfo(userId, null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name())).getBody(); if(Objects.isNull(userInfoResponse) || @@ -62,7 +62,7 @@ public List getUserInstitutions(String userId) { @Retry(name = "retryTimeout") public UserInstitutionWithActionsDto getUserInstitutionWithActions(String userId, String institutionId, String productId) { log.trace("getUserInstitutionWithActions start"); - UserInstitutionWithActions userInstitutionWithActions = userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(userId, institutionId, productId) + UserInstitutionWithActions userInstitutionWithActions = userApiRestClient._getUserInstitutionWithPermission(userId, institutionId, productId) .getBody(); return userMapper.toUserInstitutionWithActionsDto(userInstitutionWithActions); } @@ -71,7 +71,7 @@ public UserInstitutionWithActionsDto getUserInstitutionWithActions(String userId @Retry(name = "retryTimeout") public UserInstitution getProducts(String institutionId, String userId) { log.trace("getProducts start"); - List institutionResponses = userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet( + List institutionResponses = userInstitutionApiRestClient._retrieveUserInstitutions( institutionId, null, null, @@ -98,7 +98,7 @@ public Boolean hasPermission(String userId, String institutionId, String product boolean result = false; - UserInstitutionWithActions userInstitutionWithActions = userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(institutionId, userId, productId) + UserInstitutionWithActions userInstitutionWithActions = userApiRestClient._getUserInstitutionWithPermission(institutionId, userId, productId) .getBody(); if(Objects.nonNull(userInstitutionWithActions) && !CollectionUtils.isEmpty(userInstitutionWithActions.getProducts())) { @@ -120,7 +120,7 @@ public User getUserById(String userId, String institutionId, List fields log.trace("getUserById start"); log.debug("getUserById id = {}", userId); String fieldsString = !CollectionUtils.isEmpty(fields) ? String.join(",", fields) : null; - User user = userMapper.toUser(userApiRestClient._usersIdDetailsGet(userId, fieldsString, institutionId).getBody()); + User user = userMapper.toUser(userApiRestClient._getUserDetailsById(userId, fieldsString, institutionId).getBody()); log.debug(LogUtils.CONFIDENTIAL_MARKER, "getUserById = {}", user); log.trace("getUserById end"); return user; @@ -131,7 +131,7 @@ public User getUserById(String userId, String institutionId, List fields public User searchByFiscalCode(String fiscalCode, String institutionId) { log.trace("searchByFiscalCode start"); log.debug(LogUtils.CONFIDENTIAL_MARKER, "searchByFiscalCode fiscalCode = {}", fiscalCode); - User user = userMapper.toUser(userApiRestClient._usersSearchPost(institutionId, SearchUserDto.builder().fiscalCode(fiscalCode).build()).getBody()); + User user = userMapper.toUser(userApiRestClient._searchUserByFiscalCode(institutionId, SearchUserDto.builder().fiscalCode(fiscalCode).build()).getBody()); log.debug(LogUtils.CONFIDENTIAL_MARKER, "searchByFiscalCode user = {}", user); log.trace("searchByFiscalCode end"); return user; @@ -141,7 +141,7 @@ public User searchByFiscalCode(String fiscalCode, String institutionId) { public void suspendUserProduct(String userId, String institutionId, String productId, String productRole) { log.trace("suspend start"); log.debug("suspend userId = {}, institutionId = {}", userId, institutionId); - userApiRestClient._usersIdInstitutionInstitutionIdProductProductIdStatusPut(userId, institutionId, productId, OnboardedProductState.SUSPENDED, productRole); + userApiRestClient._updateUserProductStatus(userId, institutionId, productId, OnboardedProductState.SUSPENDED, productRole); log.trace("suspend end"); } @@ -149,7 +149,7 @@ public void suspendUserProduct(String userId, String institutionId, String produ public void activateUserProduct(String userId, String institutionId, String productId, String productRole) { log.trace("activate start"); log.debug("activate userId = {}, institutionId = {}", userId, institutionId); - userApiRestClient._usersIdInstitutionInstitutionIdProductProductIdStatusPut(userId, institutionId, productId, OnboardedProductState.ACTIVE, productRole); + userApiRestClient._updateUserProductStatus(userId, institutionId, productId, OnboardedProductState.ACTIVE, productRole); log.trace("activate end"); } @@ -157,7 +157,7 @@ public void activateUserProduct(String userId, String institutionId, String prod public void deleteUserProduct(String userId, String institutionId, String productId, String productRole) { log.trace("delete start"); log.debug("delete userId = {}, institutionId = {}", userId, institutionId); - userApiRestClient._usersIdInstitutionInstitutionIdProductProductIdStatusPut(userId, institutionId, productId, OnboardedProductState.DELETED, productRole); + userApiRestClient._updateUserProductStatus(userId, institutionId, productId, OnboardedProductState.DELETED, productRole); log.trace("delete end"); } @@ -165,7 +165,7 @@ public void deleteUserProduct(String userId, String institutionId, String produc public void updateUser(String userId, String institutionId, UpdateUserRequestDto userDto) { log.trace("updateUser start"); log.debug("updateUser userId = {}, institutionId = {}, userDto = {}", userId, institutionId, userDto); - userApiRestClient._usersIdUserRegistryPut(userId, institutionId, userMapper.toUpdateUserRequest(userDto)); + userApiRestClient._updateUserRegistryAndSendNotification(userId, institutionId, userMapper.toUpdateUserRequest(userDto)); log.trace("updateUser end"); } @@ -182,7 +182,7 @@ public Collection getUsers(String institutionId, UserInfo.UserInfoFilt .map(Enum::name) .toList(); - return Optional.ofNullable(userApiRestClient._usersUserIdInstitutionInstitutionIdGet(institutionId, + return Optional.ofNullable(userApiRestClient._retrieveUsers(institutionId, loggedUserId, userInfoFilter.getUserId(), userInfoFilter.getProductRoles(), @@ -199,7 +199,7 @@ public Collection getUsers(String institutionId, UserInfo.UserInfoFilt @Override public UserInfo getUserByUserIdInstitutionIdAndProductAndStates(String userId, String institutionId, String productId, List states) { log.trace("getUserByUserIdInstitutionIdAndProduct start"); - List institutionResponses = userApiRestClient._usersUserIdInstitutionInstitutionIdGet(institutionId, userId, userId, null, List.of(productId), null, states) + List institutionResponses = userApiRestClient._retrieveUsers(institutionId, userId, userId, null, List.of(productId), null, states) .getBody(); if (CollectionUtils.isEmpty(institutionResponses) || institutionResponses.size() != 1){ @@ -215,7 +215,7 @@ public UserInfo getUserByUserIdInstitutionIdAndProductAndStates(String userId, S @Override public List retrieveFilteredUserInstitution(String institutionId, UserInfo.UserInfoFilter userInfoFilter) { - return Optional.ofNullable(userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet(institutionId, + return Optional.ofNullable(userInstitutionApiRestClient._retrieveUserInstitutions(institutionId, null, List.of(userInfoFilter.getProductId()), null, @@ -233,7 +233,7 @@ public List retrieveFilteredUserInstitution(String institutionId, UserIn public List retrieveFilteredUser(String userId, String institutionId, String productId) { log.trace("retrieveFilteredUser start"); log.debug("retrieveFilteredUser userId = {}, institutionId = {}, productId = {}", userId, institutionId, productId); - List institutionResponses = userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet(institutionId, null, List.of(productId), null, getValidUserStates(), userId).getBody(); + List institutionResponses = userInstitutionApiRestClient._retrieveUserInstitutions(institutionId, null, List.of(productId), null, getValidUserStates(), userId).getBody(); if(!CollectionUtils.isEmpty(institutionResponses)) { log.info("retrieveFilteredUser institutionResponses size = {}", institutionResponses.size()); return institutionResponses.stream() @@ -259,7 +259,7 @@ public String createOrUpdateUserByFiscalCode(Institution institution, String pro } CreateUserDto createUserDto = buildCreateUserDto(institution, productId, userDto, roles); - String userId = userApiRestClient._usersPost(createUserDto).getBody(); + String userId = userApiRestClient._createOrUpdateByFiscalCode(createUserDto).getBody(); log.trace("createOrUpdateUserByFiscalCode end"); return userId; @@ -290,7 +290,7 @@ private it.pagopa.selfcare.user.generated.openapi.v1.dto.User buildUser(UserToCr private Product1 buildProduct(String productId, List roles) { return Product1.builder() .productRoles(roles.stream().map(it.pagopa.selfcare.dashboard.connector.model.user.CreateUserDto.Role::getProductRole).toList()) - .role(it.pagopa.selfcare.user.generated.openapi.v1.dto.PartyRole.valueOf(roles.get(0).getPartyRole().name())) + .role(roles.get(0).getPartyRole().name()) .productId(productId) .build(); } @@ -304,7 +304,7 @@ public void createOrUpdateUserByUserId(Institution institution, String productId .institutionDescription(institution.getDescription()) .product(Product.builder() .productRoles(roles.stream().map(it.pagopa.selfcare.dashboard.connector.model.user.CreateUserDto.Role::getProductRole).toList()) - .role(it.pagopa.selfcare.user.generated.openapi.v1.dto.PartyRole.valueOf(roles.get(0).getPartyRole().name())) + .role(roles.get(0).getPartyRole().name()) .productId(productId) .build()); @@ -314,7 +314,7 @@ public void createOrUpdateUserByUserId(Institution institution, String productId AddUserRoleDto addUserRoleDto = addUserRoleDtoBuilder.build(); - userApiRestClient._usersUserIdPost(userId, addUserRoleDto); + userApiRestClient._createOrUpdateByUserId(userId, addUserRoleDto); log.trace("createOrUpdateUserByUserId end"); } diff --git a/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImplTest.java b/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImplTest.java index 76eb7ad4a..06ae9bbe3 100644 --- a/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImplTest.java +++ b/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/UserConnectorImplTest.java @@ -14,6 +14,7 @@ import it.pagopa.selfcare.dashboard.connector.rest.model.mapper.InstitutionMapperImpl; import it.pagopa.selfcare.dashboard.connector.rest.model.mapper.UserMapper; import it.pagopa.selfcare.dashboard.connector.rest.model.mapper.UserMapperImpl; +import it.pagopa.selfcare.onboarding.common.PartyRole; import it.pagopa.selfcare.user.generated.openapi.v1.dto.OnboardedProductWithActions; import it.pagopa.selfcare.user.generated.openapi.v1.dto.*; import org.junit.jupiter.api.Assertions; @@ -70,7 +71,7 @@ public void setUp() { @Test void getUserProductsNotFound() { String userId = "userId"; - when(userApiRestClient._usersUserIdInstitutionsGet(userId, null, + when(userApiRestClient._getUserProductsInfo(userId, null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name()))).thenThrow(ResourceNotFoundException.class); Assertions.assertThrows(ResourceNotFoundException.class, () -> userConnector.getUserInstitutions(userId)); } @@ -82,13 +83,13 @@ void getUserProductsFound() throws IOException { ClassPathResource resource = new ClassPathResource("stubs/UserInfoResponse.json"); String expectedResource = StringUtils.deleteWhitespace(new String(Files.readAllBytes(resource.getFile().toPath()))); UserInfoResponse userInfoResponse = objectMapper.readValue(expectedResource, new TypeReference<>() {}); - when(userApiRestClient._usersUserIdInstitutionsGet(userId, null, + when(userApiRestClient._getUserProductsInfo(userId, null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name()))) .thenReturn(ResponseEntity.ok(userInfoResponse)); List result = userConnector.getUserInstitutions(userId); assertNotNull(result); assertEquals(result.get(0), institutionMapper.toInstitutionBase(userInfoResponse.getInstitutions().get(0))); - verify(userApiRestClient, times(1))._usersUserIdInstitutionsGet(userId, null, + verify(userApiRestClient, times(1))._getUserProductsInfo(userId, null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name())); } @@ -104,7 +105,7 @@ void suspend() { userConnector.suspendUserProduct(userId, institutionId, productId, productRole); // then verify(userApiRestClient, times(1)) - ._usersIdInstitutionInstitutionIdProductProductIdStatusPut(userId, institutionId, productId, OnboardedProductState.SUSPENDED, productRole); + ._updateUserProductStatus(userId, institutionId, productId, OnboardedProductState.SUSPENDED, productRole); verifyNoMoreInteractions(userApiRestClient); } @@ -121,7 +122,7 @@ void activate() { userConnector.activateUserProduct(userId, institutionId, productId, productRole); // then verify(userApiRestClient, times(1)) - ._usersIdInstitutionInstitutionIdProductProductIdStatusPut(userId, institutionId, productId, OnboardedProductState.ACTIVE, productRole); + ._updateUserProductStatus(userId, institutionId, productId, OnboardedProductState.ACTIVE, productRole); verifyNoMoreInteractions(userApiRestClient); } @@ -138,7 +139,7 @@ void delete() { userConnector.deleteUserProduct(userId, institutionId, productId, productRole); // then verify(userApiRestClient, times(1)) - ._usersIdInstitutionInstitutionIdProductProductIdStatusPut(userId, institutionId, productId, OnboardedProductState.DELETED, productRole); + ._updateUserProductStatus(userId, institutionId, productId, OnboardedProductState.DELETED, productRole); verifyNoMoreInteractions(userApiRestClient); } @@ -157,13 +158,13 @@ void getUserById() throws IOException{ User user = objectMapper.readValue(Files.readAllBytes(resourceResponse.getFile().toPath()), new TypeReference<>() { }); - when(userApiRestClient._usersIdDetailsGet(userId, field, institutionId)).thenReturn(ResponseEntity.ok(userDetailResponse)); + when(userApiRestClient._getUserDetailsById(userId, field, institutionId)).thenReturn(ResponseEntity.ok(userDetailResponse)); when(userMapper.toUser(userDetailResponse)).thenReturn(user); User result = userConnector.getUserById(userId, institutionId, fields); assertEquals(user,result); assertNotNull(result); - verify(userApiRestClient, times(1))._usersIdDetailsGet(userId, field, institutionId); + verify(userApiRestClient, times(1))._getUserDetailsById(userId, field, institutionId); } @Test void getUserByIdEmptyUser() throws IOException{ @@ -175,12 +176,12 @@ void getUserByIdEmptyUser() throws IOException{ UserDetailResponse userDetailResponse = objectMapper.readValue(Files.readAllBytes(resource.getFile().toPath()), new TypeReference<>() { }); - when(userApiRestClient._usersIdDetailsGet(userId, null, institutionId)).thenReturn(ResponseEntity.ok(userDetailResponse)); + when(userApiRestClient._getUserDetailsById(userId, null, institutionId)).thenReturn(ResponseEntity.ok(userDetailResponse)); when(userMapper.toUser(userDetailResponse)).thenReturn(null); User result = userConnector.getUserById(userId, institutionId, fields); assertNull(result); - verify(userApiRestClient, times(1))._usersIdDetailsGet(userId, null, institutionId); + verify(userApiRestClient, times(1))._getUserDetailsById(userId, null, institutionId); } @Test void verifyUserExist_UserExists() throws IOException { @@ -190,12 +191,12 @@ void verifyUserExist_UserExists() throws IOException { ClassPathResource resource = new ClassPathResource("stubs/UserInstitutionResponse2.json"); byte[] resourceStream = Files.readAllBytes(resource.getFile().toPath()); UserInstitutionResponse userInstitutionResponse = objectMapper.readValue(resourceStream, new TypeReference<>() {}); - when(userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet(institutionId, null, List.of(productId), null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name(), SUSPENDED.name()), userId)).thenReturn(ResponseEntity.ok(List.of(userInstitutionResponse))); + when(userInstitutionApiRestClient._retrieveUserInstitutions(institutionId, null, List.of(productId), null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name(), SUSPENDED.name()), userId)).thenReturn(ResponseEntity.ok(List.of(userInstitutionResponse))); List response = userConnector.retrieveFilteredUser(userId, institutionId, productId); assertEquals(institutionMapper.toInstitution(userInstitutionResponse), response.get(0)); - verify(userInstitutionApiRestClient, times(1))._institutionsInstitutionIdUserInstitutionsGet(eq(institutionId), eq(null), eq(List.of(productId)), eq(null), anyList(), eq(userId)); + verify(userInstitutionApiRestClient, times(1))._retrieveUserInstitutions(eq(institutionId), eq(null), eq(List.of(productId)), eq(null), anyList(), eq(userId)); } @Test @@ -206,13 +207,13 @@ void verifyUserExist_UserDoesNotExist() throws IOException { ClassPathResource resource = new ClassPathResource("stubs/UserInstitutionResponse2.json"); byte[] resourceStream = Files.readAllBytes(resource.getFile().toPath()); UserInstitutionResponse userInstitutionResponse = objectMapper.readValue(resourceStream, new TypeReference<>() {}); - when(userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet(institutionId, null, List.of(productId), null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name(), SUSPENDED.name()), userId)) + when(userInstitutionApiRestClient._retrieveUserInstitutions(institutionId, null, List.of(productId), null, List.of(ACTIVE.name(), PENDING.name(), TOBEVALIDATED.name(), SUSPENDED.name()), userId)) .thenReturn(ResponseEntity.ok(Collections.emptyList())); List response = userConnector.retrieveFilteredUser(userId, institutionId, productId); assertEquals(0, response.size()); - verify(userInstitutionApiRestClient, times(1))._institutionsInstitutionIdUserInstitutionsGet(eq(institutionId), eq(null), eq(List.of(productId)), eq(null), anyList(), eq(userId)); + verify(userInstitutionApiRestClient, times(1))._retrieveUserInstitutions(eq(institutionId), eq(null), eq(List.of(productId)), eq(null), anyList(), eq(userId)); } @Test @@ -229,7 +230,7 @@ void search() throws IOException { User user = objectMapper.readValue(Files.readAllBytes(resourceResponse.getFile().toPath()), new TypeReference<>() { }); - when(userApiRestClient._usersSearchPost(institutionId,searchUserDto)).thenReturn(ResponseEntity.ok(userDetailResponse)); + when(userApiRestClient._searchUserByFiscalCode(institutionId,searchUserDto)).thenReturn(ResponseEntity.ok(userDetailResponse)); when(userMapper.toUser(userDetailResponse)).thenReturn(user); User result = userConnector.searchByFiscalCode(fiscalCode, institutionId); @@ -247,7 +248,7 @@ void searchEmptyUser() throws IOException { }); - when(userApiRestClient._usersSearchPost(institutionId,searchUserDto)).thenReturn(ResponseEntity.ok(userDetailResponse)); + when(userApiRestClient._searchUserByFiscalCode(institutionId,searchUserDto)).thenReturn(ResponseEntity.ok(userDetailResponse)); when(userMapper.toUser(userDetailResponse)).thenReturn(null); User result = userConnector.searchByFiscalCode(null, institutionId); @@ -268,7 +269,7 @@ void hasPermissionTrueWithProduct() { String action = "Selc:ViewBilling"; String productId = "productId"; String userId = "userId"; - when(userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(institutionId, userId, productId)) + when(userApiRestClient._getUserInstitutionWithPermission(institutionId, userId, productId)) .thenReturn(new ResponseEntity<>(userInstitutionWithActions, HttpStatus.OK)); //when Boolean result = userConnector.hasPermission(userId, institutionId, productId, action); @@ -290,7 +291,7 @@ void hasPermissionTrueWithDifferentProduct() { String action = "Selc:ViewBilling"; String productId = "productId"; String userId = "userId"; - when(userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(institutionId, userId, productId)) + when(userApiRestClient._getUserInstitutionWithPermission(institutionId, userId, productId)) .thenReturn(new ResponseEntity<>(userInstitutionWithActions, HttpStatus.OK)); //when Boolean result = userConnector.hasPermission(userId, institutionId, productId, action); @@ -311,7 +312,7 @@ void hasPermissionTrueWithoutProduct() { String institutionId = "institutionId"; String action = "Selc:ViewBilling"; String userId = "userId"; - when(userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(institutionId, userId, null)) + when(userApiRestClient._getUserInstitutionWithPermission(institutionId, userId, null)) .thenReturn(new ResponseEntity<>(userInstitutionWithActions, HttpStatus.OK)); //when Boolean result = userConnector.hasPermission(userId, institutionId, null, action); @@ -333,7 +334,7 @@ void hasPermissionFalse() { String productId = "productId"; String userId = "userId"; - when(userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(institutionId, userId, productId)) + when(userApiRestClient._getUserInstitutionWithPermission(institutionId, userId, productId)) .thenReturn(new ResponseEntity<>(userInstitutionWithActions, HttpStatus.OK)); //when Boolean result = userConnector.hasPermission(userId, institutionId, productId, action); @@ -354,7 +355,7 @@ void hasPermissionWithNullActionFalse() { String productId = "productId"; String userId = "userId"; - when(userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(institutionId, userId, productId)) + when(userApiRestClient._getUserInstitutionWithPermission(institutionId, userId, productId)) .thenReturn(new ResponseEntity<>(userInstitutionWithActions, HttpStatus.OK)); //when Boolean result = userConnector.hasPermission(userId, institutionId, productId, action); @@ -377,7 +378,7 @@ void hasPermissionWithEmptyActionFalse() { String productId = "productId"; String userId = "userId"; - when(userApiRestClient._usersUserIdInstitutionsInstitutionIdGet(institutionId, userId, productId)) + when(userApiRestClient._getUserInstitutionWithPermission(institutionId, userId, productId)) .thenReturn(new ResponseEntity<>(userInstitutionWithActions, HttpStatus.OK)); //when Boolean result = userConnector.hasPermission(userId, institutionId, productId, action); @@ -396,7 +397,7 @@ void update() { userConnector.updateUser(userId, institutionId, user); // then verify(userApiRestClient, times(1)) - ._usersIdUserRegistryPut(userId, institutionId, new UpdateUserRequest()); + ._updateUserRegistryAndSendNotification(userId, institutionId, new UpdateUserRequest()); verifyNoMoreInteractions(userApiRestClient); } @@ -410,7 +411,7 @@ void getUsers_emptyList() throws IOException { UserInfo.UserInfoFilter userInfoFilter = objectMapper.readValue(Files.readAllBytes(resourceFilter.getFile().toPath()), new TypeReference<>() { }); - when(userApiRestClient._usersUserIdInstitutionInstitutionIdGet(institutionId, loggedUserId, userInfoFilter.getUserId(), userInfoFilter.getProductRoles(), List.of(userInfoFilter.getProductId()), List.of("MANAGER", "DELEGATE", "SUB_DELEGATE"), List.of("ACTIVE", "SUSPENDED"))) + when(userApiRestClient._retrieveUsers(institutionId, loggedUserId, userInfoFilter.getUserId(), userInfoFilter.getProductRoles(), List.of(userInfoFilter.getProductId()), List.of("MANAGER", "DELEGATE", "SUB_DELEGATE"), List.of("ACTIVE", "SUSPENDED"))) .thenReturn(ResponseEntity.ok(Collections.emptyList())); // when @@ -434,7 +435,7 @@ void getUsers_notEmpty() throws IOException { byte[] responseData = Files.readAllBytes(resourceResponse.getFile().toPath()); List userDataResponseList = objectMapper.readValue(responseData, new TypeReference<>() {}); - when(userApiRestClient._usersUserIdInstitutionInstitutionIdGet(institutionId, loggedUserId, userInfoFilter.getUserId(), userInfoFilter.getProductRoles(), List.of(userInfoFilter.getProductId()), List.of("MANAGER", "DELEGATE", "SUB_DELEGATE"), List.of("ACTIVE", "SUSPENDED"))) + when(userApiRestClient._retrieveUsers(institutionId, loggedUserId, userInfoFilter.getUserId(), userInfoFilter.getProductRoles(), List.of(userInfoFilter.getProductId()), List.of("MANAGER", "DELEGATE", "SUB_DELEGATE"), List.of("ACTIVE", "SUSPENDED"))) .thenReturn(ResponseEntity.ok(userDataResponseList)); // when @@ -454,7 +455,7 @@ void getUserInstitutionWithActions_returnsUserInstitutionWithActions() { UserInstitutionWithActions userInstitutionWithActions = new UserInstitutionWithActions(); - when(userApiRestClient._usersUserIdInstitutionsInstitutionIdGet( + when(userApiRestClient._getUserInstitutionWithPermission( userId, institutionId, productId @@ -462,7 +463,7 @@ void getUserInstitutionWithActions_returnsUserInstitutionWithActions() { UserInstitutionWithActionsDto userInstitutionWithActionsDto = userConnector.getUserInstitutionWithActions(userId, institutionId, productId); - verify(userApiRestClient)._usersUserIdInstitutionsInstitutionIdGet(userId, institutionId, productId); + verify(userApiRestClient)._getUserInstitutionWithPermission(userId, institutionId, productId); assertNotNull(userInstitutionWithActionsDto); } @@ -478,7 +479,7 @@ void getProducts_returnsUserInstitution() throws IOException{ UserInstitutionResponse userInstitutions = objectMapper.readValue(resourceStream, new TypeReference<>() { }); - when(userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet( + when(userInstitutionApiRestClient._retrieveUserInstitutions( institutionId, null, null, @@ -491,14 +492,14 @@ void getProducts_returnsUserInstitution() throws IOException{ //Todo aggiungere expectedResponse assertNotNull(result); - verify(userInstitutionApiRestClient, times(1))._institutionsInstitutionIdUserInstitutionsGet(institutionId, null, null, null, null, userId); + verify(userInstitutionApiRestClient, times(1))._retrieveUserInstitutions(institutionId, null, null, null, null, userId); } @Test void getProducts_throwsResourceNotFoundException() { String institutionId = "institutionId"; String userId = "userId"; - when(userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet( + when(userInstitutionApiRestClient._retrieveUserInstitutions( institutionId, null, null, @@ -510,13 +511,13 @@ void getProducts_throwsResourceNotFoundException() { Executable executable = () -> userConnector.getProducts(institutionId, userId); assertThrows(ResourceNotFoundException.class, executable); - verify(userInstitutionApiRestClient, times(1))._institutionsInstitutionIdUserInstitutionsGet(institutionId, null, null, null, null, userId); + verify(userInstitutionApiRestClient, times(1))._retrieveUserInstitutions(institutionId, null, null, null, null, userId); } @Test void testCreateOrUpdateUserByFiscalCode() throws IOException { // Arrange - when(userApiRestClient._usersPost(Mockito.any())) + when(userApiRestClient._createOrUpdateByFiscalCode(Mockito.any())) .thenReturn(ResponseEntity.ok("userId")); ClassPathResource resource = new ClassPathResource("stubs/UserToCreate.json"); @@ -524,7 +525,7 @@ void testCreateOrUpdateUserByFiscalCode() throws IOException { UserToCreate userDto = objectMapper.readValue(resourceStream, new TypeReference<>() {}); CreateUserDto.Role role = new CreateUserDto.Role(); - role.setPartyRole(it.pagopa.selfcare.onboarding.common.PartyRole.MANAGER); + role.setPartyRole(PartyRole.MANAGER); role.setProductRole("admin"); CreateUserDto.Role role2 = new CreateUserDto.Role(); @@ -542,7 +543,7 @@ void testCreateOrUpdateUserByFiscalCode() throws IOException { String userId = userConnector.createOrUpdateUserByFiscalCode(institution, "productId", userDto, List.of(role, role2)); // Assert that nothing has changed - verify(userApiRestClient)._usersPost(Mockito.any()); + verify(userApiRestClient)._createOrUpdateByFiscalCode(Mockito.any()); assertEquals("userId", userId); } @@ -594,7 +595,7 @@ void testCreateOrUpdateUserByFiscalCode_withApiResponseNull() throws IOException ClassPathResource userDtoResource = new ClassPathResource("stubs/CreateUserDto.json"); byte[] userDtoResourceStream = Files.readAllBytes(userDtoResource.getFile().toPath()); it.pagopa.selfcare.user.generated.openapi.v1.dto.CreateUserDto createUserDto = objectMapper.readValue(userDtoResourceStream, new TypeReference<>() {}); - when(userApiRestClient._usersPost(createUserDto)) + when(userApiRestClient._createOrUpdateByFiscalCode(createUserDto)) .thenReturn(ResponseEntity.ok(null)); ClassPathResource resource = new ClassPathResource("stubs/UserToCreate.json"); @@ -617,7 +618,7 @@ void testCreateOrUpdateUserByFiscalCode_withApiResponseNull() throws IOException String userId = userConnector.createOrUpdateUserByFiscalCode(institution, "productId", userDto, List.of(role)); // Assert that nothing has changed - verify(userApiRestClient)._usersPost(createUserDto); + verify(userApiRestClient)._createOrUpdateByFiscalCode(createUserDto); assertNull(userId); } @@ -627,7 +628,7 @@ void testCreateOrUpdateUserByFiscalCode_withApiResponseEmpty() throws IOExceptio ClassPathResource userDtoResource = new ClassPathResource("stubs/CreateUserDto.json"); byte[] userDtoResourceStream = Files.readAllBytes(userDtoResource.getFile().toPath()); it.pagopa.selfcare.user.generated.openapi.v1.dto.CreateUserDto createUserDto = objectMapper.readValue(userDtoResourceStream, new TypeReference<>() {}); - when(userApiRestClient._usersPost(createUserDto)) + when(userApiRestClient._createOrUpdateByFiscalCode(createUserDto)) .thenReturn(ResponseEntity.ok("")); ClassPathResource resource = new ClassPathResource("stubs/UserToCreate.json"); @@ -650,7 +651,7 @@ void testCreateOrUpdateUserByFiscalCode_withApiResponseEmpty() throws IOExceptio String userId = userConnector.createOrUpdateUserByFiscalCode(institution, "productId", userDto, List.of(role)); // Assert that nothing has changed - verify(userApiRestClient)._usersPost(createUserDto); + verify(userApiRestClient)._createOrUpdateByFiscalCode(createUserDto); assertEquals("", userId); } @Test @@ -660,7 +661,7 @@ void testCreateOrUpdateUserByUserId() throws IOException { AddUserRoleDto addUserRoleDto = objectMapper.readValue(userRoleResourceStream, new TypeReference<>() {}); // Arrange - when(userApiRestClient._usersUserIdPost("userId", addUserRoleDto)) + when(userApiRestClient._createOrUpdateByUserId("userId", addUserRoleDto)) .thenReturn(ResponseEntity.ok().build()); CreateUserDto.Role role = new CreateUserDto.Role(); @@ -680,7 +681,7 @@ void testCreateOrUpdateUserByUserId() throws IOException { userConnector.createOrUpdateUserByUserId(institution, "productId", "userId", List.of(role)); // Assert that nothing has changed - verify(userApiRestClient)._usersUserIdPost("userId", addUserRoleDto); + verify(userApiRestClient)._createOrUpdateByUserId("userId", addUserRoleDto); } @@ -695,7 +696,7 @@ void retrieveFilteredUserInstitutionReturnsUserInstitutions() throws IOException byte[] resourceStream = Files.readAllBytes(resource.getFile().toPath()); UserInstitutionResponse userInstitutionResponse = objectMapper.readValue(resourceStream, new TypeReference<>() {}); - when(userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet(institutionId, null, List.of(userInfoFilter.getProductId()), null, + when(userInstitutionApiRestClient._retrieveUserInstitutions(institutionId, null, List.of(userInfoFilter.getProductId()), null, userInfoFilter.getAllowedStates().stream().map(Enum::name).toList(), null)) .thenReturn(ResponseEntity.ok(List.of(userInstitutionResponse))); @@ -713,7 +714,7 @@ void retrieveFilteredUserInstitutionReturnsEmptyListWhenNoUserInstitutions() { UserInfo.UserInfoFilter userInfoFilter = new UserInfo.UserInfoFilter(); userInfoFilter.setProductId("productId"); userInfoFilter.setAllowedStates(List.of(ACTIVE, SUSPENDED)); - when(userInstitutionApiRestClient._institutionsInstitutionIdUserInstitutionsGet(institutionId, null, List.of(userInfoFilter.getProductId()), null, + when(userInstitutionApiRestClient._retrieveUserInstitutions(institutionId, null, List.of(userInfoFilter.getProductId()), null, userInfoFilter.getAllowedStates().stream().map(Enum::name).toList(), null)) .thenReturn(ResponseEntity.ok(List.of())); @@ -741,7 +742,7 @@ void getUserByUserIdInstitutionIdAndProductAndStates() throws IOException{ UserInfo expectedUserInfo = userMapper.toUserInfo(userDataResponseList.get(0)); - when(userApiRestClient._usersUserIdInstitutionInstitutionIdGet( + when(userApiRestClient._retrieveUsers( institutionId, userId, userId, @@ -757,7 +758,7 @@ void getUserByUserIdInstitutionIdAndProductAndStates() throws IOException{ // then assertNotNull(result); assertEquals(expectedUserInfo, result); - verify(userApiRestClient, times(1))._usersUserIdInstitutionInstitutionIdGet( + verify(userApiRestClient, times(1))._retrieveUsers( institutionId, userId, userId, @@ -775,7 +776,7 @@ void getUserByUserIdInstitutionIdAndProductAndStates_throwsResourceNotFoundExcep String productId = "productId"; List statusFilter = List.of(ACTIVE.name(), SUSPENDED.name()); - when(userApiRestClient._usersUserIdInstitutionInstitutionIdGet( + when(userApiRestClient._retrieveUsers( institutionId, userId, userId, @@ -790,7 +791,7 @@ void getUserByUserIdInstitutionIdAndProductAndStates_throwsResourceNotFoundExcep // then assertThrows(ResourceNotFoundException.class, executable); - verify(userApiRestClient, times(1))._usersUserIdInstitutionInstitutionIdGet( + verify(userApiRestClient, times(1))._retrieveUsers( institutionId, userId, userId,