Jim Lawhorn created SYNCOPE-1567:
------------------------------------
Summary: Mapping does not allow relationships
Key: SYNCOPE-1567
URL: https://issues.apache.org/jira/browse/SYNCOPE-1567
Project: Syncope
Issue Type: Bug
Components: client, common
Affects Versions: 2.1.5
Reporter: Jim Lawhorn
Attempting to use a relationship in the internal attribute field of a resource
mapping results in an error of "Invalid mapping <relationship> not allowed".
Steps to reproduce using the standalone demo data:
# Confirm that RelationshipType "neighborhood" exists
# Create table in testdb
{code:sql}
CREATE TABLE PUBLIC.PRINTERS (CREATE TABLE PUBLIC.PRINTERS ( USERNAME
VARCHAR(100), MODEL VARCHAR(100), STATUS VARCHAR(100));
{code}
# Edit H2 connector to allow for table and key override
# 3. Create new resource for PRINTERS table based on USER object and map
userId to USERNAME and relationship[neighborhood][PRINTER].model to MODEL.
REST details are below. REST call will fail with 400 error
{code:java}
{
"status": 400,
"type": "InvalidMapping",
"elements": [
"'relationships[neighborhood][PRINTER].model' not allowed"
]
}
{code}
REST payload for [http://localhost:9080/syncope/rest/resources/Printers]
{code:java}
{
"key": "Printers",
"connector": "5aa5b8be-7521-481a-9651-c557aea078c1",
"connectorDisplayName": "H2",
"orgUnit": null,
"propagationPriority": null,
"randomPwdIfNotProvided": false,
"enforceMandatoryCondition": false,
"createTraceLevel": "ALL",
"updateTraceLevel": "ALL",
"deleteTraceLevel": "ALL",
"provisioningTraceLevel": "ALL",
"passwordPolicy": null,
"accountPolicy": null,
"pullPolicy": null,
"pushPolicy": null,
"overrideCapabilities": false,
"provisions": [
{
"key": "2c090bbd-41e6-4b23-890b-bd41e6fb2363",
"anyType": "USER",
"objectClass": "__ACCOUNT__",
"syncToken": null,
"ignoreCaseMatch": false,
"uidOnCreate": null,
"mapping": {
"connObjectLink": null,
"connObjectKeyItem": {
"key": "b9ee5e12-ff29-4935-ae5e-12ff294935c7",
"intAttrName": "userId",
"extAttrName": "USERNAME",
"connObjectKey": true,
"password": false,
"mandatoryCondition": "true",
"purpose": "PROPAGATION",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
"items": [
{
"key": "b9ee5e12-ff29-4935-ae5e-12ff294935c7",
"intAttrName": "userId",
"extAttrName": "USERNAME",
"connObjectKey": true,
"password": false,
"mandatoryCondition": "true",
"purpose": "PROPAGATION",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"key": "5c1f2776-af5f-45aa-9f27-76af5f95aa9d",
"intAttrName": "relationships[neighborhood][PRINTER].model",
"extAttrName": "MODEL",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "PROPAGATION",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
}
],
"linkingItems": []
},
"auxClasses": [],
"virSchemas": []
}
],
"confOverride": [
{
"schema": {
"name": "table",
"displayName": "Table",
"helpMessage": "Enter the name of the table in the database that
contains the accounts.",
"type": "java.lang.String",
"required": true,
"order": 7,
"confidential": false,
"defaultValues": [
""
]
},
"overridable": true,
"values": [
"PRINTERS"
]
},
{
"schema": {
"name": "keyColumn",
"displayName": "Key Column",
"helpMessage": "This mandatory column value will be used as the unique
identifier for rows in the table.",
"type": "java.lang.String",
"required": true,
"order": 8,
"confidential": false,
"defaultValues": [
""
]
},
"overridable": true,
"values": [
"USERNAME"
]
}
],
"capabilitiesOverride": [
"AUTHENTICATE",
"CREATE",
"UPDATE",
"DELETE",
"SEARCH",
"SYNC"
],
"propagationActions": []
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)