340 lines
14 KiB
PHP
340 lines
14 KiB
PHP
<?php
|
|
|
|
class OAI2ServerTest extends PHPUnit_Framework_TestCase {
|
|
|
|
function setUp() {
|
|
$this->xml = new DomDocument("1.0", "UTF-8");
|
|
$xml = '<?xml version="1.0" encoding="UTF-8"?>
|
|
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
|
|
<responseDate>'.date('Y-m-d\TH:i:s\Z').'</responseDate>
|
|
</OAI-PMH>';
|
|
$this->xml->loadXML($xml);
|
|
$this->uri = 'test.oai_pmh';
|
|
}
|
|
|
|
function testIdentify() {
|
|
$xml = '<request verb="Identify">test.oai_pmh</request>
|
|
<Identify>
|
|
<repositoryName>OAI2 PMH Test</repositoryName>
|
|
<baseURL>http://198.199.108.242/~neis/oai_pmh/oai2.php</baseURL>
|
|
<protocolVersion>2.0</protocolVersion>
|
|
<adminEmail>danielneis@gmail.com</adminEmail>
|
|
<earliestDatestamp>2013-01-01T12:00:00Z</earliestDatestamp>
|
|
<deletedRecord>no</deletedRecord>
|
|
<granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
|
|
</Identify>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
$args = array('verb' => 'Identify');
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
|
|
function testIdentifyIllegalParameter() {
|
|
$verb = 'Identify';
|
|
$args = array('test' => 'test');
|
|
}
|
|
|
|
function testListMetadataFormats() {
|
|
$xml = '<request verb="ListMetadataFormats">test.oai_pmh</request>
|
|
<ListMetadataFormats>
|
|
<metadataFormat>
|
|
<metadataPrefix>rif</metadataPrefix>
|
|
<schema>http://services.ands.org.au/sandbox/orca/schemata/registryObjects.xsd</schema>
|
|
<metadataNamespace>http://ands.org.au/standards/rif-cs/registryObjects/</metadataNamespace>
|
|
</metadataFormat>
|
|
<metadataFormat>
|
|
<metadataPrefix>oai_dc</metadataPrefix>
|
|
<schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
|
|
<metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
|
|
</metadataFormat>
|
|
</ListMetadataFormats>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
$args = array('verb' => 'ListMetadataFormats');
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
|
|
function testListMetadataFormatsIdentifier() {
|
|
$verb = 'ListMetadataFormats';
|
|
$args = array('identifier' => 'a.b.c');
|
|
}
|
|
|
|
function testListMetadataFormatsIllegalIdentifier() {
|
|
$verb = 'ListMetadataFormats';
|
|
$args = array('identifier' => 'illegalIdentifier');
|
|
}
|
|
|
|
function testListSets() {
|
|
$xml = '<request verb="ListSets">test.oai_pmh</request>
|
|
<ListSets>
|
|
<set>
|
|
<setSpec>class:collection</setSpec>
|
|
<setName>Collections</setName>
|
|
</set>
|
|
<set>
|
|
<setSpec>math</setSpec>
|
|
<setName>Mathematics</setName>
|
|
</set>
|
|
<set>
|
|
<setSpec>phys</setSpec>
|
|
<setName>Physics</setName>
|
|
</set>
|
|
<set>
|
|
<setSpec>phdthesis</setSpec>
|
|
<setName>PHD Thesis</setName>
|
|
<setDescription>
|
|
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:description>This set contains metadata describing electronic music recordings made during the 1950ies</dc:description> </oai_dc:dc>
|
|
</setDescription>
|
|
</set>
|
|
</ListSets>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
$args = array('verb' => 'ListSets');
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
|
|
function testListSetsResumptionToken() {
|
|
$verb = 'ListSets';
|
|
$args = array('resumptionToken' => '????');
|
|
}
|
|
|
|
function testListIdentifiersMetadataPrefix() {
|
|
$xml = '<request verb="ListIdentifiers" metadataPrefix="oai_dc">test.oai_pmh</request>
|
|
<ListIdentifiers>
|
|
<header>
|
|
<identifier>dev.testing.pmh</identifier>
|
|
<datestamp>2013-05-14T18:41:00Z</datestamp>
|
|
<setSpec>class:activity</setSpec>
|
|
</header>
|
|
</ListIdentifiers>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc');
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
|
|
function testListIdentifiers() {
|
|
$args = array('verb' => 'ListIdentifiers');
|
|
}
|
|
function testListIdentifiersResumptionToken() {
|
|
$args = array('verb' => 'ListIdentifiers', 'resumptionToken' => '????');
|
|
}
|
|
function testListIdentifiersResumptionTokenMetadataPrefix() {
|
|
$args = array('verb' => 'ListIdentifiers', 'resumptionToken' => '????', 'metadataPrefix' => 'oai_dc');
|
|
}
|
|
function testListIdentifiersMetadataPrefixSet() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc', 'set' => 'someSet');
|
|
}
|
|
function testListIdentifiersMetadataPrefixFromUntil() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc', 'from' => '2000-01-01', 'until' => '2000-01-01');
|
|
}
|
|
function testListIdentifiersMetadataPrefixSetFromUntil() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc',
|
|
'set' => '????', 'from' => '2000-01-01', 'until' => '2000-01-01');
|
|
}
|
|
function testListIdentifiersMetadataPrefixIllegalSetIllegalFromUntil() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc',
|
|
'set' => 'really_wrong_set',
|
|
'from' => 'some_random_from', 'until' => 'some_random_until');
|
|
}
|
|
function testListIdentifiersDifferentGranularity() {
|
|
$args = array('verb' => 'ListIdentifiers', 'resumptionToken' => '????', 'metadataPrefix' => 'oai_dc',
|
|
'from' => '2000-01-01', 'until' => '2000-01-01T00:00:00Z');
|
|
}
|
|
function testListIdentifiersFromGreaterThanUntil() {
|
|
$args = array('verb' => 'ListIdentifiers', 'resumptionToken' => '????', 'metadataPrefix' => 'oai_dc',
|
|
'from' => '2013-01-01', 'until' => '2000-01-01T00:00:00Z');
|
|
}
|
|
function testListIdentifiersIllegalMetadataPrefix() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'illegalPrefix');
|
|
}
|
|
function testListIdentifiersMetadataPrefixMetadataPrefix() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc', 'metadataPrefix' => 'oai_dc');
|
|
}
|
|
function testListIdentifiersIllegalResumptionToken() {
|
|
$args = array('verb' => 'ListIdentifiers', 'resumptionToken' => 'illegalToken');
|
|
}
|
|
function testListIdentifiersMetadataPrefixFrom() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc', 'from' => '2001-01-01T00:00:00Z');
|
|
}
|
|
function testListIdentifiersMetadataPrefixFromYear() {
|
|
$args = array('verb' => 'ListIdentifiers', 'metadataPrefix' => 'oai_dc', 'from' => '2001');
|
|
}
|
|
|
|
function testListRecords() {
|
|
$verb = 'ListRecords';
|
|
$args = array('verb' => 'ListRecords');
|
|
}
|
|
function testListRecordsMetadataPrefix() {
|
|
|
|
$xml = '<request verb="ListRecords" metadataPrefix="oai_dc">test.oai_pmh</request>
|
|
<ListRecords>
|
|
<record>
|
|
<header>
|
|
<identifier>dev.testing.pmh</identifier>
|
|
<datestamp>2013-05-14T18:11:00Z</datestamp>
|
|
<setSpec>class:activity</setSpec>
|
|
</header>
|
|
<metadata>
|
|
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
|
|
<dc:title>Testing records</dc:title>
|
|
<dc:author>Neis</dc:author>
|
|
</oai_dc:dc>
|
|
</metadata>
|
|
</record>
|
|
</ListRecords>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
$args = array('verb' => 'ListRecords', 'metadataPrefix' => 'oai_dc');
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
function testListRecordsMetadataPrefixFromUntil() {
|
|
$args = array('verb' => 'ListRecords', 'metadataPrefix' => 'oai_dc', 'from' => '2000-01-01', 'until' => '2000-01-01');
|
|
}
|
|
function testListRecordsResumptionToken() {
|
|
$args = array('verb' => 'ListRecords', 'resumptionToken' => '????');
|
|
}
|
|
function testListRecordsMetadataPrefixIllegalSetIllegalFromUntil() {
|
|
$args = array('verb' => 'ListRecords', 'metadataPrefix' => 'oai_dc',
|
|
'set' => 'illegalSet',
|
|
'from' => 'some_random_from', 'until' => 'some_random_until');
|
|
}
|
|
function testListRecordsDifferentGranularity() {
|
|
$args = array('verb' => 'ListRecords', 'resumptionToken' => '????', 'metadataPrefix' => 'oai_dc',
|
|
'from' => '2000-01-01', 'until' => '2000-01-01T00:00:00Z');
|
|
}
|
|
function testListRecordsUntilBeforeEarliestDatestamp() {
|
|
$args = array('verb' => 'ListRecords', 'metadataPrefix' => 'oai_dc', 'until' => '1969-01-01T00:00:00Z');
|
|
}
|
|
function testListRecordsIllegalResumptionToken() {
|
|
$args = array('verb' => 'ListRecords', 'resumptionToken' => 'illegalToken');
|
|
}
|
|
|
|
function testGetRecord() {
|
|
$args = array('verb' => 'GetRecord');
|
|
}
|
|
function testGetRecordIdentifier() {
|
|
$args = array('verb' => 'GetRecord', 'identifier' => 'a.b.c');
|
|
}
|
|
function testGetRecordIdentifierMetadataPrefix() {
|
|
|
|
$xml = '<request verb="GetRecord" metadataPrefix="oai_dc" identifier="a.b.c">test.oai_pmh</request>
|
|
<GetRecord>
|
|
<record>
|
|
<header>
|
|
<identifier>a.b.c</identifier>
|
|
<datestamp>2013-05-14T18:08:00Z</datestamp>
|
|
<setSpec>class:activity</setSpec>
|
|
</header>
|
|
<metadata>
|
|
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
|
|
<dc:title>Testing records</dc:title>
|
|
<dc:author>Neis</dc:author>
|
|
</oai_dc:dc>
|
|
</metadata>
|
|
</record>
|
|
</GetRecord>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
$args = array('verb' => 'GetRecord', 'identifier' => 'a.b.c', 'metadataPrefix' => 'oai_dc');
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
function testGetRecordIdentifierIllegalMetadataPrefix() {
|
|
$args = array('verb' => 'GetRecord', 'identifier' => 'a.b.c', 'metadataPrefix' => 'illegalPrefix');
|
|
}
|
|
function testGetRecordMetadataPrefix() {
|
|
$args = array('verb' => 'GetRecord', 'metadataPrefix' => 'oai_dc');
|
|
}
|
|
function testGetRecordIllegalIdentifierMetadataPrefix() {
|
|
$args = array('verb' => 'GetRecord', 'identifier' => 'illegalID', 'metadataPrefix' => 'oai_dc');
|
|
}
|
|
function testGetRecordInvalidIdentifierMetadataPrefix() {
|
|
$args = array('verb' => 'GetRecord', 'identifier' => 'invalidID', 'metadataPrefix' => 'oai_dc');
|
|
}
|
|
|
|
function testIllegalVerb() {
|
|
$xml = '<request>test.oai_pmh</request>
|
|
<error code="badVerb">Illegal OAI verb</error>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
|
|
$args = array('verb' => 'IllegalVerb');
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
|
|
function testNoVerb() {
|
|
|
|
$xml = '<request>test.oai_pmh</request>
|
|
<error code="badVerb">Illegal OAI verb</error>';
|
|
|
|
$f = $this->xml->createDocumentFragment();
|
|
$f->appendXML($xml);
|
|
$this->xml->documentElement->appendChild($f);
|
|
|
|
$return = true;
|
|
$uri = $this->uri;
|
|
|
|
$args = array();
|
|
|
|
$response = require('oai2.php');
|
|
|
|
$this->assertEqualXMLStructure($this->xml->firstChild, $response->firstChild);
|
|
}
|
|
}
|