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)

Reply via email to