Skip to content

Commit 511c0a0

Browse files
committed
Fixes #655
1 parent ab98d50 commit 511c0a0

2 files changed

Lines changed: 22 additions & 21 deletions

File tree

server/src/main/java/invite/provision/ProvisioningServiceDefault.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -173,18 +173,26 @@ public void updateUserRequest(User user) {
173173
.toList();
174174
//Provision the user to all provisionings in Manage where the user is known
175175
provisionings.forEach(provisioning -> {
176-
if (this.hasEvaHook(provisioning)) {
177-
RequestEntity requestEntity = this.evaClient.updateUserRequest(provisioning, user);
178-
this.doExchange(requestEntity, APIType.USER_API, mapParameterizedTypeReference, provisioning);
179-
} else if (this.hasScimHook(provisioning)) {
180-
Optional<RemoteProvisionedUser> provisionedUserOptional =
181-
this.remoteProvisionedUserRepository.findByManageProvisioningIdAndUser(provisioning.getId(), user);
182-
provisionedUserOptional.ifPresent(remoteProvisionedUser -> {
183-
UserRequest userRequest = new UserRequest(user, provisioning, remoteProvisionedUser.getRemoteIdentifier());
184-
this.resolveInstitutionalEduID(user, provisioning, userRequest);
185-
String userRequestJson = prettyJson(userRequest);
186-
this.updateRequest(provisioning, userRequestJson, APIType.USER_API, remoteProvisionedUser.getRemoteIdentifier(), HttpMethod.PUT);
187-
});
176+
try {
177+
if (this.hasEvaHook(provisioning)) {
178+
RequestEntity requestEntity = this.evaClient.updateUserRequest(provisioning, user);
179+
this.doExchange(requestEntity, APIType.USER_API, mapParameterizedTypeReference, provisioning);
180+
} else if (this.hasScimHook(provisioning)) {
181+
Optional<RemoteProvisionedUser> provisionedUserOptional =
182+
this.remoteProvisionedUserRepository.findByManageProvisioningIdAndUser(provisioning.getId(), user);
183+
provisionedUserOptional.ifPresent(remoteProvisionedUser -> {
184+
UserRequest userRequest = new UserRequest(user, provisioning, remoteProvisionedUser.getRemoteIdentifier());
185+
this.resolveInstitutionalEduID(user, provisioning, userRequest);
186+
String userRequestJson = prettyJson(userRequest);
187+
this.updateRequest(provisioning, userRequestJson, APIType.USER_API, remoteProvisionedUser.getRemoteIdentifier(), HttpMethod.PUT);
188+
});
189+
}
190+
} catch (RuntimeException e) {
191+
//We choose to ignore these, because one remote provisioning errors should not stop other provisionings
192+
LOG.error(String.format("Error in updateUserRequest for provisioning %s for user %s",
193+
provisioning.getEntityId(), user.getEmail())
194+
, e);
195+
188196
}
189197
});
190198
}

server/src/test/java/invite/provision/ProvisioningServiceDefaultTest.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,8 @@ void updateUserRequestWithEduIDProvisioningError() throws JsonProcessingExceptio
126126
remoteProvisionedUserRepository.save(remoteProvisionedUser);
127127
this.stubForManageProvisioning(List.of("1", "4", "5"));
128128
this.stubForUpdateScimUser();
129-
try {
130-
provisioningService.updateUserRequest(user);
131-
fail("Expected RemoteException");
132-
} catch (RemoteException e) {
133-
assertTrue(e.getMessage().contains("Error in provisionEduid"));
134-
assertEquals(HttpStatus.BAD_REQUEST, e.getStatusCode());
135-
assertNotNull(e.getReference());
136-
}
137-
129+
//RuntTime exceptions are caught
130+
provisioningService.updateUserRequest(user);
138131
}
139132

140133
@Test

0 commit comments

Comments
 (0)