}
}
@Test
public void create() {
ConnInstanceTO connectorTO = new ConnInstanceTO();
connectorTO.setLocation(connectorService.read(100L).getLocation());
connectorTO.setVersion(connidSoapVersion);
connectorTO.setConnectorName("org.connid.bundles.soap.WebServiceConnector");
connectorTO.setBundleName("org.connid.bundles.soap");
connectorTO.setDisplayName("Display name");
connectorTO.setConnRequestTimeout(15);
// set the connector configuration using PropertyTO
Set<ConnConfProperty> conf = new HashSet<ConnConfProperty>();
ConnConfPropSchema endpointSchema = new ConnConfPropSchema();
endpointSchema.setName("endpoint");
endpointSchema.setType(String.class.getName());
endpointSchema.setRequired(true);
ConnConfProperty endpoint = new ConnConfProperty();
endpoint.setSchema(endpointSchema);
endpoint.getValues().add("http://localhost:8888/wssample/services");
endpoint.getValues().add("Provisioning");
conf.add(endpoint);
ConnConfPropSchema servicenameSchema = new ConnConfPropSchema();
servicenameSchema.setName("servicename");
servicenameSchema.setType(String.class.getName());
servicenameSchema.setRequired(true);
ConnConfProperty servicename = new ConnConfProperty();
servicename.setSchema(servicenameSchema);
conf.add(servicename);
// set connector configuration
connectorTO.getConfiguration().addAll(conf);
// set connector capabilities
connectorTO.getCapabilities().add(ConnectorCapability.TWO_PHASES_CREATE);
connectorTO.getCapabilities().add(ConnectorCapability.ONE_PHASE_CREATE);
connectorTO.getCapabilities().add(ConnectorCapability.TWO_PHASES_UPDATE);
// set connector pool conf
ConnPoolConfTO cpc = new ConnPoolConfTO();
cpc.setMaxObjects(1534);
connectorTO.setPoolConf(cpc);
Response response = connectorService.create(connectorTO);
if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
}
ConnInstanceTO actual = getObject(
response.getLocation(), ConnectorService.class, ConnInstanceTO.class);
assertNotNull(actual);
assertEquals(actual.getBundleName(), connectorTO.getBundleName());
assertEquals(actual.getConnectorName(), connectorTO.getConnectorName());
assertEquals(actual.getVersion(), connectorTO.getVersion());
assertEquals("Display name", actual.getDisplayName());
assertEquals(Integer.valueOf(15), actual.getConnRequestTimeout());
assertEquals(connectorTO.getCapabilities(), actual.getCapabilities());
assertNotNull(actual.getPoolConf());
assertEquals(1534, actual.getPoolConf().getMaxObjects().intValue());
assertEquals(10, actual.getPoolConf().getMaxIdle().intValue());
Throwable t = null;
// check update
actual.getCapabilities().remove(ConnectorCapability.TWO_PHASES_UPDATE);
actual.getPoolConf().setMaxObjects(null);
try {
connectorService.update(actual.getId(), actual);
actual = connectorService.read(actual.getId());
} catch (SyncopeClientException e) {
LOG.error("update failed", e);
t = e;
}
assertNull(t);
assertNotNull(actual);
assertEquals(EnumSet.of(ConnectorCapability.ONE_PHASE_CREATE, ConnectorCapability.TWO_PHASES_CREATE),
actual.getCapabilities());
assertEquals(10, actual.getPoolConf().getMaxObjects().intValue());
// check also for the deletion of the created object
try {
connectorService.delete(actual.getId());
} catch (SyncopeClientException e) {
LOG.error("delete failed", e);
t = e;
}
assertNull(t);
// check the non existence
try {
connectorService.read(actual.getId());
} catch (SyncopeClientException e) {
assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
}
}