Skip to content

Commit

Permalink
Add a test for explicit type inheritance
Browse files Browse the repository at this point in the history
Also adding TestResourceTemplateMerge to provisioning test suite.
And fixing minor bugs related to attribute/type documentation property.
  • Loading branch information
mederly committed May 12, 2022
1 parent 190f7c1 commit 2632227
Show file tree
Hide file tree
Showing 13 changed files with 154 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -400,11 +400,6 @@ public String getHelp() {
return null;
}

@Override
public String getDocumentation() {
return null;
}

@Override
public String getDocumentationPreview() {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,9 @@ public String getHelp() {

@Override
public String getDocumentation() {
if (customizationBean.getDocumentation() != null) {
return customizationBean.getDocumentation();
}
return rawDefinition.getDocumentation();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,12 @@ public String getDebugDumpClassName() {

@Override
public String getDescription() {
return null; // no information in raw object class
return null; // no information in raw object class
}

@Override
public String getDocumentation() {
return null; // no information in raw object class
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,11 @@ public String getDescription() {
return definitionBean.getDescription();
}

@Override
public String getDocumentation() {
return definitionBean.getDocumentation();
}

@Override
public boolean isDefaultForObjectClass() {
// Note that this value cannot be defined on a parent.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ public class TestResourceTemplateMerge extends AbstractProvisioningIntegrationTe
TEST_DIR, "resource-object-types-1.xml", RESOURCE_OBJECT_TYPES_1_RAW.oid,
"object-types-1", DummyResourceContoller::extendSchemaPirate);

private static final DummyTestResource RESOURCE_EXPLICIT_TYPE_INHERITANCE = new DummyTestResource(
TEST_DIR, "resource-explicit-type-inheritance.xml", "eb2f35d9-8147-413c-bfe0-f0890c14e702",
"explicit-type-inheritance", DummyResourceContoller::extendSchemaPirate);

@Override
public void initSystem(Task initTask, OperationResult initResult) throws Exception {
super.initSystem(initTask, initResult);
Expand Down Expand Up @@ -511,6 +515,60 @@ public void test210ObjectTypesFull() throws Exception {
.containsExactlyInAnyOrder(CLOCKWORK, BEFORE_CORRELATION);
}

/**
* Tests explicit type inheritance (in a single resource).
*/
@Test
public void test220ExplicitTypeInheritance() throws Exception {
Task task = getTestTask();
OperationResult result = task.getResult();

when("resource is initialized");
initDummyResource(RESOURCE_EXPLICIT_TYPE_INHERITANCE, result);

then("resource is successfully tested");
testResourceAssertSuccess(RESOURCE_EXPLICIT_TYPE_INHERITANCE, task); // updates the object

and("schema can be retrieved");
PrismObject<ResourceType> current =
beans.resourceManager.getResource(RESOURCE_EXPLICIT_TYPE_INHERITANCE.oid, null, task, result);
ResourceSchema schema = ResourceSchemaFactory.getCompleteSchema(current);

displayDumpable("schema", schema);

and("there is a definition of account/employee");
ResourceObjectTypeDefinition employeeDef =
schema.findObjectTypeDefinitionRequired(ShadowKindType.ACCOUNT, "employee");

and("drink is updated");
ResourceAttributeDefinition<?> employeeDrinkDef =
employeeDef.findAttributeDefinitionRequired(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_DRINK_QNAME);
PropertyLimitations drinkModelLimitations = employeeDrinkDef.getLimitations(LayerType.MODEL);
assertThat(drinkModelLimitations.canRead()).as("read access to drink").isTrue();
assertThat(drinkModelLimitations.canAdd()).as("add access to drink").isFalse();
assertThat(drinkModelLimitations.canModify()).as("modify access to drink").isTrue();
assertThat(employeeDrinkDef.isTolerant()).as("drink 'tolerant' flag").isFalse(); // overridden in this type

and("there is a definition of account/admin");
ResourceObjectTypeDefinition adminDef =
schema.findObjectTypeDefinitionRequired(ShadowKindType.ACCOUNT, "admin");

and("drink is updated");
ResourceAttributeDefinition<?> adminDrinkDef =
adminDef.findAttributeDefinitionRequired(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_DRINK_QNAME);
assertThat(adminDrinkDef.isTolerant()).as("drink 'tolerant' flag").isTrue(); // default
assertThat(adminDrinkDef.isIgnored(LayerType.MODEL)).as("drink 'ignored' flag").isTrue(); // overridden
assertThat(adminDrinkDef.getDocumentation()).isEqualTo("Administrators do not drink!");

and("there is no definition of account/general");
ResourceObjectTypeDefinition generalDef =
schema.findObjectTypeDefinition(ShadowKindType.ACCOUNT, "general");
assertThat(generalDef).as("definition of account/general").isNull();

List<? extends ResourceObjectTypeDefinition> accountDefs = schema.getObjectTypeDefinitions(ShadowKindType.ACCOUNT);
assertThat(accountDefs).as("account definitions").hasSize(2);
}

/** Hacked: gets the value of (assuming) single property value filter in the pattern. */
private String getFilterValue(ResourceObjectPattern pattern) {
//noinspection unchecked
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<super>
<resourceRef oid="e17dfe38-727f-41b6-ab1c-9106c0bb046d"/>
</super>
<connectorConfiguration >
<connectorConfiguration>
<icfc:configurationProperties>
<!-- adding new value -->
<icfi:supportValidity>true</icfi:supportValidity>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<name>additional-connectors-template</name>
<abstract>true</abstract>
<connectorRef oid="provided-by-test-code" type="ConnectorType"/>
<connectorConfiguration >
<connectorConfiguration>
<icfc:configurationProperties>
<icfi:instanceId>main</icfi:instanceId>
</icfc:configurationProperties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<super>
<resourceRef oid="2d1bbd38-8292-4895-af07-15de1ae423ec"/>
</super>
<connectorConfiguration >
<connectorConfiguration>
<icfc:configurationProperties>
<!-- overriding existing value -->
<icfi:supportValidity>false</icfi:supportValidity>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<super>
<resourceRef oid="b6f77fb9-8bdf-42de-b7d4-639c77fa6805"/> <!-- Derives from Basic 1 -->
</super>
<connectorConfiguration >
<connectorConfiguration>
<icfc:configurationProperties>
<!-- overriding existing value -->
<icfi:uselessString>False!</icfi:uselessString>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<name>basic-template</name>
<abstract>true</abstract>
<connectorRef oid="provided-by-test-code" type="ConnectorType"/>
<connectorConfiguration >
<connectorConfiguration>
<icfc:configurationProperties>
<icfi:instanceId>basic</icfi:instanceId>
<icfi:uselessString>Shiver me timbers!</icfi:uselessString>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2018 Evolveum and contributors
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->

<resource oid="eb2f35d9-8147-413c-bfe0-f0890c14e702"
xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"
xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3"
xmlns:icfi="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/bundle/com.evolveum.icf.dummy/com.evolveum.icf.dummy.connector.DummyConnector"
xmlns:icfc="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3">
<name>explicit-type-inheritance</name>
<connectorRef oid="provided-by-test-code" type="ConnectorType"/>
<connectorConfiguration>
<icfc:configurationProperties>
<icfi:instanceId>explicit-type-inheritance</icfi:instanceId>
</icfc:configurationProperties>
</connectorConfiguration>
<schemaHandling>
<objectType>
<kind>account</kind>
<intent>employee</intent>
<super>
<kind>account</kind>
<intent>general</intent>
</super>
<attribute> <!-- Existing attribute -->
<ref>ri:drink</ref>
<tolerant>false</tolerant> <!-- Overriding the default value -->
</attribute>
</objectType>
<objectType>
<kind>account</kind>
<intent>admin</intent>
<super>
<kind>account</kind>
<intent>general</intent>
</super>
<attribute> <!-- Existing attribute -->
<ref>ri:drink</ref>
<documentation>Administrators do not drink!</documentation>
<limitations>
<processing>ignore</processing>
</limitations>
</attribute>
</objectType>
<objectType>
<kind>account</kind>
<intent>general</intent>
<abstract>true</abstract>
<objectClass>ri:AccountObjectClass</objectClass>
<attribute>
<ref>icfs:name</ref>
<displayName>Username</displayName>
</attribute>
<attribute>
<ref>ri:drink</ref>
<limitations>
<access>
<read>true</read>
<add>false</add>
<modify>true</modify>
</access>
</limitations>
</attribute>
</objectType>
</schemaHandling>
</resource>
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<super>
<resourceRef oid="873a5483-ded8-4607-ac06-ea5ae92ce755"/>
</super>
<connectorConfiguration >
<connectorConfiguration>
<icfc:configurationProperties>
<!-- completing the properties -->
<icfi:instanceId>object-types-1</icfi:instanceId>
Expand Down
5 changes: 5 additions & 0 deletions provisioning/provisioning-impl/testng-integration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,9 @@
<class name="com.evolveum.midpoint.provisioning.impl.async.provisioning.TestAsyncProvisioningArtemisCore" />
</classes>
</test>
<test name="provisioning-service-misc" parallel="false" verbose="10">
<classes>
<class name="com.evolveum.midpoint.provisioning.impl.resources.TestResourceTemplateMerge" />
</classes>
</test>
</suite>

0 comments on commit 2632227

Please sign in to comment.