You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2020/11/19 14:12:56 UTC
[syncope] branch master updated: [SYNCOPE-1603] Ensuring
PushCorrelationRule is always applied if available
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new a9386fc [SYNCOPE-1603] Ensuring PushCorrelationRule is always applied if available
a9386fc is described below
commit a9386fcadee463d08037a6383d294b959a8c92f8
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Nov 19 14:43:11 2020 +0100
[SYNCOPE-1603] Ensuring PushCorrelationRule is always applied if available
---
.../api/propagation/PropagationManager.java | 16 -----
.../java/DefaultUserProvisioningManager.java | 3 +-
.../java/data/AnyObjectDataBinderImpl.java | 11 +++-
.../provisioning/java/data/UserDataBinderImpl.java | 11 +++-
.../AbstractPropagationTaskExecutor.java | 56 ++--------------
.../java/propagation/PropagationManagerImpl.java | 75 ++++------------------
.../stream/StreamAnyObjectPushResultHandler.java | 1 -
.../stream/StreamGroupPushResultHandler.java | 1 -
.../stream/StreamUserPushResultHandler.java | 1 -
.../camel/producer/DeleteProducer.java | 3 +-
.../org/apache/syncope/fit/core/UserITCase.java | 12 +---
11 files changed, 45 insertions(+), 145 deletions(-)
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
index dec9af3..7cb3979 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
@@ -142,28 +142,12 @@ public interface PropagationManager {
PropagationByResource<Pair<String, String>> propByLinkedAccount,
Collection<String> noPropResourceKeys);
- /**
- * Create the delete tasks for the any object from each resource associated, unless in {@code noPropResourceKeys}.
- *
- * @param key any object key
- * @param propByRes operation to be performed per resource
- * @param propByLinkedAccount operation to be performed for linked accounts
- * @param noPropResourceKeys external resource keys not to be considered for propagation
- * @return list of propagation tasks
- */
- List<PropagationTaskInfo> getUserDeleteTasks(
- String key,
- PropagationByResource<String> propByRes,
- PropagationByResource<Pair<String, String>> propByLinkedAccount,
- Collection<String> noPropResourceKeys);
-
PropagationTaskInfo newTask(
DerAttrHandler derAttrHandler,
Any<?> any,
ExternalResource resource,
ResourceOperation operation,
Provision provision,
- boolean deleteOnResource,
Stream<? extends Item> mappingItems,
Pair<String, Set<Attribute>> preparedAttrs);
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
index dd3a2ef..4751c5f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
@@ -213,7 +213,8 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
// information could only be available after uwfAdapter.delete(), which
// will also effectively remove user from db, thus making virtually
// impossible by NotificationManager to fetch required user information
- List<PropagationTaskInfo> taskInfos = propagationManager.getUserDeleteTasks(
+ List<PropagationTaskInfo> taskInfos = propagationManager.getDeleteTasks(
+ AnyTypeKind.USER,
key,
propByRes,
propByLinkedAccount,
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
index 709d4ab..a12f3db 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
@@ -509,7 +509,16 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
}
// Re-merge any pending change from above
- anyObjectDAO.save(anyObject);
+ AnyObject saved = anyObjectDAO.save(anyObject);
+
+ // ensure not to DELETE on External Resources that remain assigned
+ Set<String> assigned = saved.getResources().stream().
+ map(ExternalResource::getKey).collect(Collectors.toCollection(HashSet::new));
+ assigned.addAll(saved.getMemberships().stream().
+ flatMap(m -> m.getRightEnd().getResources().stream()).map(ExternalResource::getKey).
+ collect(Collectors.toSet()));
+ propByRes.removeAll(ResourceOperation.DELETE, assigned);
+
return propByRes;
}
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
index 2d015d7..70ad56a 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
@@ -725,7 +725,16 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
}
// Re-merge any pending change from above
- userDAO.save(user);
+ User saved = userDAO.save(user);
+
+ // ensure not to DELETE on External Resources that remain assigned
+ Set<String> assigned = saved.getResources().stream().
+ map(ExternalResource::getKey).collect(Collectors.toCollection(HashSet::new));
+ assigned.addAll(saved.getMemberships().stream().
+ flatMap(m -> m.getRightEnd().getResources().stream()).map(ExternalResource::getKey).
+ collect(Collectors.toSet()));
+ propByRes.removeAll(ResourceOperation.DELETE, assigned);
+
return Pair.of(propByRes, propByLinkedAccount);
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index 0aabd5f..bc88e91 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -272,61 +272,13 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
Uid result;
if (beforeObj == null) {
- LOG.debug("{} not found on external resource: ignoring delete", task.getConnObjectKey());
+ LOG.debug("{} not found on {}: ignoring delete", task.getConnObjectKey(), task.getResource().getKey());
result = null;
} else {
- /*
- * We must choose here whether to
- * a. actually delete the provided entity from the external resource
- * b. just update the provided entity data onto the external resource
- *
- * (a) happens when either there is no entity associated with the PropagationTask (this takes place
- * when the task is generated via Logic's delete()) or the provided updated
- * entity hasn't the current resource assigned (when the task is generated via
- * Logic's update()).
- *
- * (b) happens when the provided updated entity does have the current resource assigned (when the task
- * is generated via Logic's update()): this basically means that before such
- * update, this entity used to have the current resource assigned by more than one mean (for example,
- * two different memberships with the same resource).
- */
- Collection<String> resources = Set.of();
- if (task.getEntityKey() != null && task.getAnyTypeKind() != null) {
- switch (task.getAnyTypeKind()) {
- case USER:
- try {
- resources = userDAO.findAllResourceKeys(task.getEntityKey());
- } catch (Exception e) {
- LOG.error("Could not read user {}", task.getEntityKey(), e);
- }
- break;
-
- case GROUP:
- try {
- resources = groupDAO.findAllResourceKeys(task.getEntityKey());
- } catch (Exception e) {
- LOG.error("Could not read group {}", task.getEntityKey(), e);
- }
- break;
+ LOG.debug("Delete {} on {}", beforeObj.getUid(), task.getResource().getKey());
- case ANY_OBJECT:
- default:
- try {
- resources = anyObjectDAO.findAllResourceKeys(task.getEntityKey());
- } catch (Exception e) {
- LOG.error("Could not read any object {}", task.getEntityKey(), e);
- }
- break;
- }
- }
- if (task.getAnyTypeKind() == null || !resources.contains(task.getResource().getKey())) {
- LOG.debug("Delete {} on {}", beforeObj.getUid(), task.getResource().getKey());
-
- connector.delete(beforeObj.getObjectClass(), beforeObj.getUid(), null, propagationAttempted);
- result = beforeObj.getUid();
- } else {
- result = createOrUpdate(task, beforeObj, connector, propagationAttempted);
- }
+ connector.delete(beforeObj.getObjectClass(), beforeObj.getUid(), null, propagationAttempted);
+ result = beforeObj.getUid();
}
return result;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
index 8d603c6..627384c 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
@@ -36,10 +36,6 @@ import org.apache.syncope.common.lib.request.UserUR;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.ResourceOperation;
import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.dao.AnyDAO;
-import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
import org.apache.syncope.core.persistence.api.entity.Any;
import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
@@ -84,15 +80,6 @@ public class PropagationManagerImpl implements PropagationManager {
protected VirSchemaDAO virSchemaDAO;
@Autowired
- protected AnyObjectDAO anyObjectDAO;
-
- @Autowired
- protected UserDAO userDAO;
-
- @Autowired
- protected GroupDAO groupDAO;
-
- @Autowired
protected ExternalResourceDAO resourceDAO;
@Autowired
@@ -110,25 +97,6 @@ public class PropagationManagerImpl implements PropagationManager {
@Autowired
protected AnyUtilsFactory anyUtilsFactory;
- protected AnyDAO<? extends Any<?>> dao(final AnyTypeKind kind) {
- AnyDAO<? extends Any<?>> dao;
- switch (kind) {
- case ANY_OBJECT:
- dao = anyObjectDAO;
- break;
-
- case GROUP:
- dao = groupDAO;
- break;
-
- case USER:
- default:
- dao = userDAO;
- }
-
- return dao;
- }
-
@Override
public List<PropagationTaskInfo> getCreateTasks(
final AnyTypeKind kind,
@@ -139,7 +107,7 @@ public class PropagationManagerImpl implements PropagationManager {
final Collection<String> noPropResourceKeys) {
return getCreateTasks(
- dao(kind).authFind(key),
+ anyUtilsFactory.getInstance(kind).dao().authFind(key),
null,
enable,
propByRes,
@@ -159,7 +127,7 @@ public class PropagationManagerImpl implements PropagationManager {
final Collection<String> noPropResourceKeys) {
return getCreateTasks(
- userDAO.authFind(key),
+ anyUtilsFactory.getInstance(AnyTypeKind.USER).dao().authFind(key),
password,
enable,
propByRes,
@@ -194,7 +162,7 @@ public class PropagationManagerImpl implements PropagationManager {
}
}
- return createTasks(any, password, true, enable, false, propByRes, propByLinkedAccount, vAttrs);
+ return createTasks(any, password, true, enable, propByRes, propByLinkedAccount, vAttrs);
}
@Override
@@ -209,7 +177,7 @@ public class PropagationManagerImpl implements PropagationManager {
final Collection<String> noPropResourceKeys) {
return getUpdateTasks(
- dao(kind).authFind(key),
+ anyUtilsFactory.getInstance(kind).dao().authFind(key),
null,
changePwd,
enable,
@@ -226,7 +194,7 @@ public class PropagationManagerImpl implements PropagationManager {
final Collection<String> noPropResourceKeys) {
return getUpdateTasks(
- userDAO.authFind(wfResult.getResult().getLeft().getKey()),
+ anyUtilsFactory.getInstance(AnyTypeKind.USER).dao().authFind(wfResult.getResult().getLeft().getKey()),
wfResult.getResult().getLeft().getPassword() == null
? null
: wfResult.getResult().getLeft().getPassword().getValue(),
@@ -259,7 +227,8 @@ public class PropagationManagerImpl implements PropagationManager {
wfResult.getPerformedTasks());
Set<String> pwdResourceNames = new HashSet<>(userUR.getPassword().getResources());
- Collection<String> allResourceNames = userDAO.findAllResourceKeys(userUR.getKey());
+ Collection<String> allResourceNames = anyUtilsFactory.getInstance(AnyTypeKind.USER).
+ dao().findAllResourceKeys(userUR.getKey());
pwdResourceNames.retainAll(allResourceNames);
pwdWFResult.getPropByRes().addAll(ResourceOperation.UPDATE, pwdResourceNames);
@@ -321,7 +290,6 @@ public class PropagationManagerImpl implements PropagationManager {
password,
changePwd,
enable,
- false,
Optional.ofNullable(propByRes).orElseGet(PropagationByResource::new),
propByLinkedAccount,
vAttrs);
@@ -335,17 +303,9 @@ public class PropagationManagerImpl implements PropagationManager {
final PropagationByResource<Pair<String, String>> propByLinkedAccount,
final Collection<String> noPropResourceKeys) {
- return getDeleteTasks(dao(kind).authFind(key), propByRes, propByLinkedAccount, noPropResourceKeys);
- }
-
- @Override
- public List<PropagationTaskInfo> getUserDeleteTasks(
- final String key,
- final PropagationByResource<String> propByRes,
- final PropagationByResource<Pair<String, String>> propByLinkedAccount,
- final Collection<String> noPropResourceKeys) {
-
- return getDeleteTasks(userDAO.authFind(key), propByRes, propByLinkedAccount, noPropResourceKeys);
+ return getDeleteTasks(
+ anyUtilsFactory.getInstance(kind).dao().authFind(key),
+ propByRes, propByLinkedAccount, noPropResourceKeys);
}
protected List<PropagationTaskInfo> getDeleteTasks(
@@ -359,7 +319,7 @@ public class PropagationManagerImpl implements PropagationManager {
if (propByRes == null || propByRes.isEmpty()) {
localPropByRes.addAll(
ResourceOperation.DELETE,
- dao(any.getType().getKind()).findAllResourceKeys(any.getKey()));
+ anyUtilsFactory.getInstance(any).dao().findAllResourceKeys(any.getKey()));
} else {
localPropByRes.merge(propByRes);
}
@@ -377,7 +337,7 @@ public class PropagationManagerImpl implements PropagationManager {
}
}
- return createTasks(any, null, false, false, true, localPropByRes, propByLinkedAccount, null);
+ return createTasks(any, null, false, false, localPropByRes, propByLinkedAccount, null);
}
@Override
@@ -387,7 +347,6 @@ public class PropagationManagerImpl implements PropagationManager {
final ExternalResource resource,
final ResourceOperation operation,
final Provision provision,
- final boolean deleteOnResource,
final Stream<? extends Item> mappingItems,
final Pair<String, Set<Attribute>> preparedAttrs) {
@@ -395,9 +354,7 @@ public class PropagationManagerImpl implements PropagationManager {
task.setObjectClassName(provision.getObjectClass().getObjectClassValue());
task.setAnyTypeKind(any.getType().getKind());
task.setAnyType(any.getType().getKey());
- if (!deleteOnResource) {
- task.setEntityKey(any.getKey());
- }
+ task.setEntityKey(any.getKey());
task.setOperation(operation);
task.setConnObjectKey(preparedAttrs.getLeft());
@@ -437,7 +394,6 @@ public class PropagationManagerImpl implements PropagationManager {
* @param password clear text password to be provisioned
* @param changePwd whether password should be included for propagation attributes or not
* @param enable whether user must be enabled or not
- * @param deleteOnResource whether any must be deleted anyway from external resource or not
* @param propByRes operation to be performed per resource
* @param propByLinkedAccount operation to be performed on linked accounts
* @param vAttrs virtual attributes to be set
@@ -448,7 +404,6 @@ public class PropagationManagerImpl implements PropagationManager {
final String password,
final boolean changePwd,
final Boolean enable,
- final boolean deleteOnResource,
final PropagationByResource<String> propByRes,
final PropagationByResource<Pair<String, String>> propByLinkedAccount,
final Collection<Attr> vAttrs) {
@@ -463,7 +418,7 @@ public class PropagationManagerImpl implements PropagationManager {
Set<String> virtualResources = new HashSet<>();
virtualResources.addAll(propByRes.get(ResourceOperation.CREATE));
virtualResources.addAll(propByRes.get(ResourceOperation.UPDATE));
- virtualResources.addAll(dao(any.getType().getKind()).findAllResourceKeys(any.getKey()));
+ virtualResources.addAll(anyUtilsFactory.getInstance(any).dao().findAllResourceKeys(any.getKey()));
Map<String, Set<Attribute>> vAttrMap = new HashMap<>();
if (vAttrs != null) {
@@ -527,7 +482,6 @@ public class PropagationManagerImpl implements PropagationManager {
resource,
operation,
provision,
- deleteOnResource,
mappingItems,
preparedAttrs);
task.setOldConnObjectKey(propByRes.getOldConnObjectKey(resourceKey));
@@ -571,7 +525,6 @@ public class PropagationManagerImpl implements PropagationManager {
account.getResource(),
operation,
provision,
- deleteOnResource,
mappingItems,
Pair.of(account.getConnObjectKeyValue(),
mappingManager.prepareAttrsFromLinkedAccount(
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamAnyObjectPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamAnyObjectPushResultHandler.java
index 918c2a5..887968b 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamAnyObjectPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamAnyObjectPushResultHandler.java
@@ -61,7 +61,6 @@ public class StreamAnyObjectPushResultHandler extends DefaultAnyObjectPushResult
profile.getTask().getResource(),
ResourceOperation.CREATE,
provision,
- false,
items,
preparedAttrs);
propagationTask.setConnector(profile.getConnector());
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamGroupPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamGroupPushResultHandler.java
index ad169fd..f3411ab 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamGroupPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamGroupPushResultHandler.java
@@ -61,7 +61,6 @@ public class StreamGroupPushResultHandler extends DefaultGroupPushResultHandler
profile.getTask().getResource(),
ResourceOperation.CREATE,
provision,
- false,
items,
preparedAttrs);
propagationTask.setConnector(profile.getConnector());
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamUserPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamUserPushResultHandler.java
index e2b3446..45a6dcb 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamUserPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamUserPushResultHandler.java
@@ -61,7 +61,6 @@ public class StreamUserPushResultHandler extends DefaultUserPushResultHandler {
profile.getTask().getResource(),
ResourceOperation.CREATE,
provision,
- false,
items,
preparedAttrs);
propagationTask.setConnector(profile.getConnector());
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeleteProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeleteProducer.java
index 7049b8c..46b6165 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeleteProducer.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeleteProducer.java
@@ -74,7 +74,8 @@ public class DeleteProducer extends AbstractProducer {
// information could only be available after uwfAdapter.delete(), which
// will also effectively remove user from db, thus making virtually
// impossible by NotificationManager to fetch required user information
- taskInfos = getPropagationManager().getUserDeleteTasks(
+ taskInfos = getPropagationManager().getDeleteTasks(
+ AnyTypeKind.USER,
key,
propByRes,
propByLinkedAccount,
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
index 6af9440..c501aae 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
@@ -1299,9 +1299,7 @@ public class UserITCase extends AbstractITCase {
userCR.getResources().add(RESOURCE_NAME_REST);
// 1. create
- ProvisioningResult<UserTO> result = userService.create(userCR).readEntity(
- new GenericType<ProvisioningResult<UserTO>>() {
- });
+ ProvisioningResult<UserTO> result = createUser(userCR);
assertEquals(1, result.getPropagationStatuses().size());
assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
assertEquals(RESOURCE_NAME_REST, result.getPropagationStatuses().get(0).getResource());
@@ -1317,9 +1315,7 @@ public class UserITCase extends AbstractITCase {
UserUR userUR = new UserUR.Builder(result.getEntity().getKey()).
plainAttr(new AttrPatch.Builder(new Attr.Builder("surname").value("surname2").build()).build()).
build();
- result = userService.update(userUR).readEntity(
- new GenericType<ProvisioningResult<UserTO>>() {
- });
+ result = updateUser(userUR);
assertEquals(1, result.getPropagationStatuses().size());
assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
assertEquals(RESOURCE_NAME_REST, result.getPropagationStatuses().get(0).getResource());
@@ -1331,9 +1327,7 @@ public class UserITCase extends AbstractITCase {
assertNotNull(response.getEntity());
// 3. delete
- result = userService.delete(result.getEntity().getKey()).readEntity(
- new GenericType<ProvisioningResult<UserTO>>() {
- });
+ result = deleteUser(result.getEntity().getKey());
assertEquals(1, result.getPropagationStatuses().size());
assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
assertEquals(RESOURCE_NAME_REST, result.getPropagationStatuses().get(0).getResource());