Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,13 @@ public void update(final String id,
final AysUserUpdateRequest updateRequest) {

final AysUser user = userReadPort.findById(id)
.filter(userFromDatabase -> identity.getInstitutionId().equals(userFromDatabase.getInstitution().getId()))
.orElseThrow(() -> new AysUserNotExistByIdException(id));

String institutionId = identity.getInstitutionId();
if (!institutionId.equals(user.getInstitution().getId())) {
throw new AysUserNotExistByIdException(id);
}

if (!(user.isActive() || user.isPassive())) {
throw new AysUserIsNotActiveOrPassiveException(id);
}
Expand All @@ -76,7 +80,7 @@ public void update(final String id,
user.setEmailAddress(updateRequest.getEmailAddress());
}

this.validateRolesAndSet(user, updateRequest.getRoleIds());
this.validateRolesAndSet(user, updateRequest.getRoleIds(), institutionId);

user.setFirstName(updateRequest.getFirstName());
user.setLastName(updateRequest.getLastName());
Expand Down Expand Up @@ -214,7 +218,7 @@ private void validateEmailAddress(AysUser user, String emailAddress) {
* @param roleIds The set of role IDs to be checked and retrieved.
* @throws AysRolesNotExistException if any of the provided role IDs do not exist.
*/
private void validateRolesAndSet(final AysUser user, final Set<String> roleIds) {
private void validateRolesAndSet(final AysUser user, final Set<String> roleIds, final String institutionId) {

boolean isRoleNotChanged = user.getRoles().stream()
.allMatch(role -> roleIds.contains(role.getId()));
Expand All @@ -224,7 +228,7 @@ private void validateRolesAndSet(final AysUser user, final Set<String> roleIds)

final List<AysRole> roles = roleReadPort.findAllByIds(roleIds).stream()
.filter(AysRole::isActive)
.filter(role -> identity.getInstitutionId().equals(role.getInstitution().getId()))
.filter(role -> institutionId.equals(role.getInstitution().getId()))
.toList();

if (roles.size() == roleIds.size()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ void givenValidIdAndValidUpdateRequest_whenAllFieldsChanged_thenUpdateUser() {
Mockito.verify(userReadPort, Mockito.times(1))
.findById(Mockito.anyString());

Mockito.verify(identity, Mockito.times(mockRoles.size() + 1))
Mockito.verify(identity, Mockito.times(1))
.getInstitutionId();

Mockito.verify(userReadPort, Mockito.times(1))
Expand Down Expand Up @@ -190,7 +190,7 @@ void givenValidIdAndValidUpdateRequest_whenRolesUpdatedOnly_thenUpdateUser() {
Mockito.verify(userReadPort, Mockito.times(1))
.findById(Mockito.anyString());

Mockito.verify(identity, Mockito.times(mockRoles.size() + 1))
Mockito.verify(identity, Mockito.times(1))
.getInstitutionId();

Mockito.verify(roleReadPort, Mockito.times(1))
Expand Down
Loading