def testListRecordsProducesResumptionTokenWithPartition(self): self._addRecords(['id:%s' % i for i in xrange(10)]) header, body = ''.join(compose(self.oaiList.listRecords(arguments={'verb':['ListRecords'], 'metadataPrefix': ['oai_dc'], 'x-partition':['1/2']}, **self.httpkwargs))).split(CRLF*2) oai = parse(StringIO(body)) self.assertEquals(2, len(xpath(oai, '/oai:OAI-PMH/oai:ListRecords/mock:record'))) resumptionToken = ResumptionToken.fromString(xpath(oai, '/oai:OAI-PMH/oai:ListRecords/oai:resumptionToken/text()')[0]) self.assertEquals(['id:2/oai_dc', 'id:3/oai_dc'], xpath(oai, '//mock:record/text()')) self.assertEquals('1/2', str(resumptionToken.partition)) header, body = ''.join(compose(self.oaiList.listRecords(arguments={'verb':['ListRecords'], 'resumptionToken': [str(resumptionToken)]}, **self.httpkwargs))).split(CRLF*2) oai = parse(StringIO(body)) self.assertEquals(['id:5/oai_dc', 'id:6/oai_dc'], xpath(oai, '//mock:record/text()'))
def testListRecordsProducesResumptionToken(self): self._addRecords(['id:0&0', 'id:1&1', 'id:2&2'], sets=[('set0', 'setName')]) header, body = ''.join(compose(self.oaiList.listRecords(arguments={'verb':['ListRecords'], 'metadataPrefix': ['oai_dc'], 'from': ['2000-01-01T00:00:00Z'], 'until': ['4012-01-01T00:00:00Z'], 'set': ['set0']}, **self.httpkwargs))).split(CRLF*2) oai = parse(StringIO(body)) self.assertEquals(2, len(xpath(oai, '/oai:OAI-PMH/oai:ListRecords/mock:record'))) resumptionToken = ResumptionToken.fromString(xpath(oai, '/oai:OAI-PMH/oai:ListRecords/oai:resumptionToken/text()')[0]) self.assertEquals('4012-01-01T00:00:00Z', resumptionToken.until) self.assertEquals('2000-01-01T00:00:00Z', resumptionToken.from_) self.assertEquals('set0', resumptionToken.set_) self.assertEquals('oai_dc', resumptionToken.metadataPrefix) continueAfter = self.oaiJazz.getRecord('id:1&1').stamp self.assertEquals(str(continueAfter), resumptionToken.continueAfter) self.assertEquals(['getAllPrefixes', 'oaiSelect', 'oaiWatermark', 'getMultipleData', 'oaiRecord', 'oaiRecord'], [m.name for m in self.observer.calledMethods]) selectMethod = self.observer.calledMethods[1] self.assertEquals(dict(continueAfter='0', oaiUntil='4012-01-01T00:00:00Z', prefix='oai_dc', oaiFrom='2000-01-01T00:00:00Z', sets=['set0'], batchSize=2, shouldCountHits=False, partition=None), selectMethod.kwargs) recordMethods = self.observer.calledMethods[4:] self.assertEquals({'recordId':'id:0&0', 'metadataPrefix':'oai_dc'}, _m(recordMethods[0].kwargs)) self.assertEquals({'recordId':'id:1&1', 'metadataPrefix':'oai_dc'}, _m(recordMethods[1].kwargs))
def testResumptionTokenHacked(self): r = ResumptionToken.fromString('caap|f|m|u|s') # complete nonsense is accepted (for now ????) self.assertEquals('aap', r.continueAfter)