simple-oai-pmh/OAI2ServerTest.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);
}
}