Compare commits
6 Commits
0.9
...
bb738a1d79
| Author | SHA1 | Date | |
|---|---|---|---|
| bb738a1d79 | |||
| fd029a79bf | |||
| 2954d9fc99 | |||
| f29af2b664 | |||
| 5584f10462 | |||
| f937f2b426 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -5,3 +5,6 @@ cache
|
||||
.config
|
||||
.local
|
||||
*.phar
|
||||
.composer
|
||||
.phpunit*
|
||||
.bash_history
|
||||
108
CloudObjects/SDK/CloudObject.php
Normal file
108
CloudObjects/SDK/CloudObject.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
namespace CloudObjects\SDK;
|
||||
|
||||
use ML\IRI\IRI;
|
||||
use ML\JsonLD\Node;
|
||||
use CloudObjects\SDK\NodeReader;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
/**
|
||||
* A CloudObject encapsulates an object node for an object stored in CloudObjects Core
|
||||
* with convenience methods to access properties.
|
||||
*/
|
||||
class CloudObject {
|
||||
|
||||
private $coid;
|
||||
private $node;
|
||||
private $reader;
|
||||
|
||||
public function __construct(IRI $coid, Node $node) {
|
||||
Assert::eq((string)$coid, $node->getId(), "COID and Node ID must match.");
|
||||
|
||||
$this->coid = $coid;
|
||||
$this->node = $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify a custom NodeReader to use for this CloudObject.
|
||||
* If not set, a default NodeReader will be used.
|
||||
*/
|
||||
public function setReader(NodeReader $reader) {
|
||||
$this->reader = $reader;
|
||||
}
|
||||
|
||||
private function getReader() {
|
||||
if (!$this->reader) {
|
||||
$this->reader = new NodeReader;
|
||||
}
|
||||
return $this->reader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the COID of this object.
|
||||
*/
|
||||
public function getCOID() : IRI {
|
||||
return $this->coid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the raw object node.
|
||||
*/
|
||||
public function getObjectNode() : Node {
|
||||
return $this->node;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of a property as a string.
|
||||
* If the property has multiple values, only the first is returned.
|
||||
*/
|
||||
public function getString($property, string $default = null) : ?string {
|
||||
return $this->getReader()->getFirstValueString($this->node, $property, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of a property as an integer.
|
||||
* If the property has multiple values, only the first is returned.
|
||||
*/
|
||||
public function getInt($property, int $default = null) : ?int {
|
||||
return $this->getReader()->getFirstValueInt($this->node, $property, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of a property as a float.
|
||||
* If the property has multiple values, only the first is returned.
|
||||
*/
|
||||
public function getFloat($property, float $default = null) : ?float {
|
||||
return $this->getReader()->getFirstValueFloat($this->node, $property, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of a property as a boolean.
|
||||
* If the property has multiple values, only the first is returned.
|
||||
*/
|
||||
public function getBool($property, bool $default = null) : ?bool {
|
||||
return $this->getReader()->getFirstValueBool($this->node, $property, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of a property as an IRI.
|
||||
* If the property has multiple values, only the first is returned.
|
||||
*/
|
||||
public function getIRI($property, IRI $default = null) : ?IRI {
|
||||
return $this->getReader()->getFirstValueIRI($this->node, $property, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of a property as a Node.
|
||||
* If the property has multiple values, only the first is returned.
|
||||
*/
|
||||
public function getNode($property, Node $default = null) : ?Node {
|
||||
return $this->getReader()->getFirstValueNode($this->node, $property, $default);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -59,7 +59,7 @@ class CryptoHelper {
|
||||
|
||||
$this->objectRetriever = $objectRetriever;
|
||||
$this->namespace = isset($namespaceCoid)
|
||||
? $objectRetriever->getObject($namespaceCoid)
|
||||
? $objectRetriever->getObjectNode($namespaceCoid)
|
||||
: $objectRetriever->getAuthenticatingNamespaceObject();
|
||||
|
||||
$this->reader = new NodeReader([
|
||||
|
||||
@@ -50,7 +50,7 @@ class SharedSecretAuthentication {
|
||||
return self::RESULT_INVALID_PASSWORD;
|
||||
|
||||
// Retrieve namespace
|
||||
$namespace = $retriever->getObject($namespaceCoid);
|
||||
$namespace = $retriever->getObjectNode($namespaceCoid);
|
||||
if (!isset($namespace))
|
||||
return self::RESULT_NAMESPACE_NOT_FOUND;
|
||||
|
||||
@@ -87,7 +87,7 @@ class SharedSecretAuthentication {
|
||||
return self::RESULT_INVALID_PASSWORD;
|
||||
|
||||
// Retrieve namespace
|
||||
$namespace = $this->objectRetriever->getObject($namespaceCoid);
|
||||
$namespace = $this->objectRetriever->getObjectNode($namespaceCoid);
|
||||
if (!isset($namespace))
|
||||
return self::RESULT_NAMESPACE_NOT_FOUND;
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ class SchemaValidator {
|
||||
* @param Node $node The COID of the specification.
|
||||
*/
|
||||
public function validateAgainstCOID($data, IRI $coid) {
|
||||
$object = $this->objectRetriever->getObject($coid);
|
||||
$object = $this->objectRetriever->getObjectNode($coid);
|
||||
Assert::true($this->reader->hasType($object, 'json:Element'),
|
||||
"You can only validate data against JSON elements!");
|
||||
$this->validateAgainstNode($data, $object);
|
||||
|
||||
@@ -170,15 +170,34 @@ class ObjectRetriever implements CustomCacheAndLogInterface {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an object description from CloudObjects. Attempts to get object
|
||||
* from in-memory cache first, stored static configurations next,
|
||||
* configured external cache third, and finally calls the Object API
|
||||
* on CloudObjects Core. Returns null if the object was not found.
|
||||
* Get an object description and return a CloudObject.
|
||||
*/
|
||||
public function getCloudObject(IRI $coid) {
|
||||
$node = $this->getObjectNode($coid);
|
||||
if (!$node) {
|
||||
// Object not found
|
||||
return null;
|
||||
}
|
||||
|
||||
return new CloudObject($coid, $node);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an object description and return a node.
|
||||
*
|
||||
* @deprecated Use getObjectNode() instead
|
||||
*/
|
||||
public function getObject(IRI $coid) {
|
||||
return $this->getObjectNode($coid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an object description from CloudObjects and return a node.
|
||||
*
|
||||
* @param IRI $coid COID of the object
|
||||
* @return Node|null
|
||||
*/
|
||||
public function getObject(IRI $coid) {
|
||||
public function getObjectNode(IRI $coid) {
|
||||
if (!COIDParser::isValidCOID($coid))
|
||||
throw new Exception("Not a valid COID.");
|
||||
|
||||
@@ -394,10 +413,11 @@ class ObjectRetriever implements CustomCacheAndLogInterface {
|
||||
|
||||
/**
|
||||
* Get an object description from CloudObjects. Shorthand method for
|
||||
* "getObject" which allows passing the COID as string instead of IRI.
|
||||
* "getObjectNode" which allows passing the COID as string instead of IRI.
|
||||
*
|
||||
* @param any $coid
|
||||
* @return Node|null
|
||||
* @deprecated Interface may change
|
||||
*/
|
||||
public function get($coid) {
|
||||
if (is_string($coid))
|
||||
@@ -425,7 +445,7 @@ class ObjectRetriever implements CustomCacheAndLogInterface {
|
||||
$ts = microtime(true);
|
||||
|
||||
$cacheId = $object->getId().'#'.$filename;
|
||||
$fileData = $this->getFromCache($cacheId);
|
||||
$fileData = $this->getFromCache($cacheId);
|
||||
|
||||
// Parse cached data into revision and content
|
||||
if (isset($fileData)) {
|
||||
|
||||
@@ -157,7 +157,7 @@ class APIClientFactory {
|
||||
if ($this->reader->hasProperty($api, 'oauth2:hasAuthorizationServer')) {
|
||||
// We have an authorization server for this endpoint/API
|
||||
$authServerCoid = $this->reader->getFirstValueIRI($api, 'oauth2:hasAuthorizationServer');
|
||||
$authServerObject = $this->objectRetriever->getObject($authServerCoid);
|
||||
$authServerObject = $this->objectRetriever->getObjectNode($authServerCoid);
|
||||
if (!isset($authServerObject))
|
||||
throw new InvalidObjectConfigurationException("Authorization server object <"
|
||||
. (string)$authServerCoid . "> not available.");
|
||||
@@ -220,7 +220,7 @@ class APIClientFactory {
|
||||
public function __construct(ObjectRetriever $objectRetriever, IRI $namespaceCoid = null) {
|
||||
$this->objectRetriever = $objectRetriever;
|
||||
$this->namespace = isset($namespaceCoid)
|
||||
? $objectRetriever->getObject($namespaceCoid)
|
||||
? $objectRetriever->getObjectNode($namespaceCoid)
|
||||
: $objectRetriever->getAuthenticatingNamespaceObject();
|
||||
|
||||
$this->reader = new NodeReader([
|
||||
@@ -242,7 +242,7 @@ class APIClientFactory {
|
||||
public function getClientWithCOID(IRI $apiCoid, bool $specificClient = false) {
|
||||
$idString = (string)$apiCoid.(string)$specificClient;
|
||||
if (!isset($this->apiClients[$idString])) {
|
||||
$object = $this->objectRetriever->getObject($apiCoid);
|
||||
$object = $this->objectRetriever->getObjectNode($apiCoid);
|
||||
if (!isset($object))
|
||||
throw new CoreAPIException("Could not retrieve API <".(string)$apiCoid.">.");
|
||||
$this->apiClients[$idString] = $this->createClient($object, $specificClient);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "cloudobjects/sdk",
|
||||
"description": "CloudObjects SDK for PHP for working with COIDs and object descriptions from CloudObjects.",
|
||||
"keywords": ["cloudobjects", "sdk"],
|
||||
"homepage": "https://github.com/CloudObjects/CloudObjects-PHP-SDK",
|
||||
"homepage": "https://codeberg.org/CloudObjects/CloudObjects-PHP-SDK",
|
||||
"license": "MPL-2.0",
|
||||
"require" : {
|
||||
"ml/json-ld": ">=1.0.7",
|
||||
@@ -10,7 +10,7 @@
|
||||
"doctrine/cache" : "1.*",
|
||||
"guzzlehttp/guzzle" : ">=6.0",
|
||||
"psr/log": ">=1.1",
|
||||
"kevinrob/guzzle-cache-middleware": "^3.2",
|
||||
"kevinrob/guzzle-cache-middleware": "^7.0.0",
|
||||
"webmozart/assert": "^1.6"
|
||||
},
|
||||
"authors": [
|
||||
@@ -24,16 +24,16 @@
|
||||
}
|
||||
},
|
||||
"require-dev" : {
|
||||
"phpunit/phpunit": ">=4.8.0,<5.0",
|
||||
"phpunit/phpunit": "^10",
|
||||
"symfony/http-foundation" : ">=4.0",
|
||||
"symfony/psr-http-message-bridge" : ">=1.1.0",
|
||||
"nyholm/psr7" : "~1.5.1",
|
||||
"defuse/php-encryption" : "^2.2"
|
||||
},
|
||||
"suggest" : {
|
||||
"symfony/http-foundation" : "Required to use parseSymfonyRequest() in AccountContext.",
|
||||
"symfony/psr-http-message-bridge" : "Required to use parseSymfonyRequest() in AccountContext.",
|
||||
"nyholm/psr7" : "Required to use parseSymfonyRequest() in AccountContext.",
|
||||
"symfony/http-foundation" : "Required to use fromSymfonyRequest() in AccountContext.",
|
||||
"symfony/psr-http-message-bridge" : "Required to use fromSymfonyRequest() in AccountContext.",
|
||||
"nyholm/psr7" : "Required to use fromSymfonyRequest() in AccountContext.",
|
||||
"defuse/php-encryption": "Required to use CryptoHelper"
|
||||
}
|
||||
}
|
||||
|
||||
1870
composer.lock
generated
1870
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit backupGlobals="false"
|
||||
backupStaticAttributes="false"
|
||||
colors="true"
|
||||
convertErrorsToExceptions="true"
|
||||
convertNoticesToExceptions="true"
|
||||
convertWarningsToExceptions="true"
|
||||
processIsolation="false"
|
||||
stopOnFailure="false"
|
||||
syntaxCheck="false"
|
||||
bootstrap="./tests/bootstrap.php">
|
||||
<testsuites>
|
||||
<testsuite name="OfflineTests">
|
||||
|
||||
5
run-docker.sh
Normal file
5
run-docker.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
docker run -d -v .:/root --name cloudobjects-sdk-test cloudobjects/php-build-base:8.3
|
||||
docker exec cloudobjects-sdk-test bash -c "cd /root && composer install"
|
||||
docker exec cloudobjects-sdk-test bash -c "cd /root && vendor/bin/phpunit"
|
||||
docker stop cloudobjects-sdk-test
|
||||
docker rm cloudobjects-sdk-test
|
||||
@@ -8,7 +8,7 @@ namespace CloudObjects\SDK\AccountGateway;
|
||||
|
||||
use ML\IRI\IRI;
|
||||
|
||||
class AAUIDParserTest extends \PHPUnit_Framework_TestCase {
|
||||
class AAUIDParserTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
public function testValidAccountAAUID() {
|
||||
$aauid = new IRI('aauid:abcd1234abcd1234');
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace CloudObjects\SDK\AccountGateway;
|
||||
use GuzzleHttp\Psr7\Request as GuzzlePsrRequest;
|
||||
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
|
||||
|
||||
class AccountContextParseTest extends \PHPUnit_Framework_TestCase {
|
||||
class AccountContextParseTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
public function testParsePsrRequest() {
|
||||
$request = new GuzzlePsrRequest('GET', '/', [
|
||||
|
||||
@@ -8,11 +8,11 @@ namespace CloudObjects\SDK\AccountGateway;
|
||||
|
||||
use ML\IRI\IRI;
|
||||
|
||||
class AccountContextTest extends \PHPUnit_Framework_TestCase {
|
||||
class AccountContextTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
private $context;
|
||||
|
||||
protected function setUp() {
|
||||
protected function setUp(): void {
|
||||
$this->context = new AccountContext(new IRI('aauid:aaaabbbbccccdddd'), 'DUMMY');
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace CloudObjects\SDK;
|
||||
|
||||
use ML\IRI\IRI;
|
||||
|
||||
class COIDParserTest extends \PHPUnit_Framework_TestCase {
|
||||
class COIDParserTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
public function testRootCOID() {
|
||||
$coid = new IRI('coid://example.com');
|
||||
|
||||
@@ -11,7 +11,7 @@ use GuzzleHttp\Client, GuzzleHttp\Handler\MockHandler,
|
||||
GuzzleHttp\HandlerStack, GuzzleHttp\Psr7\Response;
|
||||
use CloudObjects\SDK\ObjectRetriever;
|
||||
|
||||
class CryptoHelperTest extends \PHPUnit_Framework_TestCase {
|
||||
class CryptoHelperTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
private $retriever;
|
||||
private $graph;
|
||||
@@ -22,7 +22,7 @@ class CryptoHelperTest extends \PHPUnit_Framework_TestCase {
|
||||
$this->retriever->setClient(new Client(['handler' => $handler]));
|
||||
}
|
||||
|
||||
public function setUp() {
|
||||
protected function setUp(): void {
|
||||
$this->retriever = new ObjectRetriever([
|
||||
'auth_ns' => 'test.cloudobjects.io',
|
||||
'auth_secret' => 'TEST'
|
||||
|
||||
@@ -10,12 +10,12 @@ use InvalidArgumentException;
|
||||
use ML\JsonLD\JsonLD;
|
||||
use CloudObjects\SDK\ObjectRetriever;
|
||||
|
||||
class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
class SchemaValidatorTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
private $schemaValidator;
|
||||
private $graph;
|
||||
|
||||
public function setUp() {
|
||||
protected function setUp(): void {
|
||||
$this->schemaValidator = new SchemaValidator(new ObjectRetriever);
|
||||
$this->graph = JsonLD::getDocument('{}')->getGraph();
|
||||
}
|
||||
@@ -24,10 +24,11 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/String'));
|
||||
$this->schemaValidator->validateAgainstNode("Test", $node);
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testNotString() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/String'));
|
||||
@@ -38,10 +39,11 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/Number'));
|
||||
$this->schemaValidator->validateAgainstNode(3.5, $node);
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testNotNumber() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/Number'));
|
||||
@@ -52,10 +54,11 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/Integer'));
|
||||
$this->schemaValidator->validateAgainstNode(12, $node);
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testNotInteger() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/Integer'));
|
||||
@@ -66,10 +69,11 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/Array'));
|
||||
$this->schemaValidator->validateAgainstNode([ 1, 2, "foo" ], $node);
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testNotArray() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/Array'));
|
||||
@@ -83,10 +87,11 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
'a' => 'A',
|
||||
'b' => 'B'
|
||||
], $node);
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testNotObject() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$node = $this->graph->createNode();
|
||||
$node->setType($this->graph->createNode('coid://json.co-n.net/Object'));
|
||||
@@ -105,10 +110,11 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
'a' => 'A',
|
||||
'b' => 'B'
|
||||
], $node);
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testObjectWithPropertyTypeError() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$stringNode = $this->graph->createNode();
|
||||
$stringNode->setProperty('coid://json.co-n.net/hasKey', 'a');
|
||||
@@ -136,10 +142,11 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
'a' => 'A',
|
||||
'b' => 'B'
|
||||
], $node);
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testObjectWithRequiredPropertyTypeError() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$stringNode = $this->graph->createNode();
|
||||
$stringNode->setProperty('coid://json.co-n.net/hasKey', 'a');
|
||||
@@ -156,7 +163,7 @@ class SchemaValidatorTest extends \PHPUnit_Framework_TestCase {
|
||||
}
|
||||
|
||||
public function testObjectWithRequiredPropertyMissing() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$stringNode = $this->graph->createNode();
|
||||
$stringNode->setProperty('coid://json.co-n.net/hasKey', 'a');
|
||||
|
||||
@@ -10,7 +10,7 @@ use ML\IRI\IRI;
|
||||
use GuzzleHttp\Client, GuzzleHttp\Handler\MockHandler,
|
||||
GuzzleHttp\HandlerStack, GuzzleHttp\Psr7\Response;
|
||||
|
||||
class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
class NodeReaderMockTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
private $retriever;
|
||||
private $reader;
|
||||
@@ -27,7 +27,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
'{"@context":{"co":"coid:\/\/cloudobjects.io\/","rdf":"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#","agws":"coid:\/\/aauid.net\/","rdfs":"http:\/\/www.w3.org\/2000\/01\/rdf-schema#"},"@id":"coid:\/\/cloudobjects.io","@type":["agws:Service","co:Namespace"],"co:isAtRevision":"6-fbea0c90b2c5e5300e4039ed99be9b2d","co:isVisibleTo":{"@id":"co:Public"},"co:recommendsPrefix":"co","co:wasUpdatedAt":{"@type":"http:\/\/www.w3.org\/2001\/XMLSchema#dateTime","@value":"2017-01-16T17:29:22+00:00"},"rdfs:comment":"The CloudObjects namespace defines the essential objects.","rdfs:label":"CloudObjects"}'));
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
protected function setUp(): void {
|
||||
$this->retriever = new ObjectRetriever;
|
||||
$this->reader = new NodeReader([
|
||||
'prefixes' => [
|
||||
@@ -40,7 +40,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testHasType1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertTrue($this->reader->hasType($object, 'coid://cloudobjects.io/Namespace'));
|
||||
$this->assertTrue($this->reader->hasType($object, 'co:Namespace'));
|
||||
@@ -51,7 +51,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testHasPropertyValue1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertTrue($this->reader->hasPropertyValue($object, 'http://www.w3.org/2000/01/rdf-schema#label', 'CloudObjects'));
|
||||
$this->assertTrue($this->reader->hasPropertyValue($object, 'rdfs:label', 'CloudObjects'));
|
||||
@@ -60,7 +60,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testGetFirstValueString1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertEquals('CloudObjects', $this->reader->getFirstValueString($object, 'http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertEquals('CloudObjects', $this->reader->getFirstValueString($object, 'rdfs:label'));
|
||||
@@ -75,7 +75,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testGetFirstValueIRI1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertInstanceOf('ML\IRI\IRI', $this->reader->getFirstValueIRI($object, 'coid://cloudobjects.io/isVisibleTo'));
|
||||
$this->assertInstanceOf('ML\IRI\IRI', $this->reader->getFirstValueIRI($object, 'co:isVisibleTo'));
|
||||
@@ -87,7 +87,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testGetFirstValueNode1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertInstanceOf('ML\JsonLD\Node', $this->reader->getFirstValueNode($object, 'coid://cloudobjects.io/isVisibleTo'));
|
||||
$this->assertInstanceOf('ML\JsonLD\Node', $this->reader->getFirstValueNode($object, 'co:isVisibleTo'));
|
||||
@@ -99,7 +99,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testGetAllValuesString1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertCount(1, $this->reader->getAllValuesString($object, 'http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertCount(1, $this->reader->getAllValuesString($object, 'rdfs:label'));
|
||||
@@ -116,7 +116,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testGetAllValuesIRI1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertCount(0, $this->reader->getAllValuesIRI($object, 'http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertCount(0, $this->reader->getAllValuesIRI($object, 'rdfs:label'));
|
||||
@@ -136,7 +136,7 @@ class NodeReaderMockTest extends \PHPUnit_Framework_TestCase {
|
||||
public function testGetAllValuesNode1() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$this->useRootResourceMock();
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
|
||||
$this->assertCount(0, $this->reader->getAllValuesNode($object, 'http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertCount(0, $this->reader->getAllValuesNode($object, 'rdfs:label'));
|
||||
|
||||
@@ -8,33 +8,46 @@ namespace CloudObjects\SDK;
|
||||
|
||||
use ML\IRI\IRI;
|
||||
use GuzzleHttp\Client, GuzzleHttp\Handler\MockHandler,
|
||||
GuzzleHttp\HandlerStack, GuzzleHttp\Psr7\Response;
|
||||
GuzzleHttp\HandlerStack, GuzzleHttp\Psr7\Response;
|
||||
|
||||
class ObjectRetrieverMockTest extends \PHPUnit_Framework_TestCase {
|
||||
class ObjectRetrieverMockTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
private $retriever;
|
||||
private $retriever;
|
||||
|
||||
private function setMockResponse(Response $response) {
|
||||
$mock = new MockHandler([$response]);
|
||||
$handler = HandlerStack::create($mock);
|
||||
$this->retriever->setClient(new Client(['handler' => $handler]));
|
||||
}
|
||||
private function setMockResponse(Response $response) {
|
||||
$mock = new MockHandler([$response]);
|
||||
$handler = HandlerStack::create($mock);
|
||||
$this->retriever->setClient(new Client(['handler' => $handler]));
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
$this->retriever = new ObjectRetriever;
|
||||
}
|
||||
protected function setUp(): void {
|
||||
$this->retriever = new ObjectRetriever;
|
||||
}
|
||||
|
||||
public function testGetRootResource() {
|
||||
$this->setMockResponse(new Response(200,
|
||||
['Content-Type' => 'application/ld+json'],
|
||||
'{"@context":{"cloudobjects":"coid:\/\/cloudobjects.io\/","rdf":"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#","rdfs":"http:\/\/www.w3.org\/2000\/01\/rdf-schema#"},"@id":"coid:\/\/cloudobjects.io","@type":"cloudobjects:Namespace","cloudobjects:hasPublicListing":"true","cloudobjects:revision":"1-325baa62b76105f56dc09386f5a2ec91","rdfs:comment":"The CloudObjects namespace defines the essential objects.","rdfs:label":"CloudObjects"}'));
|
||||
public function testGetRootResource() {
|
||||
$this->setMockResponse(new Response(200,
|
||||
['Content-Type' => 'application/ld+json'],
|
||||
'{"@context":{"cloudobjects":"coid:\/\/cloudobjects.io\/","rdf":"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#","rdfs":"http:\/\/www.w3.org\/2000\/01\/rdf-schema#"},"@id":"coid:\/\/cloudobjects.io","@type":"cloudobjects:Namespace","cloudobjects:hasPublicListing":"true","cloudobjects:revision":"1-325baa62b76105f56dc09386f5a2ec91","rdfs:comment":"The CloudObjects namespace defines the essential objects.","rdfs:label":"CloudObjects"}'
|
||||
));
|
||||
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$this->assertNotNull($object);
|
||||
$this->assertEquals((string)$coid, $object->getID());
|
||||
$this->assertNotNull($object->getProperty('http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertEquals('CloudObjects', $object->getProperty('http://www.w3.org/2000/01/rdf-schema#label')->getValue());
|
||||
}
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
|
||||
// Test node interface first
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
$this->assertNotNull($object);
|
||||
$this->assertEquals((string)$coid, $object->getId());
|
||||
$this->assertNotNull($object->getProperty('http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertEquals('CloudObjects', $object->getProperty('http://www.w3.org/2000/01/rdf-schema#label')->getValue());
|
||||
$this->assertNull($object->getProperty('urn:example:nonexistingvalue'));
|
||||
|
||||
// Test CloudObject interface
|
||||
$object = $this->retriever->getCloudObject($coid);
|
||||
$this->assertNotNull($object);
|
||||
$this->assertEquals((string)$coid, $object->getObjectNode()->getID());
|
||||
$this->assertEquals($coid, $object->getCOID());
|
||||
$this->assertNotNull($object->getString('http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertEquals('CloudObjects', $object->getString('http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
$this->assertNull($object->getString('urn:example:nonexistingvalue'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,11 +10,11 @@ use InvalidArgumentException;
|
||||
use ML\IRI\IRI;
|
||||
use CloudObjects\SDK\ObjectRetriever;
|
||||
|
||||
class SchemaValidatorPublicTest extends \PHPUnit_Framework_TestCase {
|
||||
class SchemaValidatorPublicTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
private $schemaValidator;
|
||||
|
||||
public function setUp() {
|
||||
protected function setUp(): void {
|
||||
$this->schemaValidator = new SchemaValidator(new ObjectRetriever);
|
||||
}
|
||||
|
||||
@@ -24,10 +24,11 @@ class SchemaValidatorPublicTest extends \PHPUnit_Framework_TestCase {
|
||||
'region' => 'Hessen',
|
||||
'country-name' => 'Germany'
|
||||
], new IRI('coid://json.co-n.net/Address'));
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testNotAddress() {
|
||||
$this->setExpectedException(InvalidArgumentException::class);
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
$this->schemaValidator->validateAgainstCOID([
|
||||
'region' => 'Hessen',
|
||||
|
||||
@@ -8,11 +8,11 @@ namespace CloudObjects\SDK;
|
||||
|
||||
use ML\IRI\IRI;
|
||||
|
||||
class ObjectRetrieverTest extends \PHPUnit_Framework_TestCase {
|
||||
class ObjectRetrieverPublicTest extends \PHPUnit\Framework\TestCase {
|
||||
|
||||
private $retriever;
|
||||
|
||||
protected function setUp() {
|
||||
protected function setUp(): void {
|
||||
$this->retriever = new ObjectRetriever;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ class ObjectRetrieverTest extends \PHPUnit_Framework_TestCase {
|
||||
|
||||
public function testGetRootObject() {
|
||||
$coid = new IRI('coid://cloudobjects.io');
|
||||
$object = $this->retriever->getObject($coid);
|
||||
$object = $this->retriever->getObjectNode($coid);
|
||||
$this->assertNotNull($object);
|
||||
$this->assertEquals((string)$coid, $object->getID());
|
||||
$this->assertNotNull($object->getProperty('http://www.w3.org/2000/01/rdf-schema#label'));
|
||||
|
||||
Reference in New Issue
Block a user