Attached Files | issue44433.test.diff [^] (10,343 bytes) 2020-06-25 10:18 [Show Content] [Hide Content]diff --git a/src-db/database/sourcedata/OBEI_ENTITY_MAPPING.xml b/src-db/database/sourcedata/OBEI_ENTITY_MAPPING.xml
--- a/src-db/database/sourcedata/OBEI_ENTITY_MAPPING.xml
+++ b/src-db/database/sourcedata/OBEI_ENTITY_MAPPING.xml
@@ -128,6 +128,22 @@
<!--630B8654201F4805BA943EAF6012C17D--> <EM_SAPECC_HAS_WRAPPER_SEGMENT><![CDATA[Y]]></EM_SAPECC_HAS_WRAPPER_SEGMENT>
<!--630B8654201F4805BA943EAF6012C17D--></OBEI_ENTITY_MAPPING>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--><OBEI_ENTITY_MAPPING>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <OBEI_ENTITY_MAPPING_ID><![CDATA[6C3C50A7E8614FB9A006857B5E71C0C4]]></OBEI_ENTITY_MAPPING_ID>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <AD_MODULE_ID><![CDATA[3683A9533C3B4C86A7B32854885875B8]]></AD_MODULE_ID>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <SYSTEM_TYPE><![CDATA[OBEITST_TEST]]></SYSTEM_TYPE>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <MAPPED_ENTITY><![CDATA[UserRoles]]></MAPPED_ENTITY>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <MAPPING_ENTITY><![CDATA[ADUserRoles]]></MAPPING_ENTITY>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <INTEGRATION_DIRECTION><![CDATA[ExternalSystemToOb]]></INTEGRATION_DIRECTION>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <ISFIRSTLEVEL><![CDATA[Y]]></ISFIRSTLEVEL>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <ISQUERYBASEOBOBJECT><![CDATA[N]]></ISQUERYBASEOBOBJECT>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <INTEGRATION_API_TYPE><![CDATA[ManualBOB]]></INTEGRATION_API_TYPE>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--> <EM_SAPECC_HAS_WRAPPER_SEGMENT><![CDATA[Y]]></EM_SAPECC_HAS_WRAPPER_SEGMENT>
+<!--6C3C50A7E8614FB9A006857B5E71C0C4--></OBEI_ENTITY_MAPPING>
+
<!--79AC705A56C8457F976551D5706B5969--><OBEI_ENTITY_MAPPING>
<!--79AC705A56C8457F976551D5706B5969--> <OBEI_ENTITY_MAPPING_ID><![CDATA[79AC705A56C8457F976551D5706B5969]]></OBEI_ENTITY_MAPPING_ID>
<!--79AC705A56C8457F976551D5706B5969--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/OBEI_PROP_MAP_INSTANCE.xml b/src-db/database/sourcedata/OBEI_PROP_MAP_INSTANCE.xml
--- a/src-db/database/sourcedata/OBEI_PROP_MAP_INSTANCE.xml
+++ b/src-db/database/sourcedata/OBEI_PROP_MAP_INSTANCE.xml
@@ -604,6 +604,21 @@
<!--79488F8E0BF24711ABD2F33E18D13B5C--> <IDENTIFIES_UNIVOCALLY><![CDATA[Y]]></IDENTIFIES_UNIVOCALLY>
<!--79488F8E0BF24711ABD2F33E18D13B5C--></OBEI_PROP_MAP_INSTANCE>
+<!--7B02AB50238A45A99F7CE63966F462A9--><OBEI_PROP_MAP_INSTANCE>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <OBEI_PROP_MAP_INSTANCE_ID><![CDATA[7B02AB50238A45A99F7CE63966F462A9]]></OBEI_PROP_MAP_INSTANCE_ID>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <AD_MODULE_ID><![CDATA[3683A9533C3B4C86A7B32854885875B8]]></AD_MODULE_ID>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <OBEI_PROPERTY_MAPPING_CLASS_ID><![CDATA[56FE294AE2314727A9313EE50258657E]]></OBEI_PROPERTY_MAPPING_CLASS_ID>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <OBEI_ENTITY_MAPPING_ID><![CDATA[6C3C50A7E8614FB9A006857B5E71C0C4]]></OBEI_ENTITY_MAPPING_ID>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <SEQNO><![CDATA[20]]></SEQNO>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <ACCEPT_NULL_VALUES><![CDATA[N]]></ACCEPT_NULL_VALUES>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <MAPPING_NAME><![CDATA[Role]]></MAPPING_NAME>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <PROPERTY_PATH><![CDATA[role.name]]></PROPERTY_PATH>
+<!--7B02AB50238A45A99F7CE63966F462A9--> <IDENTIFIES_UNIVOCALLY><![CDATA[Y]]></IDENTIFIES_UNIVOCALLY>
+<!--7B02AB50238A45A99F7CE63966F462A9--></OBEI_PROP_MAP_INSTANCE>
+
<!--7B9D3E96D3774CAE9A8D1B3A8EFE82FA--><OBEI_PROP_MAP_INSTANCE>
<!--7B9D3E96D3774CAE9A8D1B3A8EFE82FA--> <OBEI_PROP_MAP_INSTANCE_ID><![CDATA[7B9D3E96D3774CAE9A8D1B3A8EFE82FA]]></OBEI_PROP_MAP_INSTANCE_ID>
<!--7B9D3E96D3774CAE9A8D1B3A8EFE82FA--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1302,6 +1317,21 @@
<!--FB8438296ADF44D7A52A84B790630128--> <IDENTIFIES_UNIVOCALLY><![CDATA[N]]></IDENTIFIES_UNIVOCALLY>
<!--FB8438296ADF44D7A52A84B790630128--></OBEI_PROP_MAP_INSTANCE>
+<!--FDA3DCC6A863473594B96F16AC1190B7--><OBEI_PROP_MAP_INSTANCE>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <OBEI_PROP_MAP_INSTANCE_ID><![CDATA[FDA3DCC6A863473594B96F16AC1190B7]]></OBEI_PROP_MAP_INSTANCE_ID>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <AD_MODULE_ID><![CDATA[3683A9533C3B4C86A7B32854885875B8]]></AD_MODULE_ID>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <OBEI_PROPERTY_MAPPING_CLASS_ID><![CDATA[56FE294AE2314727A9313EE50258657E]]></OBEI_PROPERTY_MAPPING_CLASS_ID>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <OBEI_ENTITY_MAPPING_ID><![CDATA[6C3C50A7E8614FB9A006857B5E71C0C4]]></OBEI_ENTITY_MAPPING_ID>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <SEQNO><![CDATA[10]]></SEQNO>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <ACCEPT_NULL_VALUES><![CDATA[N]]></ACCEPT_NULL_VALUES>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <MAPPING_NAME><![CDATA[User]]></MAPPING_NAME>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <PROPERTY_PATH><![CDATA[userContact.name]]></PROPERTY_PATH>
+<!--FDA3DCC6A863473594B96F16AC1190B7--> <IDENTIFIES_UNIVOCALLY><![CDATA[Y]]></IDENTIFIES_UNIVOCALLY>
+<!--FDA3DCC6A863473594B96F16AC1190B7--></OBEI_PROP_MAP_INSTANCE>
+
<!--FDE641475E1848298C8503117F3EC3FC--><OBEI_PROP_MAP_INSTANCE>
<!--FDE641475E1848298C8503117F3EC3FC--> <OBEI_PROP_MAP_INSTANCE_ID><![CDATA[FDE641475E1848298C8503117F3EC3FC]]></OBEI_PROP_MAP_INSTANCE_ID>
<!--FDE641475E1848298C8503117F3EC3FC--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-test/org/openbravo/service/external/integration/test/TestConstants.java b/src-test/org/openbravo/service/external/integration/test/TestConstants.java
--- a/src-test/org/openbravo/service/external/integration/test/TestConstants.java
+++ b/src-test/org/openbravo/service/external/integration/test/TestConstants.java
@@ -30,6 +30,7 @@
public static final String IMPORT_COUNTRY_ENTITY_MAPPING_ID = "1B9B0EC68F334C1EB6F4155AA2499ED5";
public static final String IMPORT_BP_ENTITY_MAPPING_ID = "564105CDF42B4D7B9A7066148A79E073";
+ public static final String IMPORT_USER_ROLES_ENTITY_MAPPING_ID = "6C3C50A7E8614FB9A006857B5E71C0C4";
public static final String IMPORT_PRICELIST_ENTITY_MAPPING_ID = "18449AC7EB934AD39FF406F639BF30FC";
public static final String IMPORT_COUNTRY_ENTITY_WITH_EXTENSIONS_MAPPING_ID = "4FD34B1171CF4EC8AB3AEFCE55F05AB0";
public static final String WRONG_IMPORT_ENTITY_MAPPING_ID = "DFF92D56616E4E12A61A2288CC104E3F";
diff --git a/src-test/org/openbravo/service/external/integration/test/_import/UserRolesImportTest.java b/src-test/org/openbravo/service/external/integration/test/_import/UserRolesImportTest.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/service/external/integration/test/_import/UserRolesImportTest.java
@@ -0,0 +1,78 @@
+/*
+ ************************************************************************************
+ * Copyright (C) 2020 Openbravo S.L.U.
+ * Licensed under the Openbravo Commercial License version 1.0
+ * You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
+ * or in the legal folder of this module distribution.
+ ************************************************************************************
+ */
+package org.openbravo.service.external.integration.test._import;
+
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+import static org.openbravo.service.external.integration.test.TestConstants.IMPORT_USER_ROLES_ENTITY_MAPPING_ID;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.service.OBDal;
+import org.openbravo.model.ad.access.UserRoles;
+import org.openbravo.service.external.integration.SynchronizableBusinessObject;
+import org.openbravo.test.base.TestConstants;
+
+/**
+ * Tests some special cases when creating business objects through the import infrastructure. For
+ * example, checks that it is possible to use a multi-path property (i.e. role.name) as "identifies
+ * record univocally".
+ */
+public class UserRolesImportTest extends BaseImportTest {
+
+ @Override
+ protected String getEntityMappingId() {
+ return IMPORT_USER_ROLES_ENTITY_MAPPING_ID;
+ }
+
+ @Before
+ public void setOBContext() {
+ OBContext.setOBContext(TestConstants.Users.OPENBRAVO, TestConstants.Roles.FB_GRP_ADMIN,
+ TestConstants.Clients.FB_GRP, TestConstants.Orgs.MAIN);
+ }
+
+ @Test
+ public void testCreateOnImport() {
+ try {
+ String user = "F&BUser";
+ String role = "F&B EspaƱa, S.A - Finance";
+
+ // ADUserRoles does not exists yet
+ assertThat("ADUserRoles object does not exist yet", userRoleCreated(user, role), is(false));
+
+ importSynchronizableBusinessObject(getNewUserRolesSBO(user, role));
+
+ // ADUserRoles object is created
+ assertThat("ADUserRoles object is created", userRoleCreated(user, role), is(true));
+
+ } finally {
+ // Do not persist the BOBs created just for testing
+ OBDal.getInstance().rollbackAndClose();
+ }
+ }
+
+ private SynchronizableBusinessObject getNewUserRolesSBO(String user, String role) {
+ SynchronizableBusinessObject sbo = new SynchronizableBusinessObject();
+ sbo.addProperty("User", user);
+ sbo.addProperty("Role", role);
+ return sbo;
+ }
+
+ private boolean userRoleCreated(String user, String role) {
+ String hql = "select ur from ADUserRoles ur where userContact.name =:user and role.name = :role";
+ return OBDal.getInstance()
+ .getSession()
+ .createQuery(hql, UserRoles.class)
+ .setParameter("user", user)
+ .setParameter("role", role)
+ .uniqueResult() != null;
+ }
+
+}
|