/** * {@inheritdoc} */ public function convert($source) { $result = []; $allResources = $this->resourceProvider->getAclResources(); $hashAclResourcesTree = $this->hashResources($allResources[1]['children']); /** @var \DOMNodeList $integrations */ $integrations = $source->getElementsByTagName('integration'); /** @var \DOMElement $integration */ foreach ($integrations as $integration) { if ($integration->nodeType != XML_ELEMENT_NODE) { continue; } $integrationName = $integration->attributes->getNamedItem('name')->nodeValue; $result[$integrationName] = []; $result[$integrationName][self::API_RESOURCES] = []; /** @var \DOMNodeList $resources */ $resources = $integration->getElementsByTagName('resource'); /** @var \DOMElement $resource */ foreach ($resources as $resource) { if ($resource->nodeType != XML_ELEMENT_NODE) { continue; } $resource = $resource->attributes->getNamedItem('name')->nodeValue; $resourceNames = $this->addParentsToResource($hashAclResourcesTree, $resource); foreach ($resourceNames as $name) { $result[$integrationName][self::API_RESOURCES][] = $name; } } // Remove any duplicates added parents $result[$integrationName][self::API_RESOURCES] = array_unique($result[$integrationName][self::API_RESOURCES]); } return $result; }
public function testGetTree() { $resources = ['resource1', 'resource2', 'resource3']; $mappedResources = ['mapped1', 'mapped2', 'mapped3']; $this->aclResourceProviderMock->expects($this->once())->method('getAclResources')->willReturn($resources); $this->integrationDataMock->expects($this->once())->method('mapResources')->willReturn($mappedResources); $this->assertEquals($mappedResources, $this->model->getTree()); }
public function testConvert() { $aclResources = (require __DIR__ . '/_files/acl.php'); $inputData = new \DOMDocument(); $inputData->load(__DIR__ . '/_files/api.xml'); $expectedResult = (require __DIR__ . '/_files/api.php'); $this->resourceProviderMock->expects($this->once())->method('getAclResources')->willReturn($aclResources); $this->assertEquals($expectedResult, $this->model->convert($inputData)); }
/** * {@inheritdoc} */ public function convert($source) { $result = []; $allResources = $this->resourceProvider->getAclResources(); $hashAclResourcesTree = $this->hashResources($allResources[1]['children']); /** @var \DOMNodeList $integrations */ $integrations = $source->getElementsByTagName('integration'); /** @var \DOMElement $integration */ foreach ($integrations as $integration) { if ($integration->nodeType != XML_ELEMENT_NODE) { continue; } $integrationName = $integration->attributes->getNamedItem('name')->nodeValue; $result[$integrationName] = []; $result[$integrationName][self::API_RESOURCES] = []; /** @var \DOMElement $email */ $email = $integration->getElementsByTagName('email')->item(0)->nodeValue; /** @var \DOMNodeList $resources */ $resources = $integration->getElementsByTagName('resource'); $result[$integrationName][self::KEY_EMAIL] = $email; if ($integration->getElementsByTagName('endpoint_url')->length) { /** @var \DOMElement $endpointUrl */ $endpointUrl = $integration->getElementsByTagName('endpoint_url')->item(0)->nodeValue; $result[$integrationName][self::KEY_AUTHENTICATION_ENDPOINT_URL] = $endpointUrl; } if ($integration->getElementsByTagName('identity_link_url')->length) { /** @var \DOMElement $identityLinkUrl */ $identityLinkUrl = $integration->getElementsByTagName('identity_link_url')->item(0)->nodeValue; $result[$integrationName][self::KEY_IDENTITY_LINKING_URL] = $identityLinkUrl; } /** @var \DOMElement $resource */ foreach ($resources as $resource) { if ($resource->nodeType != XML_ELEMENT_NODE) { continue; } $resource = $resource->attributes->getNamedItem('name')->nodeValue; $resourceNames = $this->addParentsToResource($hashAclResourcesTree, $resource); foreach ($resourceNames as $name) { $result[$integrationName][self::API_RESOURCES][] = $name; } } // Remove any duplicates added parents $result[$integrationName][self::API_RESOURCES] = array_values(array_unique($result[$integrationName][self::API_RESOURCES])); } return $result; }
/** * Return an array of selected resource ids. * * If everything is allowed then iterate through all * available resources to generate a comprehensive array of all resource ids, rather than just * returning "Magento_Backend::all". * * @return string */ public function getSelectedResourcesJson() { $selectedResources = $this->_selectedResources; if ($this->isEverythingAllowed()) { $resources = $this->_resourceProvider->getAclResources(); $selectedResources = $this->_getAllResourceIds($resources[1]['children']); } return $this->encoder->encode($selectedResources); }
public function testGetTree() { $this->webapiBlock = $this->getWebapiBlock(); $resources = [1 => ['children' => [1, 2, 3]]]; $this->aclResourceProvider->expects($this->once())->method('getAclResources')->will($this->returnValue($resources)); $rootArray = "rootArrayValue"; $this->integrationHelper->expects($this->once())->method('mapResources')->with([1, 2, 3])->will($this->returnValue($rootArray)); $this->assertEquals($rootArray, $this->webapiBlock->getTree()); }
/** * Get Json Representation of Resource Tree * * @return array */ public function getTree() { $resources = $this->aclResourceProvider->getAclResources(); $rootArray = $this->integrationData->mapResources(isset($resources[1]['children']) ? $resources[1]['children'] : []); return $rootArray; }
/** * Populate ACL with resources from external storage * * @param Acl $acl * @return void */ public function populateAcl(Acl $acl) { $this->_addResourceTree($acl, $this->_resourceProvider->getAclResources(), null); }