19declare(strict_types=1);
26class RequestProcessorListIdentifiersTest
extends RequestProcessorTestCase
28 public function testGetResponseToRequestListIdentifiers(): void
30 $processor =
new RequestProcessor(
32 $this->getSettings(
'prefix_'),
33 $repo = $this->getRepository(
40 $this->getTokenHandler()
43 $expected_response = <<<XML
45 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc</response_info>
52 $response = $processor->getResponseToRequest($this->getRequest(
54 Verb::LIST_IDENTIFIERS,
55 [Argument::MD_PREFIX->value =>
'oai_dc'],
59 [[
'from' =>
null,
'until' =>
null,
'limit' => 100,
'offset' => 0]],
60 $repo->exposed_parameters
62 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
65 public function testGetResponseToRequestListIdentifiersWithDeletedRecord(): void
67 $processor =
new RequestProcessor(
69 $this->getSettings(
'prefix_'),
70 $repo = $this->getRepository(
77 $this->getTokenHandler()
80 $expected_response = <<<XML
82 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc</response_info>
84 <deleted_header>prefix_delid2+2022-11-27:2022-11-27</deleted_header>
89 $response = $processor->getResponseToRequest($this->getRequest(
91 Verb::LIST_IDENTIFIERS,
92 [Argument::MD_PREFIX->value =>
'oai_dc'],
96 [[
'from' =>
null,
'until' =>
null,
'limit' => 100,
'offset' => 0]],
97 $repo->exposed_parameters
99 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
102 public function testGetResponseToRequestListIdentifiersWithDefaultSet(): void
104 $processor =
new RequestProcessor(
106 $this->getSettings(
'prefix_'),
107 $repo = $this->getRepository(
114 $this->getTokenHandler()
117 $expected_response = <<<XML
119 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,
set=
default</response_info>
126 $response = $processor->getResponseToRequest($this->getRequest(
128 Verb::LIST_IDENTIFIERS,
129 [Argument::MD_PREFIX->value =>
'oai_dc',
Argument::SET->value =>
'default'],
133 [[
'from' =>
null,
'until' =>
null,
'limit' => 100,
'offset' => 0]],
134 $repo->exposed_parameters
136 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
139 public function testGetResponseToRequestListIdentifiersWithFromDate(): void
141 $processor =
new RequestProcessor(
143 $this->getSettings(
'prefix_'),
144 $repo = $this->getRepository(
151 $this->getTokenHandler()
154 $expected_response = <<<XML
156 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,
from=2019-01-02</response_info>
163 $response = $processor->getResponseToRequest($this->getRequest(
165 Verb::LIST_IDENTIFIERS,
166 [Argument::MD_PREFIX->value =>
'oai_dc', Argument::FROM_DATE->value =>
'2019-01-02'],
170 [[
'from' =>
'2019-01-02',
'until' =>
null,
'limit' => 100,
'offset' => 0]],
171 $repo->exposed_parameters
173 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
176 public function testGetResponseToRequestListIdentifiersWithUntilDate(): void
178 $processor =
new RequestProcessor(
180 $this->getSettings(
'prefix_'),
181 $repo = $this->getRepository(
188 $this->getTokenHandler()
191 $expected_response = <<<XML
193 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,until=2033-11-02</response_info>
200 $response = $processor->getResponseToRequest($this->getRequest(
202 Verb::LIST_IDENTIFIERS,
203 [Argument::MD_PREFIX->value =>
'oai_dc', Argument::UNTIL_DATE->value =>
'2033-11-02'],
207 [[
'from' =>
null,
'until' =>
'2033-11-02',
'limit' => 100,
'offset' => 0]],
208 $repo->exposed_parameters
210 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
213 public function testGetResponseToRequestListIdentifiersWithBothDates(): void
215 $processor =
new RequestProcessor(
217 $this->getSettings(
'prefix_'),
218 $repo = $this->getRepository(
225 $this->getTokenHandler()
228 $expected_response = <<<XML
230 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,until=2033-11-02,
from=2019-01-02</response_info>
237 $response = $processor->getResponseToRequest($this->getRequest(
239 Verb::LIST_IDENTIFIERS,
241 Argument::MD_PREFIX->value =>
'oai_dc',
242 Argument::UNTIL_DATE->value =>
'2033-11-02',
243 Argument::FROM_DATE->value =>
'2019-01-02'
248 [[
'from' =>
'2019-01-02',
'until' =>
'2033-11-02',
'limit' => 100,
'offset' => 0]],
249 $repo->exposed_parameters
251 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
254 public function testGetResponseToRequestListIdentifiersIncompleteList(): void
256 $processor =
new RequestProcessor(
258 $this->getSettings(
'prefix_'),
259 $repo = $this->getRepository(
266 $this->getTokenHandler()
269 $expected_response = <<<XML
271 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc</response_info>
275 <token>next_offset=100:
from=:until=,fullsize=203,cursor=0</token>
279 $response = $processor->getResponseToRequest($this->getRequest(
281 Verb::LIST_IDENTIFIERS,
282 [Argument::MD_PREFIX->value =>
'oai_dc'],
286 [[
'from' =>
null,
'until' =>
null,
'limit' => 100,
'offset' => 0]],
287 $repo->exposed_parameters
289 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
292 public function testGetResponseToRequestListIdentifiersWithResumptionToken(): void
294 $original_request = $this->getRequest(
296 Verb::LIST_IDENTIFIERS,
297 [Argument::RESUMPTION_TOKEN->value =>
'next_offset=100:from=:until=2024-07-28'],
300 $appended_request = $this->getRequest(
302 Verb::LIST_IDENTIFIERS,
304 Argument::RESUMPTION_TOKEN->value =>
'next_offset=100:from=:until=2024-07-28',
305 Argument::UNTIL_DATE->value =>
'2024-07-28'
309 $processor =
new RequestProcessor(
311 $this->getSettings(
'prefix_'),
312 $repo = $this->getRepository(
319 $this->getTokenHandler(
true, $appended_request)
322 $expected_response = <<<XML
324 <response_info>
base url:ListIdentifiers:resumptionToken=next_offset=100:
from=:until=2024-07-28</response_info>
328 <token>next_offset=200:
from=:until=2024-07-28,fullsize=203,cursor=100</token>
332 $response = $processor->getResponseToRequest($original_request);
335 [[
'from' =>
null,
'until' =>
'2024-07-28',
'limit' => 100,
'offset' => 100]],
336 $repo->exposed_parameters
338 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
341 public function testGetResponseToRequestListIdentifiersWithResumptionTokenContainingFromDate(): void
343 $original_request = $this->getRequest(
345 Verb::LIST_IDENTIFIERS,
346 [Argument::RESUMPTION_TOKEN->value =>
'next_offset=100:from=1999-01-12:until=2024-07-28'],
349 $appended_request = $this->getRequest(
351 Verb::LIST_IDENTIFIERS,
353 Argument::RESUMPTION_TOKEN->value =>
'next_offset=100:from=1999-01-12:until=2024-07-28',
354 Argument::UNTIL_DATE->value =>
'2024-07-28',
355 Argument::FROM_DATE->value =>
'1999-01-12'
359 $processor =
new RequestProcessor(
361 $this->getSettings(
'prefix_'),
362 $repo = $this->getRepository(
369 $this->getTokenHandler(
true, $appended_request)
372 $expected_response = <<<XML
374 <response_info>
base url:ListIdentifiers:resumptionToken=next_offset=100:
from=1999-01-12:until=2024-07-28</response_info>
378 <token>next_offset=200:
from=1999-01-12:until=2024-07-28,fullsize=203,cursor=100</token>
382 $response = $processor->getResponseToRequest($original_request);
385 [[
'from' =>
'1999-01-12',
'until' =>
'2024-07-28',
'limit' => 100,
'offset' => 100]],
386 $repo->exposed_parameters
388 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
391 public function testGetResponseToRequestListIdentifiersWithResumptionTokenLastIncompleteList(): void
393 $original_request = $this->getRequest(
395 Verb::LIST_IDENTIFIERS,
396 [Argument::RESUMPTION_TOKEN->value =>
'next_offset=200:from=:until=2024-07-28'],
399 $appended_request = $this->getRequest(
401 Verb::LIST_IDENTIFIERS,
403 Argument::RESUMPTION_TOKEN->value =>
'next_offset=200:from=:until=2024-07-28',
404 Argument::UNTIL_DATE->value =>
'2024-07-28'
408 $processor =
new RequestProcessor(
410 $this->getSettings(
'prefix_'),
411 $repo = $this->getRepository(
418 $this->getTokenHandler(
true, $appended_request)
421 $expected_response = <<<XML
423 <response_info>
base url:ListIdentifiers:resumptionToken=next_offset=200:
from=:until=2024-07-28</response_info>
427 <token>,fullsize=203,cursor=200</token>
431 $response = $processor->getResponseToRequest($original_request);
434 [[
'from' =>
null,
'until' =>
'2024-07-28',
'limit' => 100,
'offset' => 200]],
435 $repo->exposed_parameters
437 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
440 public function testGetResponseToRequestListIdentifiersNoMDFormatError(): void
442 $processor =
new RequestProcessor(
444 $this->getSettings(
'prefix_'),
445 $repo = $this->getRepository(
452 $this->getTokenHandler()
455 $expected_response = <<<XML
457 <response_info>
base url:ListIdentifiers:</response_info>
462 $response = $processor->getResponseToRequest($this->getRequest(
464 Verb::LIST_IDENTIFIERS,
469 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
472 public function testGetResponseToRequestListIdentifiersAdditionalArgumentError(): void
474 $processor =
new RequestProcessor(
476 $this->getSettings(
'prefix_'),
477 $repo = $this->getRepository(
484 $this->getTokenHandler()
487 $expected_response = <<<XML
489 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,identifier=
id</response_info>
494 $response = $processor->getResponseToRequest($this->getRequest(
496 Verb::LIST_IDENTIFIERS,
497 [Argument::MD_PREFIX->value =>
'oai_dc', Argument::IDENTIFIER->value =>
'id'],
501 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
504 public function testGetResponseToRequestListIdentifiersBadResumptionTokenError(): void
506 $original_request = $this->getRequest(
508 Verb::LIST_IDENTIFIERS,
509 [Argument::RESUMPTION_TOKEN->value =>
'next_offset=100:from=:until=2024-07-28'],
512 $appended_request = $this->getRequest(
514 Verb::LIST_IDENTIFIERS,
516 Argument::RESUMPTION_TOKEN->value =>
'next_offset=100:from=:until=2024-07-28',
517 Argument::UNTIL_DATE->value =>
'2024-07-28'
521 $processor =
new RequestProcessor(
523 $this->getSettings(
'prefix_'),
524 $repo = $this->getRepository(
531 $this->getTokenHandler(
false, $appended_request)
534 $expected_response = <<<XML
536 <response_info>
base url:ListIdentifiers:resumptionToken=next_offset=100:
from=:until=2024-07-28</response_info>
541 $response = $processor->getResponseToRequest($original_request);
543 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
546 public function testGetResponseToRequestListIdentifiersInvalidFromDateError(): void
548 $processor =
new RequestProcessor(
550 $this->getSettings(
'prefix_'),
551 $repo = $this->getRepository(
558 $this->getTokenHandler()
561 $expected_response = <<<XML
563 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,
from=invalid</response_info>
568 $response = $processor->getResponseToRequest($this->getRequest(
570 Verb::LIST_IDENTIFIERS,
571 [Argument::MD_PREFIX->value =>
'oai_dc', Argument::FROM_DATE->value =>
'invalid'],
574 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
577 public function testGetResponseToRequestListIdentifiersInvalidUntilDateError(): void
579 $processor =
new RequestProcessor(
581 $this->getSettings(
'prefix_'),
582 $repo = $this->getRepository(
589 $this->getTokenHandler()
592 $expected_response = <<<XML
594 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,until=invalid</response_info>
599 $response = $processor->getResponseToRequest($this->getRequest(
601 Verb::LIST_IDENTIFIERS,
602 [Argument::MD_PREFIX->value =>
'oai_dc', Argument::UNTIL_DATE->value =>
'invalid'],
605 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
608 public function testGetResponseToRequestListIdentifiersWrongMDFormatError(): void
610 $processor =
new RequestProcessor(
612 $this->getSettings(
'prefix_'),
613 $repo = $this->getRepository(
620 $this->getTokenHandler()
623 $expected_response = <<<XML
625 <response_info>
base url:ListIdentifiers:metadataPrefix=invalid</response_info>
630 $response = $processor->getResponseToRequest($this->getRequest(
632 Verb::LIST_IDENTIFIERS,
633 [Argument::MD_PREFIX->value =>
'invalid'],
636 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
639 public function testGetResponseToRequestListIdentifiersNoRecordsFoundError(): void
641 $processor =
new RequestProcessor(
643 $this->getSettings(
'prefix_'),
644 $repo = $this->getRepository(),
645 $this->getTokenHandler()
648 $expected_response = <<<XML
650 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc</response_info>
655 $response = $processor->getResponseToRequest($this->getRequest(
657 Verb::LIST_IDENTIFIERS,
658 [Argument::MD_PREFIX->value =>
'oai_dc'],
662 [[
'from' =>
null,
'until' =>
null,
'limit' => 100,
'offset' => 0]],
663 $repo->exposed_parameters
665 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
668 public function testGetResponseToRequestListIdentifiersNonDefaultSetError(): void
670 $processor =
new RequestProcessor(
672 $this->getSettings(
'prefix_'),
673 $repo = $this->getRepository(
680 $this->getTokenHandler()
683 $expected_response = <<<XML
685 <response_info>
base url:ListIdentifiers:metadataPrefix=oai_dc,
set=
set</response_info>
690 $response = $processor->getResponseToRequest($this->getRequest(
692 Verb::LIST_IDENTIFIERS,
693 [Argument::MD_PREFIX->value =>
'oai_dc',
Argument::SET->value =>
'set'],
696 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());
699 public function testGetResponseToRequestListIdentifiersMultipleErrors(): void
701 $processor =
new RequestProcessor(
703 $this->getSettings(
'prefix_'),
704 $repo = $this->getRepository(),
705 $this->getTokenHandler()
708 $expected_response = <<<XML
710 <response_info>
base url:ListIdentifiers:metadataPrefix=invalid,until=also invalid,
from=
more invalid,
set=
set,identifier=
id</response_info>
720 $response = $processor->getResponseToRequest($this->getRequest(
722 Verb::LIST_IDENTIFIERS,
724 Argument::MD_PREFIX->value =>
'invalid',
725 Argument::UNTIL_DATE->value =>
'also invalid',
726 Argument::FROM_DATE->value =>
'more invalid',
728 Argument::IDENTIFIER->value =>
'id'
734 [[
'from' =>
null,
'until' =>
null,
'limit' => 100,
'offset' => 0]],
735 $repo->exposed_parameters
737 $this->assertXmlStringEqualsXmlString($expected_response,
$response->saveXML());