Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Oct 10, 2019
2 parents 8ee54b1 + 6c6a633 commit 739aa85
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 26 deletions.
8 changes: 4 additions & 4 deletions infra/schema/src/main/schemadoc/templates/items-inc.vm
Expand Up @@ -32,7 +32,7 @@

#if($modulo == 0)
<tr class="rowColor">
<td class="colFirst"><a href="#item-$itemDefinition.Name.LocalPart">$itemDefinition.Name.LocalPart</a></td>
<td class="colFirst"><a href="#item-$itemDefinition.ItemName.LocalPart">$itemDefinition.ItemName.LocalPart</a></td>
<td class="colOne">
$itemDefinition.DocClassName<br/>
#if ($typeUrl)
Expand All @@ -48,7 +48,7 @@
</tr>
#else
<tr class="altColor">
<td class="colFirst"><a href="#item-$itemDefinition.Name.LocalPart">$itemDefinition.Name.LocalPart</a></td>
<td class="colFirst"><a href="#item-$itemDefinition.ItemName.LocalPart">$itemDefinition.ItemName.LocalPart</a></td>
<td class="colOne">
$itemDefinition.DocClassName<br/>
#if ($typeUrl)
Expand All @@ -75,11 +75,11 @@
<h3>Items</h3>

#foreach($itemDefinition in $definition.getDefinitions())
<a name="$itemDefinition.Name.LocalPart"></a>
<a name="$itemDefinition.ItemName.LocalPart"></a>
<ul class="blockList">
<li class="blockList">
<h4>
<a id="item-$itemDefinition.Name.LocalPart">$itemDefinition.Name.LocalPart</a>
<a id="item-$itemDefinition.ItemName.LocalPart">$itemDefinition.ItemName.LocalPart</a>
</h4>
<p class="block">Flags: $!itemDefinition.debugFlags()</p>
<p class="block">Multiplicity: $itemDefinition.debugMultiplicity()</p>
Expand Down
Expand Up @@ -159,7 +159,9 @@ public static AttributesToReturn createAttributesToReturn(ProvisioningContext ct
if (fetchStrategy == AttributeFetchStrategyType.EXPLICIT) {
explicit.add(attributeDefinition);
} else if (hasMinimal && (fetchStrategy != AttributeFetchStrategyType.MINIMAL ||
SelectorOptions.hasToLoadPath(ctx.getPrismContext().toUniformPath(attributeDefinition.getItemName()), ctx.getGetOperationOptions(), false))) {
(SelectorOptions.hasToLoadPath(ctx.getPrismContext().path(ShadowType.F_ATTRIBUTES, attributeDefinition.getItemName()), ctx.getGetOperationOptions(), false) ||
// Following clause is legacy (MID-5838)
SelectorOptions.hasToLoadPath(ctx.getPrismContext().toUniformPath(attributeDefinition.getItemName()), ctx.getGetOperationOptions(), false)))) {
explicit.add(attributeDefinition);
}
}
Expand Down
Expand Up @@ -12,6 +12,7 @@

import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.provisioning.impl.AbstractProvisioningIntegrationTest;
import org.springframework.beans.factory.annotation.Autowired;

import com.evolveum.midpoint.prism.PrismObject;
Expand All @@ -38,7 +39,7 @@
* @author semancik
*
*/
public abstract class AbstractOpenDjTest extends AbstractIntegrationTest {
public abstract class AbstractOpenDjTest extends AbstractProvisioningIntegrationTest {

protected static final File TEST_DIR = new File("src/test/resources/opendj");

Expand Down
Expand Up @@ -2443,7 +2443,7 @@ public void test400AddGroupSwashbucklers() throws Exception {
OperationResult result = task.getResult();

ShadowType object = parseObjectType(GROUP_SWASHBUCKLERS_FILE, ShadowType.class);
IntegrationTestTools.display("Adding object", object);
display("Adding object", object);

// WHEN
displayWhen(TEST_NAME);
Expand All @@ -2469,7 +2469,7 @@ public void test400AddGroupSwashbucklers() throws Exception {

Entry ldapEntry = openDJController.searchAndAssertByEntryUuid(uid);
display("LDAP group", ldapEntry);
assertNotNull("No LDAP group entry");
assertNotNull("No LDAP group entry", ldapEntry);
String groupDn = ldapEntry.getDN().toString();
assertEquals("Wrong group DN", dnMatchingRule.normalize(GROUP_SWASHBUCKLERS_DN), dnMatchingRule.normalize(groupDn));

Expand All @@ -2488,26 +2488,34 @@ public void test402AddAccountMorganWithAssociation() throws Exception {
IntegrationTestTools.display("Adding object", object);

// WHEN
displayWhen(TEST_NAME);
String addedObjectOid = provisioningService.addObject(object.asPrismObject(), null, null, task, result);

// THEN
displayThen(TEST_NAME);
assertEquals(ACCOUNT_MORGAN_OID, addedObjectOid);

ShadowType shadowType = getShadowRepo(ACCOUNT_MORGAN_OID).asObjectable();
PrismAsserts.assertEqualsPolyString("Wrong ICF name (repo)", ACCOUNT_MORGAN_DN, shadowType.getName());

ShadowType provisioningShadowType = provisioningService.getObject(ShadowType.class, ACCOUNT_MORGAN_OID,
null, taskManager.createTaskInstance(), result).asObjectable();
PrismAsserts.assertEqualsPolyString("Wrong ICF name (provisioning)",
ACCOUNT_MORGAN_DN, provisioningShadowType.getName());

String uid = ShadowUtil.getSingleStringAttributeValue(shadowType, getPrimaryIdentifierQName());
assertRepoShadow(ACCOUNT_MORGAN_OID)
.assertName(ACCOUNT_MORGAN_DN);

ShadowAsserter<Void> provisioningShadowAsserter = assertShadowProvisioning(ACCOUNT_MORGAN_OID)
.assertName(ACCOUNT_MORGAN_DN)
.associations()
.assertSize(1)
.association(ASSOCIATION_GROUP_NAME)
.assertShadowOids(GROUP_SWASHBUCKLERS_OID)
.end()
.end();

String uid = provisioningShadowAsserter
.attributes()
.getValue(getPrimaryIdentifierQName());
assertNotNull(uid);

List<ShadowAssociationType> associations = provisioningShadowType.getAssociation();
assertEquals("Unexpected number of associations", 1, associations.size());
ShadowAssociationType association = associations.get(0);
assertEquals("Wrong group OID in association", GROUP_SWASHBUCKLERS_OID, association.getShadowRef().getOid());
// List<ShadowAssociationType> associations = provisioningShadowType.getAssociation();
// assertEquals("Unexpected number of associations", 1, associations.size());
// ShadowAssociationType association = associations.get(0);
// assertEquals("Wrong group OID in association", GROUP_SWASHBUCKLERS_OID, association.getShadowRef().getOid());

Entry accountEntry = openDJController.searchAndAssertByEntryUuid(uid);
display("LDAP account", accountEntry);
Expand Down
Expand Up @@ -16,7 +16,7 @@
<resourceRef oid="ef2bc95b-76e0-59e2-86d6-3d4f02d3ffff" />
<objectClass>ri:groupOfUniqueNames</objectClass>
<kind>entitlement</kind>
<intent>group</intent>
<intent>ldapGroup</intent>
<attributes>
<ri:dn>cn=CorsairS,ou=gROUPs,dc=example,dc=COM</ri:dn>
<ri:cn>corsairs</ri:cn>
Expand Down
Expand Up @@ -16,7 +16,7 @@
<resourceRef oid="ef2bc95b-76e0-59e2-86d6-3d4f02d3ffff" />
<objectClass>ri:groupOfUniqueNames</objectClass>
<kind>entitlement</kind>
<intent>group</intent>
<intent>ldapGroup</intent>
<attributes>
<ri:dn>cn=SwashBucklers,ou=GrOuPs,dc=example,dc=COM</ri:dn>
<ri:cn>swashbucklers</ri:cn>
Expand Down
Expand Up @@ -26,6 +26,7 @@
import com.evolveum.midpoint.test.DummyResourceContoller;
import com.evolveum.midpoint.test.util.MidPointTestConstants;
import com.evolveum.midpoint.test.util.TestUtil;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
Expand Down Expand Up @@ -110,6 +111,22 @@ public void test100GetLargeGroup(ITestContext ctx) throws Exception {
group1.addMember(String.format("member-%09d", i));
}

Collection<SelectorOptions<GetOperationOptions>> options = schemaHelper.getOperationOptionsBuilder()
// MID-5838
.item(ShadowType.F_ATTRIBUTES, ATTR_MEMBERS).retrieve()
.build();
assert100LargeGroupSearch(ctx, options, MEMBERS);

// Legacy behavior (MID-5838)
Collection<SelectorOptions<GetOperationOptions>> badOptions = schemaHelper.getOperationOptionsBuilder()
.item(/*ShadowType.F_ATTRIBUTES,*/ ATTR_MEMBERS).retrieve()
.build();
assert100LargeGroupSearch(ctx, badOptions, MEMBERS);
}

private void assert100LargeGroupSearch(ITestContext ctx, Collection<SelectorOptions<GetOperationOptions>> options, final int MEMBERS) throws CommunicationException, ObjectNotFoundException, SchemaException, SecurityViolationException, ConfigurationException, ExpressionEvaluationException {
Task task = getTask(ctx);
OperationResult result = getResult(ctx);
ResourceAttributeDefinition<Object> nameDefinition = libraryMidpointFunctions
.getAttributeDefinition(resourceDummy, dummyResourceCtl.getGroupObjectClass(), SchemaConstants.ICFS_NAME);
ObjectQuery query = prismContext.queryFor(ShadowType.class)
Expand All @@ -118,9 +135,7 @@ public void test100GetLargeGroup(ITestContext ctx) throws Exception {
.and().item(ItemPath.create(ShadowType.F_ATTRIBUTES, SchemaConstants.ICFS_NAME), nameDefinition)
.eq("group1")
.build();
Collection<SelectorOptions<GetOperationOptions>> options = schemaHelper.getOperationOptionsBuilder()
.item(/*ShadowType.F_ATTRIBUTES, */ATTR_MEMBERS).retrieve()
.build();

SearchResultList<PrismObject<ShadowType>> groups = provisioningService
.searchObjects(ShadowType.class, query, options, task, result);

Expand Down

0 comments on commit 739aa85

Please sign in to comment.