Search in sources :

Example 11 with ItemTO

use of org.apache.syncope.common.lib.to.ItemTO in project syncope by apache.

the class ResourceITCase method update.

@Test
public void update() {
    String resourceKey = RESOURCE_NAME_UPDATE;
    ResourceTO resourceTO = new ResourceTO();
    resourceTO.setKey(resourceKey);
    resourceTO.setConnector("5aa5b8be-7521-481a-9651-c557aea078c1");
    ProvisionTO provisionTO = new ProvisionTO();
    provisionTO.setAnyType(AnyTypeKind.USER.name());
    provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME);
    resourceTO.getProvisions().add(provisionTO);
    MappingTO mapping = new MappingTO();
    provisionTO.setMapping(mapping);
    // Update with an existing and already assigned mapping
    ItemTO item = new ItemTO();
    item.setKey("cc973ed6-d031-4790-adab-fc059ac0c818");
    item.setExtAttrName("test3");
    item.setIntAttrName("fullname");
    item.setPurpose(MappingPurpose.BOTH);
    mapping.add(item);
    // Update defining new mappings
    for (int i = 4; i < 6; i++) {
        item = new ItemTO();
        item.setExtAttrName("test" + i);
        item.setIntAttrName("fullname");
        item.setPurpose(MappingPurpose.BOTH);
        mapping.add(item);
    }
    item = new ItemTO();
    item.setExtAttrName("username");
    item.setIntAttrName("key");
    item.setConnObjectKey(true);
    item.setPurpose(MappingPurpose.BOTH);
    mapping.setConnObjectKeyItem(item);
    resourceService.update(resourceTO);
    ResourceTO actual = resourceService.read(resourceTO.getKey());
    assertNotNull(actual);
    // check for existence
    Collection<ItemTO> mapItems = actual.getProvision(AnyTypeKind.USER.name()).get().getMapping().getItems();
    assertNotNull(mapItems);
    assertEquals(4, mapItems.size());
}
Also used : MappingTO(org.apache.syncope.common.lib.to.MappingTO) ResourceTO(org.apache.syncope.common.lib.to.ResourceTO) ProvisionTO(org.apache.syncope.common.lib.to.ProvisionTO) ItemTO(org.apache.syncope.common.lib.to.ItemTO) Test(org.junit.jupiter.api.Test)

Example 12 with ItemTO

use of org.apache.syncope.common.lib.to.ItemTO in project syncope by apache.

the class ResourceITCase method createWithPasswordPolicy.

@Test
public void createWithPasswordPolicy() {
    String resourceKey = "res-with-password-policy";
    ResourceTO resourceTO = new ResourceTO();
    resourceTO.setKey(resourceKey);
    resourceTO.setConnector("5ffbb4ac-a8c3-4b44-b699-11b398a1ba08");
    resourceTO.setPasswordPolicy("986d1236-3ac5-4a19-810c-5ab21d79cba1");
    ProvisionTO provisionTO = new ProvisionTO();
    provisionTO.setAnyType(AnyTypeKind.USER.name());
    provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME);
    resourceTO.getProvisions().add(provisionTO);
    MappingTO mapping = new MappingTO();
    provisionTO.setMapping(mapping);
    ItemTO item = new ItemTO();
    item.setExtAttrName("userId");
    item.setIntAttrName("userId");
    item.setConnObjectKey(true);
    item.setPurpose(MappingPurpose.BOTH);
    mapping.setConnObjectKeyItem(item);
    Response response = resourceService.create(resourceTO);
    ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
    assertNotNull(actual);
    // check the existence
    actual = resourceService.read(resourceKey);
    assertNotNull(actual);
    assertNotNull(actual.getPasswordPolicy());
    assertEquals("986d1236-3ac5-4a19-810c-5ab21d79cba1", actual.getPasswordPolicy());
}
Also used : Response(javax.ws.rs.core.Response) MappingTO(org.apache.syncope.common.lib.to.MappingTO) ResourceTO(org.apache.syncope.common.lib.to.ResourceTO) ProvisionTO(org.apache.syncope.common.lib.to.ProvisionTO) ItemTO(org.apache.syncope.common.lib.to.ItemTO) Test(org.junit.jupiter.api.Test)

Example 13 with ItemTO

use of org.apache.syncope.common.lib.to.ItemTO in project syncope by apache.

the class ResourceITCase method createWithoutExtAttr.

@Test
public void createWithoutExtAttr() {
    assertThrows(SyncopeClientException.class, () -> {
        String resourceKey = RESOURCE_NAME_CREATE_WRONG;
        ResourceTO resourceTO = new ResourceTO();
        resourceTO.setKey(resourceKey);
        resourceTO.setConnector("5ffbb4ac-a8c3-4b44-b699-11b398a1ba08");
        ProvisionTO provisionTO = new ProvisionTO();
        provisionTO.setAnyType(AnyTypeKind.USER.name());
        provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME);
        resourceTO.getProvisions().add(provisionTO);
        MappingTO mapping = new MappingTO();
        provisionTO.setMapping(mapping);
        ItemTO item = new ItemTO();
        item.setIntAttrName("key");
        item.setExtAttrName("userId");
        item.setConnObjectKey(true);
        mapping.setConnObjectKeyItem(item);
        item = new ItemTO();
        item.setIntAttrName("usernane");
        // missing extAttrName ...
        mapping.add(item);
        createResource(resourceTO);
    });
}
Also used : MappingTO(org.apache.syncope.common.lib.to.MappingTO) ResourceTO(org.apache.syncope.common.lib.to.ResourceTO) ProvisionTO(org.apache.syncope.common.lib.to.ProvisionTO) ItemTO(org.apache.syncope.common.lib.to.ItemTO) Test(org.junit.jupiter.api.Test)

Example 14 with ItemTO

use of org.apache.syncope.common.lib.to.ItemTO in project syncope by apache.

the class ResourceITCase method createWithSingleMappingItem.

@Test
public void createWithSingleMappingItem() {
    String resourceKey = RESOURCE_NAME_CREATE_SINGLE;
    ResourceTO resourceTO = new ResourceTO();
    resourceTO.setKey(resourceKey);
    resourceTO.setConnector("5ffbb4ac-a8c3-4b44-b699-11b398a1ba08");
    ProvisionTO provisionTO = new ProvisionTO();
    provisionTO.setAnyType(AnyTypeKind.USER.name());
    provisionTO.setObjectClass(ObjectClass.ACCOUNT_NAME);
    resourceTO.getProvisions().add(provisionTO);
    MappingTO mapping = new MappingTO();
    provisionTO.setMapping(mapping);
    ItemTO item = new ItemTO();
    item.setIntAttrName("key");
    item.setExtAttrName("userId");
    item.setConnObjectKey(true);
    item.setPurpose(MappingPurpose.PROPAGATION);
    mapping.setConnObjectKeyItem(item);
    provisionTO = new ProvisionTO();
    provisionTO.setAnyType(AnyTypeKind.GROUP.name());
    provisionTO.setObjectClass(ObjectClass.GROUP_NAME);
    resourceTO.getProvisions().add(provisionTO);
    mapping = new MappingTO();
    provisionTO.setMapping(mapping);
    item = new ItemTO();
    item.setIntAttrName("key");
    item.setExtAttrName("groupId");
    item.setConnObjectKey(true);
    item.setPurpose(MappingPurpose.PULL);
    mapping.setConnObjectKeyItem(item);
    Response response = resourceService.create(resourceTO);
    ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
    assertNotNull(actual);
    assertNotNull(actual.getProvision(AnyTypeKind.USER.name()).get().getMapping());
    assertNotNull(actual.getProvision(AnyTypeKind.USER.name()).get().getMapping().getItems());
    assertNotNull(actual.getProvision(AnyTypeKind.GROUP.name()).get().getMapping());
    assertNotNull(actual.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getItems());
    assertEquals(MappingPurpose.PULL, actual.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getConnObjectKeyItem().getPurpose());
    assertEquals(MappingPurpose.PROPAGATION, actual.getProvision(AnyTypeKind.USER.name()).get().getMapping().getConnObjectKeyItem().getPurpose());
}
Also used : Response(javax.ws.rs.core.Response) MappingTO(org.apache.syncope.common.lib.to.MappingTO) ResourceTO(org.apache.syncope.common.lib.to.ResourceTO) ProvisionTO(org.apache.syncope.common.lib.to.ProvisionTO) ItemTO(org.apache.syncope.common.lib.to.ItemTO) Test(org.junit.jupiter.api.Test)

Example 15 with ItemTO

use of org.apache.syncope.common.lib.to.ItemTO in project syncope by apache.

the class SAML2IdPLogic method importIdPs.

private List<SAML2IdPTO> importIdPs(final InputStream input) throws Exception {
    List<EntityDescriptor> idpEntityDescriptors = new ArrayList<>();
    Element root = OpenSAMLUtil.getParserPool().parse(new InputStreamReader(input)).getDocumentElement();
    if (SAMLConstants.SAML20MD_NS.equals(root.getNamespaceURI()) && EntityDescriptor.DEFAULT_ELEMENT_LOCAL_NAME.equals(root.getLocalName())) {
        idpEntityDescriptors.add((EntityDescriptor) OpenSAMLUtil.fromDom(root));
    } else if (SAMLConstants.SAML20MD_NS.equals(root.getNamespaceURI()) && EntitiesDescriptor.DEFAULT_ELEMENT_LOCAL_NAME.equals(root.getLocalName())) {
        NodeList children = root.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node child = children.item(i);
            if (SAMLConstants.SAML20MD_NS.equals(child.getNamespaceURI()) && EntityDescriptor.DEFAULT_ELEMENT_LOCAL_NAME.equals(child.getLocalName())) {
                NodeList descendants = child.getChildNodes();
                for (int j = 0; j < descendants.getLength(); j++) {
                    Node descendant = descendants.item(j);
                    if (SAMLConstants.SAML20MD_NS.equals(descendant.getNamespaceURI()) && IDPSSODescriptor.DEFAULT_ELEMENT_LOCAL_NAME.equals(descendant.getLocalName())) {
                        idpEntityDescriptors.add((EntityDescriptor) OpenSAMLUtil.fromDom((Element) child));
                    }
                }
            }
        }
    }
    List<SAML2IdPTO> result = new ArrayList<>(idpEntityDescriptors.size());
    for (EntityDescriptor idpEntityDescriptor : idpEntityDescriptors) {
        SAML2IdPTO idpTO = new SAML2IdPTO();
        idpTO.setEntityID(idpEntityDescriptor.getEntityID());
        idpTO.setName(idpEntityDescriptor.getEntityID());
        idpTO.setUseDeflateEncoding(false);
        try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
            saml2rw.write(new OutputStreamWriter(baos), idpEntityDescriptor, false);
            idpTO.setMetadata(Base64.getEncoder().encodeToString(baos.toByteArray()));
        }
        ItemTO connObjectKeyItem = new ItemTO();
        connObjectKeyItem.setIntAttrName("username");
        connObjectKeyItem.setExtAttrName("NameID");
        idpTO.setConnObjectKeyItem(connObjectKeyItem);
        SAML2IdPEntity idp = cache.put(idpEntityDescriptor, idpTO);
        if (idp.getSSOLocation(SAML2BindingType.POST) != null) {
            idpTO.setBindingType(SAML2BindingType.POST);
        } else if (idp.getSSOLocation(SAML2BindingType.REDIRECT) != null) {
            idpTO.setBindingType(SAML2BindingType.REDIRECT);
        } else {
            throw new IllegalArgumentException("Neither POST nor REDIRECT artifacts supported by " + idp.getId());
        }
        result.add(idpTO);
    }
    return result;
}
Also used : SAML2IdPTO(org.apache.syncope.common.lib.to.SAML2IdPTO) InputStreamReader(java.io.InputStreamReader) Element(org.w3c.dom.Element) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ItemTO(org.apache.syncope.common.lib.to.ItemTO) EntityDescriptor(org.opensaml.saml.saml2.metadata.EntityDescriptor) SAML2IdPEntity(org.apache.syncope.core.logic.saml2.SAML2IdPEntity) OutputStreamWriter(java.io.OutputStreamWriter)

Aggregations

ItemTO (org.apache.syncope.common.lib.to.ItemTO)35 ResourceTO (org.apache.syncope.common.lib.to.ResourceTO)30 ProvisionTO (org.apache.syncope.common.lib.to.ProvisionTO)25 Test (org.junit.jupiter.api.Test)25 MappingTO (org.apache.syncope.common.lib.to.MappingTO)22 SyncopeClientException (org.apache.syncope.common.lib.SyncopeClientException)17 Response (javax.ws.rs.core.Response)13 UserTO (org.apache.syncope.common.lib.to.UserTO)9 List (java.util.List)7 AnyTypeClassTO (org.apache.syncope.common.lib.to.AnyTypeClassTO)7 GroupTO (org.apache.syncope.common.lib.to.GroupTO)7 MappingPurpose (org.apache.syncope.common.lib.types.MappingPurpose)7 ResourceService (org.apache.syncope.common.rest.api.service.ResourceService)7 HashSet (java.util.HashSet)6 Date (java.util.Date)5 AttrTO (org.apache.syncope.common.lib.to.AttrTO)5 ConnInstanceTO (org.apache.syncope.common.lib.to.ConnInstanceTO)5 AnyTypeKind (org.apache.syncope.common.lib.types.AnyTypeKind)5 ConnConfProperty (org.apache.syncope.common.lib.types.ConnConfProperty)5 Optional (java.util.Optional)4