use of org.apache.syncope.common.lib.to.GroupTO in project syncope by apache.
the class AnyOperations method patch.
public static GroupTO patch(final GroupTO groupTO, final GroupPatch groupPatch) {
GroupTO result = SerializationUtils.clone(groupTO);
patch(groupTO, groupPatch, result);
if (groupPatch.getName() != null) {
result.setName(groupPatch.getName().getValue());
}
if (groupPatch.getUserOwner() != null) {
result.setGroupOwner(groupPatch.getUserOwner().getValue());
}
if (groupPatch.getGroupOwner() != null) {
result.setGroupOwner(groupPatch.getGroupOwner().getValue());
}
result.setUDynMembershipCond(groupPatch.getUDynMembershipCond());
result.getADynMembershipConds().clear();
result.getADynMembershipConds().putAll(groupPatch.getADynMembershipConds());
return result;
}
use of org.apache.syncope.common.lib.to.GroupTO in project syncope by apache.
the class DefaultGroupWorkflowAdapter method doUpdate.
@Override
protected WorkflowResult<GroupPatch> doUpdate(final Group group, final GroupPatch groupPatch) {
GroupTO original = dataBinder.getGroupTO(group, true);
PropagationByResource propByRes = dataBinder.update(group, groupPatch);
Set<AttrTO> virAttrs = groupPatch.getVirAttrs();
GroupTO updated = dataBinder.getGroupTO(groupDAO.save(group), true);
GroupPatch effectivePatch = AnyOperations.diff(updated, original, false);
effectivePatch.getVirAttrs().clear();
effectivePatch.getVirAttrs().addAll(virAttrs);
return new WorkflowResult<>(effectivePatch, propByRes, "update");
}
use of org.apache.syncope.common.lib.to.GroupTO in project syncope by apache.
the class UserIssuesITCase method issueSYNCOPE1206.
@Test
public void issueSYNCOPE1206() {
// 1. create group with dynamic user condition 'cool==true'
GroupTO dynGroup = GroupITCase.getSampleTO("syncope1206");
dynGroup.setUDynMembershipCond(SyncopeClient.getUserSearchConditionBuilder().is("cool").equalTo("true").query());
dynGroup = createGroup(dynGroup).getEntity();
assertNotNull(dynGroup);
assertTrue(dynGroup.getResources().contains(RESOURCE_NAME_LDAP));
// 2. create user (no value for cool, no dynamic membership, no propagation to LDAP)
UserTO userTO = UserITCase.getUniqueSampleTO("syncope1206@apache.org");
userTO.getResources().clear();
ProvisioningResult<UserTO> result = createUser(userTO);
assertTrue(result.getPropagationStatuses().isEmpty());
// 3. update user to match the dynamic condition: expect propagation to LDAP
UserPatch userPatch = new UserPatch();
userPatch.setKey(result.getEntity().getKey());
userPatch.getPlainAttrs().add(new AttrPatch.Builder().attrTO(attrTO("cool", "true")).build());
result = updateUser(userPatch);
assertEquals(1, result.getPropagationStatuses().size());
assertEquals(RESOURCE_NAME_LDAP, result.getPropagationStatuses().get(0).getResource());
// 4. update again user to not match the dynamic condition any more: expect propagation to LDAP
userPatch = new UserPatch();
userPatch.setKey(result.getEntity().getKey());
userPatch.getPlainAttrs().add(new AttrPatch.Builder().attrTO(attrTO("cool", "false")).build());
result = updateUser(userPatch);
assertEquals(1, result.getPropagationStatuses().size());
assertEquals(RESOURCE_NAME_LDAP, result.getPropagationStatuses().get(0).getResource());
}
use of org.apache.syncope.common.lib.to.GroupTO in project syncope by apache.
the class UserIssuesITCase method issueSYNCOPE1099.
@Test
public void issueSYNCOPE1099() {
// 1. create group with dynamic condition and resource
GroupTO group = GroupITCase.getSampleTO("syncope1099G");
group.getResources().clear();
group.getResources().add(RESOURCE_NAME_TESTDB);
group.setUDynMembershipCond("firstname==issueSYNCOPE1099");
group = createGroup(group).getEntity();
assertNotNull(group);
// 2. create user matching the condition above
UserTO user = UserITCase.getUniqueSampleTO("syncope1099U@apache.org");
user.getPlainAttr("firstname").get().getValues().set(0, "issueSYNCOPE1099");
ProvisioningResult<UserTO> created = createUser(user);
assertNotNull(created);
// 3. verify that dynamic membership is set and that resource is consequently assigned
user = created.getEntity();
String groupKey = group.getKey();
assertTrue(user.getDynMemberships().stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
assertTrue(user.getResources().contains(RESOURCE_NAME_TESTDB));
// 4. verify that propagation happened towards the resource of the dynamic group
assertFalse(created.getPropagationStatuses().isEmpty());
assertEquals(RESOURCE_NAME_TESTDB, created.getPropagationStatuses().get(0).getResource());
}
use of org.apache.syncope.common.lib.to.GroupTO in project syncope by apache.
the class UserIssuesITCase method issueSYNCOPE686.
@Test
public void issueSYNCOPE686() {
// 1. read configured cipher algorithm in order to be able to restore it at the end of test
AttrTO pwdCipherAlgo = configurationService.get("password.cipher.algorithm");
String origpwdCipherAlgo = pwdCipherAlgo.getValues().get(0);
// 2. set AES password cipher algorithm
pwdCipherAlgo.getValues().set(0, "AES");
configurationService.set(pwdCipherAlgo);
try {
// 3. create group with LDAP resource assigned
GroupTO group = GroupITCase.getBasicSampleTO("syncope686");
group.getResources().add(RESOURCE_NAME_LDAP);
group = createGroup(group).getEntity();
assertNotNull(group);
// 4. create user with no resources
UserTO userTO = UserITCase.getUniqueSampleTO("syncope686@apache.org");
userTO.getResources().clear();
userTO = createUser(userTO).getEntity();
assertNotNull(userTO);
// 5. update user with the new group, and don't provide any password
UserPatch userPatch = new UserPatch();
userPatch.setKey(userTO.getKey());
userPatch.getMemberships().add(new MembershipPatch.Builder().operation(PatchOperation.ADD_REPLACE).group(group.getKey()).build());
ProvisioningResult<UserTO> result = updateUser(userPatch);
assertNotNull(result);
// 5. verify that propagation was successful
List<PropagationStatus> props = result.getPropagationStatuses();
assertNotNull(props);
assertEquals(1, props.size());
PropagationStatus prop = props.iterator().next();
assertNotNull(prop);
assertEquals(RESOURCE_NAME_LDAP, prop.getResource());
assertEquals(PropagationTaskExecStatus.SUCCESS, prop.getStatus());
} finally {
// restore initial cipher algorithm
pwdCipherAlgo.getValues().set(0, origpwdCipherAlgo);
configurationService.set(pwdCipherAlgo);
}
}
Aggregations