You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2015/06/10 14:34:57 UTC
[22/27] syncope git commit: [SYNCOPE-666] Any* tests added
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyObjectITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyObjectITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyObjectITCase.java
new file mode 100644
index 0000000..e2b339a
--- /dev/null
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyObjectITCase.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.fit.core.reference;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.mod.AnyObjectMod;
+import org.apache.syncope.common.lib.to.ConnObjectTO;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.PagedResult;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.JVM)
+public class AnyObjectITCase extends AbstractITCase {
+
+ public static AnyObjectTO getSampleTO(final String location) {
+ AnyObjectTO anyObjectTO = new AnyObjectTO();
+ anyObjectTO.setRealm(SyncopeConstants.ROOT_REALM);
+ anyObjectTO.setType("PRINTER");
+ anyObjectTO.getPlainAttrs().add(attrTO("location", location + getUUIDString()));
+
+ anyObjectTO.getResources().add(RESOURCE_NAME_DBSCRIPTED);
+ return anyObjectTO;
+ }
+
+ @Test
+ public void create() {
+ AnyObjectTO anyObjectTO = getSampleTO("create");
+
+ anyObjectTO = createAnyObject(anyObjectTO);
+ assertNotNull(anyObjectTO);
+
+ ConnObjectTO connObjectTO =
+ resourceService.readConnObject(RESOURCE_NAME_DBSCRIPTED, anyObjectTO.getType(), anyObjectTO.getKey());
+ assertNotNull(connObjectTO);
+ assertNotNull(connObjectTO.getPlainAttrMap().get("location"));
+ assertEquals(anyObjectTO.getPlainAttrMap().get("location"), connObjectTO.getPlainAttrMap().get("location"));
+ }
+
+ @Test
+ public void delete() {
+ try {
+ anyObjectService.delete(0L);
+ } catch (SyncopeClientException e) {
+ assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
+ }
+
+ AnyObjectTO anyObjectTO = getSampleTO("deletable");
+ anyObjectTO.setRealm("/even");
+
+ anyObjectTO = createAnyObject(anyObjectTO);
+ assertNotNull(anyObjectTO);
+
+ AnyObjectTO deletedAnyObject = deleteAnyObject(anyObjectTO.getKey());
+ assertNotNull(deletedAnyObject);
+
+ try {
+ anyObjectService.read(deletedAnyObject.getKey());
+ } catch (SyncopeClientException e) {
+ assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
+ }
+ }
+
+ @Test
+ public void list() {
+ PagedResult<AnyObjectTO> anyObjectTOs = anyObjectService.list("PRINTER", SyncopeClient.getAnyListQueryBuilder().
+ realm(SyncopeConstants.ROOT_REALM).build());
+ assertNotNull(anyObjectTOs);
+ assertTrue(anyObjectTOs.getResult().size() >= 2);
+ for (AnyObjectTO anyObjectTO : anyObjectTOs.getResult()) {
+ assertNotNull(anyObjectTO);
+ }
+ }
+
+ @Test
+ public void read() {
+ AnyObjectTO anyObjectTO = anyObjectService.read(1L);
+
+ assertNotNull(anyObjectTO);
+ assertNotNull(anyObjectTO.getPlainAttrs());
+ assertFalse(anyObjectTO.getPlainAttrs().isEmpty());
+ }
+
+ @Test
+ public void update() {
+ AnyObjectTO anyObjectTO = getSampleTO("update");
+ anyObjectTO = createAnyObject(anyObjectTO);
+
+ assertEquals(1, anyObjectTO.getPlainAttrs().size());
+
+ AnyObjectMod anyObjectMod = new AnyObjectMod();
+ anyObjectMod.setKey(anyObjectTO.getKey());
+ String newLocation = "new" + getUUIDString();
+ anyObjectMod.getPlainAttrsToUpdate().add(attrMod("location", newLocation));
+
+ anyObjectTO = updateAnyObject(anyObjectMod);
+
+ assertEquals(newLocation, anyObjectTO.getPlainAttrMap().get("location").getValues().get(0));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java
new file mode 100644
index 0000000..4dbb796
--- /dev/null
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.fit.core.reference;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.types.AttrSchemaType;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.JVM)
+public class AnyTypeClassITCase extends AbstractITCase {
+
+ @Test
+ public void read() {
+ AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group");
+ assertNotNull(minimalGroup);
+
+ assertFalse(minimalGroup.getPlainSchemas().isEmpty());
+ assertFalse(minimalGroup.getDerSchemas().isEmpty());
+ assertFalse(minimalGroup.getVirSchemas().isEmpty());
+ }
+
+ @Test
+ public void list() {
+ List<AnyTypeClassTO> list = anyTypeClassService.list();
+ assertFalse(list.isEmpty());
+ }
+
+ @Test
+ public void crud() {
+ AnyTypeClassTO newClass = new AnyTypeClassTO();
+ newClass.setKey("new class" + getUUIDString());
+ newClass.getPlainSchemas().add("firstname");
+
+ Response response = anyTypeClassService.create(newClass);
+ assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
+
+ newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
+ assertNotNull(newClass);
+ assertFalse(newClass.getPlainSchemas().isEmpty());
+ assertTrue(newClass.getDerSchemas().isEmpty());
+ assertTrue(newClass.getVirSchemas().isEmpty());
+
+ newClass.getDerSchemas().add("cn");
+ anyTypeClassService.update(newClass.getKey(), newClass);
+
+ newClass = anyTypeClassService.read(newClass.getKey());
+ assertNotNull(newClass);
+ assertFalse(newClass.getPlainSchemas().isEmpty());
+ assertFalse(newClass.getDerSchemas().isEmpty());
+ assertTrue(newClass.getVirSchemas().isEmpty());
+
+ anyTypeClassService.delete(newClass.getKey());
+
+ try {
+ anyTypeClassService.read(newClass.getKey());
+ fail();
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.NotFound, e.getType());
+ }
+ }
+
+ @Test
+ public void deleteSchema() {
+ PlainSchemaTO newSchema = new PlainSchemaTO();
+ newSchema.setKey("newSchema" + getUUIDString());
+ newSchema.setType(AttrSchemaType.Date);
+ createSchema(SchemaType.PLAIN, newSchema);
+
+ AnyTypeClassTO newClass = new AnyTypeClassTO();
+ newClass.setKey("new class" + getUUIDString());
+ newClass.getPlainSchemas().add(newSchema.getKey());
+
+ Response response = anyTypeClassService.create(newClass);
+ assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
+
+ newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
+ assertNotNull(newClass);
+ assertTrue(newClass.getPlainSchemas().contains(newSchema.getKey()));
+
+ schemaService.delete(SchemaType.PLAIN, newSchema.getKey());
+
+ newClass = anyTypeClassService.read(newClass.getKey());
+ assertNotNull(newClass);
+ assertFalse(newClass.getPlainSchemas().contains(newSchema.getKey()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeITCase.java
new file mode 100644
index 0000000..01da6f8
--- /dev/null
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeITCase.java
@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.fit.core.reference;
+
+import static org.apache.syncope.fit.core.reference.AbstractITCase.getUUIDString;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
+import org.apache.syncope.common.rest.api.service.AnyTypeService;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.JVM)
+public class AnyTypeITCase extends AbstractITCase {
+
+ @Test
+ public void read() {
+ AnyTypeTO userType = anyTypeService.read(AnyTypeKind.USER.name());
+ assertNotNull(userType);
+ assertEquals(AnyTypeKind.USER, userType.getKind());
+ assertEquals(AnyTypeKind.USER.name(), userType.getKey());
+ assertFalse(userType.getClasses().isEmpty());
+
+ AnyTypeTO groupType = anyTypeService.read(AnyTypeKind.GROUP.name());
+ assertNotNull(groupType);
+ assertEquals(AnyTypeKind.GROUP, groupType.getKind());
+ assertEquals(AnyTypeKind.GROUP.name(), groupType.getKey());
+ assertFalse(groupType.getClasses().isEmpty());
+
+ AnyTypeTO otherType = anyTypeService.read("PRINTER");
+ assertNotNull(otherType);
+ assertEquals(AnyTypeKind.ANY_OBJECT, otherType.getKind());
+ assertEquals("PRINTER", otherType.getKey());
+ }
+
+ @Test
+ public void list() {
+ List<AnyTypeTO> list = anyTypeService.list();
+ assertFalse(list.isEmpty());
+ }
+
+ @Test
+ public void crud() {
+ AnyTypeTO newType = new AnyTypeTO();
+ newType.setKey("new type");
+ newType.setKind(AnyTypeKind.ANY_OBJECT);
+ newType.getClasses().add("generic membership");
+ newType.getClasses().add("csv");
+
+ Response response = anyTypeService.create(newType);
+ assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
+
+ newType = getObject(response.getLocation(), AnyTypeService.class, AnyTypeTO.class);
+ assertNotNull(newType);
+ assertEquals(2, newType.getClasses().size());
+ assertTrue(newType.getClasses().contains("generic membership"));
+ assertTrue(newType.getClasses().contains("csv"));
+
+ newType.getClasses().remove("generic membership");
+ anyTypeService.update(newType.getKey(), newType);
+
+ newType = anyTypeService.read(newType.getKey());
+ assertNotNull(newType);
+ assertEquals(1, newType.getClasses().size());
+ assertTrue(newType.getClasses().contains("csv"));
+
+ anyTypeService.delete(newType.getKey());
+
+ try {
+ anyTypeService.read(newType.getKey());
+ fail();
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.NotFound, e.getType());
+ }
+ }
+
+ @Test
+ public void createInvalidKind() {
+ AnyTypeTO newType = new AnyTypeTO();
+ newType.setKey("new type");
+ newType.setKind(AnyTypeKind.USER);
+ try {
+ anyTypeService.create(newType);
+ fail();
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.InvalidAnyType, e.getType());
+ }
+ }
+
+ @Test
+ public void createInvalidName() {
+ AnyTypeTO newType = new AnyTypeTO();
+ newType.setKey("group");
+ newType.setKind(AnyTypeKind.ANY_OBJECT);
+ try {
+ anyTypeService.create(newType);
+ fail();
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.InvalidAnyType, e.getType());
+ }
+ }
+
+ @Test
+ public void deleteInvalid() {
+ try {
+ anyTypeService.delete(AnyTypeKind.USER.name());
+ fail();
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.InvalidAnyType, e.getType());
+ }
+ }
+
+ @Test
+ public void deleteTypeClass() {
+ AnyTypeClassTO newClass = new AnyTypeClassTO();
+ newClass.setKey("new class" + getUUIDString());
+ newClass.getDerSchemas().add("cn");
+
+ Response response = anyTypeClassService.create(newClass);
+ assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
+
+ newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
+ assertNotNull(newClass);
+
+ AnyTypeTO other = anyTypeService.read("PRINTER");
+ assertNotNull(other);
+
+ other.getClasses().add(newClass.getKey());
+ anyTypeService.update(other.getKey(), other);
+
+ other = anyTypeService.read(other.getKey());
+ assertNotNull(other);
+ assertTrue(other.getClasses().contains(newClass.getKey()));
+
+ anyTypeClassService.delete(newClass.getKey());
+
+ other = anyTypeService.read(other.getKey());
+ assertNotNull(other);
+ assertFalse(other.getClasses().contains(newClass.getKey()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java
index 1136f02..2616d4a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java
@@ -40,7 +40,6 @@ import org.apache.commons.io.IOUtils;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.BulkAction;
import org.apache.syncope.common.lib.to.ConnBundleTO;
-import org.apache.syncope.common.lib.to.ConnIdObjectClassTO;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ConnPoolConfTO;
import org.apache.syncope.common.lib.to.MappingItemTO;
@@ -53,6 +52,7 @@ import org.apache.syncope.common.lib.types.ConnConfPropSchema;
import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.common.lib.types.ConnectorCapability;
import org.apache.syncope.common.lib.types.IntMappingType;
+import org.apache.syncope.common.lib.wrap.ConnIdObjectClass;
import org.apache.syncope.common.rest.api.service.ConnectorService;
import org.apache.syncope.common.rest.api.service.ResourceService;
import org.identityconnectors.common.security.GuardedString;
@@ -88,7 +88,7 @@ public class ConnectorITCase extends AbstractITCase {
}
connidSoapVersion = props.getProperty("connid.soap.version");
- connidDbTableVersion = props.getProperty("connid.db.table.version");
+ connidDbTableVersion = props.getProperty("connid.database.version");
testJDBCURL = props.getProperty("testdb.url");
} catch (Exception e) {
@@ -557,11 +557,13 @@ public class ConnectorITCase extends AbstractITCase {
ConnInstanceTO ldap = connectorService.read(105L);
assertNotNull(ldap);
- List<ConnIdObjectClassTO> objectClasses = connectorService.getSupportedObjectClasses(ldap.getKey(), ldap);
+ List<ConnIdObjectClass> objectClasses = connectorService.getSupportedObjectClasses(ldap.getKey(), ldap);
assertNotNull(objectClasses);
assertEquals(2, objectClasses.size());
- assertTrue(objectClasses.contains(ConnIdObjectClassTO.ACCOUNT));
- assertTrue(objectClasses.contains(ConnIdObjectClassTO.GROUP));
+ assertTrue(objectClasses.contains(
+ ConnIdObjectClass.getInstance(ConnIdObjectClass.class, ObjectClass.ACCOUNT_NAME)));
+ assertTrue(objectClasses.contains(
+ ConnIdObjectClass.getInstance(ConnIdObjectClass.class, ObjectClass.GROUP_NAME)));
ConnInstanceTO csv = connectorService.read(104L);
assertNotNull(csv);
@@ -569,7 +571,8 @@ public class ConnectorITCase extends AbstractITCase {
objectClasses = connectorService.getSupportedObjectClasses(csv.getKey(), csv);
assertNotNull(objectClasses);
assertEquals(1, objectClasses.size());
- assertTrue(objectClasses.contains(ConnIdObjectClassTO.ACCOUNT));
+ assertTrue(objectClasses.contains(
+ ConnIdObjectClass.getInstance(ConnIdObjectClass.class, ObjectClass.ACCOUNT_NAME)));
}
@Test
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/GroupITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/GroupITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/GroupITCase.java
index 017f802..f16ee21 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/GroupITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/GroupITCase.java
@@ -44,6 +44,7 @@ import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.mod.ReferenceMod;
import org.apache.syncope.common.lib.mod.GroupMod;
+import org.apache.syncope.common.lib.mod.ResourceAssociationMod;
import org.apache.syncope.common.lib.to.AnyTypeClassTO;
import org.apache.syncope.common.lib.to.AnyTypeTO;
import org.apache.syncope.common.lib.to.BulkActionResult;
@@ -68,7 +69,6 @@ import org.apache.syncope.common.rest.api.Preference;
import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.service.GroupService;
import org.junit.FixMethodOrder;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runners.MethodSorters;
@@ -92,7 +92,6 @@ public class GroupITCase extends AbstractITCase {
}
@Test
- @Ignore
public void create() {
GroupTO groupTO = getSampleTO("lastGroup");
groupTO.getVirAttrs().add(attrTO("rvirtualdata", "rvirtualvalue"));
@@ -351,9 +350,9 @@ public class GroupITCase extends AbstractITCase {
assertNotNull(e);
}
- assertNotNull(groupService.bulkAssociation(actual.getKey(),
- ResourceAssociationActionType.LINK,
- CollectionWrapper.wrap(RESOURCE_NAME_LDAP, ResourceKey.class)).
+ ResourceAssociationMod associationMod = new ResourceAssociationMod();
+ associationMod.getTargetResources().addAll(CollectionWrapper.wrap(RESOURCE_NAME_LDAP, ResourceKey.class));
+ assertNotNull(groupService.bulkAssociation(actual.getKey(), ResourceAssociationActionType.LINK, associationMod).
readEntity(BulkActionResult.class));
actual = groupService.read(actual.getKey());
@@ -406,9 +405,10 @@ public class GroupITCase extends AbstractITCase {
assertNotNull(e);
}
+ ResourceAssociationMod associationMod = new ResourceAssociationMod();
+ associationMod.getTargetResources().addAll(CollectionWrapper.wrap(RESOURCE_NAME_LDAP, ResourceKey.class));
assertNotNull(groupService.bulkAssociation(actual.getKey(),
- ResourceAssociationActionType.ASSIGN,
- CollectionWrapper.wrap(RESOURCE_NAME_LDAP, ResourceKey.class)).
+ ResourceAssociationActionType.ASSIGN, associationMod).
readEntity(BulkActionResult.class));
actual = groupService.read(actual.getKey());
@@ -456,9 +456,10 @@ public class GroupITCase extends AbstractITCase {
assertNotNull(e);
}
+ ResourceAssociationMod associationMod = new ResourceAssociationMod();
+ associationMod.getTargetResources().addAll(CollectionWrapper.wrap(RESOURCE_NAME_LDAP, ResourceKey.class));
assertNotNull(groupService.bulkAssociation(actual.getKey(),
- ResourceAssociationActionType.PROVISION,
- CollectionWrapper.wrap(RESOURCE_NAME_LDAP, ResourceKey.class)).
+ ResourceAssociationActionType.PROVISION, associationMod).
readEntity(BulkActionResult.class));
actual = groupService.read(actual.getKey());
@@ -482,9 +483,10 @@ public class GroupITCase extends AbstractITCase {
assertNotNull(e);
}
+ ResourceAssociationMod associationMod = new ResourceAssociationMod();
+ associationMod.getTargetResources().addAll(CollectionWrapper.wrap(RESOURCE_NAME_LDAP, ResourceKey.class));
assertNotNull(groupService.bulkAssociation(actual.getKey(),
- ResourceAssociationActionType.PROVISION,
- CollectionWrapper.wrap("resource-ldap", ResourceKey.class)).
+ ResourceAssociationActionType.PROVISION, associationMod).
readEntity(BulkActionResult.class));
actual = groupService.read(actual.getKey());
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SearchITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SearchITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SearchITCase.java
index 3f1eb0a..6011c93 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SearchITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SearchITCase.java
@@ -29,6 +29,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.to.PagedResult;
import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.RoleTO;
@@ -44,25 +45,25 @@ public class SearchITCase extends AbstractITCase {
@Test
public void searchUser() {
// LIKE
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().
is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query()).build());
- assertNotNull(matchedUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
+ assertNotNull(matchingUsers);
+ assertFalse(matchingUsers.getResult().isEmpty());
- for (UserTO user : matchedUsers.getResult()) {
+ for (UserTO user : matchingUsers.getResult()) {
assertNotNull(user);
}
// ISNULL
- matchedUsers = userService.search(
+ matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().isNull("loginDate").query()).build());
- assertNotNull(matchedUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
+ assertNotNull(matchingUsers);
+ assertFalse(matchingUsers.getResult().isEmpty());
- Collection<UserTO> found = CollectionUtils.select(matchedUsers.getResult(), new Predicate<UserTO>() {
+ Collection<UserTO> found = CollectionUtils.select(matchingUsers.getResult(), new Predicate<UserTO>() {
@Override
public boolean evaluate(final UserTO user) {
@@ -98,14 +99,14 @@ public class SearchITCase extends AbstractITCase {
@Test
public void searchByGroup() {
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups(1L).query()).
build());
- assertNotNull(matchedUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
+ assertNotNull(matchingUsers);
+ assertFalse(matchingUsers.getResult().isEmpty());
- assertTrue(CollectionUtils.exists(matchedUsers.getResult(), new Predicate<UserTO>() {
+ assertTrue(CollectionUtils.exists(matchingUsers.getResult(), new Predicate<UserTO>() {
@Override
public boolean evaluate(final UserTO user) {
@@ -121,14 +122,14 @@ public class SearchITCase extends AbstractITCase {
group = createGroup(group);
assertNotNull(group);
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups(group.getKey()).query()).
build());
- assertNotNull(matchedUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
+ assertNotNull(matchingUsers);
+ assertFalse(matchingUsers.getResult().isEmpty());
- assertTrue(CollectionUtils.exists(matchedUsers.getResult(), new Predicate<UserTO>() {
+ assertTrue(CollectionUtils.exists(matchingUsers.getResult(), new Predicate<UserTO>() {
@Override
public boolean evaluate(final UserTO user) {
@@ -139,14 +140,14 @@ public class SearchITCase extends AbstractITCase {
@Test
public void searchByRole() {
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(3L).query()).
build());
- assertNotNull(matchedUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
+ assertNotNull(matchingUsers);
+ assertFalse(matchingUsers.getResult().isEmpty());
- assertTrue(CollectionUtils.exists(matchedUsers.getResult(), new Predicate<UserTO>() {
+ assertTrue(CollectionUtils.exists(matchingUsers.getResult(), new Predicate<UserTO>() {
@Override
public boolean evaluate(final UserTO user) {
@@ -163,14 +164,14 @@ public class SearchITCase extends AbstractITCase {
role = getObject(response.getLocation(), RoleService.class, RoleTO.class);
assertNotNull(role);
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(role.getKey()).query()).
build());
- assertNotNull(matchedUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
+ assertNotNull(matchingUsers);
+ assertFalse(matchingUsers.getResult().isEmpty());
- assertTrue(CollectionUtils.exists(matchedUsers.getResult(), new Predicate<UserTO>() {
+ assertTrue(CollectionUtils.exists(matchingUsers.getResult(), new Predicate<UserTO>() {
@Override
public boolean evaluate(final UserTO user) {
@@ -181,14 +182,14 @@ public class SearchITCase extends AbstractITCase {
@Test
public void searchUserByResourceName() {
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().hasResources(RESOURCE_NAME_MAPPINGS2).query()).
build());
- assertNotNull(matchedUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
+ assertNotNull(matchingUsers);
+ assertFalse(matchingUsers.getResult().isEmpty());
- assertTrue(CollectionUtils.exists(matchedUsers.getResult(), new Predicate<UserTO>() {
+ assertTrue(CollectionUtils.exists(matchingUsers.getResult(), new Predicate<UserTO>() {
@Override
public boolean evaluate(final UserTO user) {
@@ -242,27 +243,47 @@ public class SearchITCase extends AbstractITCase {
@Test
public void nested() {
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql("((fullname==*o*,fullname==*i*);$resources!=ws-target-resource-1)").page(1).size(2).build());
- assertNotNull(matchedUsers);
+ assertNotNull(matchingUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
- for (UserTO user : matchedUsers.getResult()) {
+ assertFalse(matchingUsers.getResult().isEmpty());
+ for (UserTO user : matchingUsers.getResult()) {
assertNotNull(user);
}
}
@Test
+ public void searchByType() {
+ PagedResult<AnyObjectTO> matching = anyObjectService.search(
+ SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getAnyObjectSearchConditionBuilder().type("PRINTER").query()).build());
+ assertNotNull(matching);
+
+ assertFalse(matching.getResult().isEmpty());
+ for (AnyObjectTO printer : matching.getResult()) {
+ assertNotNull(printer);
+ }
+
+ matching = anyObjectService.search(
+ SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getAnyObjectSearchConditionBuilder().type("UNEXISTING").query()).build());
+ assertNotNull(matching);
+
+ assertTrue(matching.getResult().isEmpty());
+ }
+
+ @Test
public void orderBy() {
- PagedResult<UserTO> matchedUsers = userService.search(
+ PagedResult<UserTO> matchingUsers = userService.search(
SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
fiql(SyncopeClient.getUserSearchConditionBuilder().is("userId").equalTo("*@apache.org").query()).
orderBy(SyncopeClient.getOrderByClauseBuilder().asc("status").desc("firstname").build()).build());
- assertNotNull(matchedUsers);
+ assertNotNull(matchingUsers);
- assertFalse(matchedUsers.getResult().isEmpty());
- for (UserTO user : matchedUsers.getResult()) {
+ assertFalse(matchingUsers.getResult().isEmpty());
+ for (UserTO user : matchingUsers.getResult()) {
assertNotNull(user);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java
index ee02b26..939919f 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java
@@ -37,6 +37,7 @@ import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.mod.StatusMod;
import org.apache.syncope.common.lib.mod.UserMod;
import org.apache.syncope.common.lib.to.AbstractTaskTO;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.to.AttrTO;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ConnObjectTO;
@@ -44,6 +45,7 @@ import org.apache.syncope.common.lib.to.MembershipTO;
import org.apache.syncope.common.lib.to.PagedResult;
import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.ProvisionTO;
import org.apache.syncope.common.lib.to.SyncPolicyTO;
import org.apache.syncope.common.lib.to.SyncTaskTO;
import org.apache.syncope.common.lib.to.TaskExecTO;
@@ -353,6 +355,49 @@ public class SyncTaskITCase extends AbstractTaskITCase {
}
@Test
+ public void reconcileFromScriptedSQL() {
+ // 0. reset sync token
+ ResourceTO resource = resourceService.read(RESOURCE_NAME_DBSCRIPTED);
+ ProvisionTO provision = resource.getProvision("PRINTER");
+ assertNotNull(provision);
+
+ provision.setSyncToken(null);
+ resourceService.update(resource.getKey(), resource);
+
+ // 1. create printer on external resource
+ AnyObjectTO anyObjectTO = AnyObjectITCase.getSampleTO("sync");
+ anyObjectTO = createAnyObject(anyObjectTO);
+ assertNotNull(anyObjectTO);
+
+ // 2. unlink any existing printer and delete from Syncope (printer is now only on external resource)
+ PagedResult<AnyObjectTO> matchingPrinters = anyObjectService.search(
+ SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getAnyObjectSearchConditionBuilder().type("PRINTER").and().
+ is("location").equalTo("sync*").query()).build());
+ assertTrue(matchingPrinters.getSize() > 0);
+ for (AnyObjectTO printer : matchingPrinters.getResult()) {
+ anyObjectService.bulkDeassociation(printer.getKey(),
+ ResourceDeassociationActionType.UNLINK,
+ CollectionWrapper.wrap(RESOURCE_NAME_DBSCRIPTED, ResourceKey.class));
+ anyObjectService.delete(printer.getKey());
+ }
+
+ // 3. synchronize
+ execProvisioningTask(28L, 50, false);
+
+ // 4. verify that printer was re-created in Syncope
+ matchingPrinters = anyObjectService.search(
+ SyncopeClient.getAnySearchQueryBuilder().realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getAnyObjectSearchConditionBuilder().type("PRINTER").and().
+ is("location").equalTo("sync*").query()).build());
+ assertTrue(matchingPrinters.getSize() > 0);
+
+ // 5. verify that synctoken was updated
+ assertNotNull(
+ resourceService.read(RESOURCE_NAME_DBSCRIPTED).getProvision(anyObjectTO.getType()).getSyncToken());
+ }
+
+ @Test
public void issueSYNCOPE68() {
//-----------------------------
// Create a new user ... it should be updated applying sync policy
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java
index c0ab43d..bd6b4aa 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java
@@ -1909,8 +1909,8 @@ public class UserITCase extends AbstractITCase {
try {
resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
fail();
- } catch (Exception e) {
- assertNotNull(e);
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.NotFound, e.getType());
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/a45a46bb/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9011e8d..f8506d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -321,12 +321,12 @@ under the License.
<connid.version>1.4.1.0</connid.version>
<connid.soap.version>1.3.0</connid.soap.version>
- <connid.db.table.version>2.2.2</connid.db.table.version>
+ <connid.database.version>2.2.2</connid.database.version>
<connid.csvdir.version>0.8.2</connid.csvdir.version>
<connid.ldap.version>1.4.0</connid.ldap.version>
<connid.ad.version>1.2.3</connid.ad.version>
- <cxf.version>3.1.0</cxf.version>
+ <cxf.version>3.1.2-SNAPSHOT</cxf.version>
<camel.version>2.15.2</camel.version>
@@ -1126,8 +1126,13 @@ under the License.
<dependency>
<groupId>net.tirasa.connid.bundles.db</groupId>
<artifactId>net.tirasa.connid.bundles.db.table</artifactId>
- <version>${connid.db.table.version}</version>
+ <version>${connid.database.version}</version>
</dependency>
+ <dependency>
+ <groupId>net.tirasa.connid.bundles.db</groupId>
+ <artifactId>net.tirasa.connid.bundles.db.scriptedsql</artifactId>
+ <version>${connid.database.version}</version>
+ </dependency>
<artifactItem>
<groupId>net.tirasa.connid.bundles</groupId>
<artifactId>net.tirasa.connid.bundles.ldap</artifactId>