コード例 #1
0
    def testProvenance(self):
        observable = Observable()
        provenance = OaiProvenance(
            nsMap = {'oai_dc': "http://www.openarchives.org/OAI/2.0/"},
            baseURL = ('meta', '/meta/repository/baseurl/text()'),
            harvestDate = ('meta', '/meta/repository/harvestDate/text()'),
            metadataNamespace = ('meta', '/meta/repository/metadataNamespace/text()'),
            identifier = ('header','/oai_dc:header/oai_dc:identifier/text()'),
            datestamp = ('header', '/oai_dc:header/oai_dc:datestamp/text()')
        )
        observable.addObserver(provenance)
        observer = MockStorage()
        provenance.addObserver(observer)

        result = asString(observable.any.provenance("recordId"))
        self.assertEqualsWS("""<provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance
                      http://www.openarchives.org/OAI/2.0/provenance.xsd">

<originDescription harvestDate="HARVESTDATE" altered="true">
  <baseURL>BASEURL</baseURL>
  <identifier>recordId</identifier>
  <datestamp>DATESTAMP</datestamp>
  <metadataNamespace>METADATANAMESPACE</metadataNamespace>
</originDescription>
</provenance>""", result)
コード例 #2
0
    def testProvenance(self):
        observable = Observable()
        provenance = OaiProvenance(
            nsMap={'oai_dc': "http://www.openarchives.org/OAI/2.0/"},
            baseURL=('meta', '/meta/repository/baseurl/text()'),
            harvestDate=('meta', '/meta/repository/harvestDate/text()'),
            metadataNamespace=('meta',
                               '/meta/repository/metadataNamespace/text()'),
            identifier=('header', '/oai_dc:header/oai_dc:identifier/text()'),
            datestamp=('header', '/oai_dc:header/oai_dc:datestamp/text()'))
        observable.addObserver(provenance)
        observer = MockStorage()
        provenance.addObserver(observer)

        result = asString(observable.any.provenance("recordId"))
        self.assertEqualsWS(
            """<provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance
                      http://www.openarchives.org/OAI/2.0/provenance.xsd">

<originDescription harvestDate="HARVESTDATE" altered="true">
  <baseURL>BASEURL</baseURL>
  <identifier>recordId</identifier>
  <datestamp>DATESTAMP</datestamp>
  <metadataNamespace>METADATANAMESPACE</metadataNamespace>
</originDescription>
</provenance>""", result)
コード例 #3
0
    def testNoOutputIfValueMissing(self):
        observable = Observable()
        provenance = OaiProvenance(
            nsMap={},
            baseURL=('meta', 'meta/repository/baseurl'),
            harvestDate=('meta', 'meta/does/not/exist'),
            metadataNamespace=('meta', 'meta/repository/metadataNamespace'),
            identifier=('header', 'header/identifier'),
            datestamp=('header', 'header/datestamp'))
        observable.addObserver(provenance)
        observer = MockStorage()
        provenance.addObserver(observer)

        result = asString(observable.any.provenance("recordId"))
        self.assertEqual('', result)
コード例 #4
0
    def testNoOutputIfValueMissing(self):
        observable = Observable()
        provenance = OaiProvenance(
            nsMap = {},
            baseURL = ('meta', 'meta/repository/baseurl'),
            harvestDate = ('meta', 'meta/does/not/exist'),
            metadataNamespace = ('meta', 'meta/repository/metadataNamespace'),
            identifier = ('header','header/identifier'),
            datestamp = ('header', 'header/datestamp')
        )
        observable.addObserver(provenance)
        observer = MockStorage()
        provenance.addObserver(observer)

        result = asString(observable.any.provenance("recordId"))
        self.assertEquals('', result)
コード例 #5
0
    def testCacheStorageResults(self):
        observable = Observable()
        provenance = OaiProvenance(
            nsMap={},
            baseURL=('meta', 'meta/repository/baseurl/text()'),
            harvestDate=('meta', 'meta/repository/harvestDate/text()'),
            metadataNamespace=('meta',
                               'meta/repository/metadataNamespace/text()'),
            identifier=('header', 'header/identifier/text()'),
            datestamp=('header', 'header/datestamp/text()'))
        observable.addObserver(provenance)
        storage = MockStorage()
        observer = storage
        provenance.addObserver(observer)

        self.assertEqual(0, storage.timesCalled)
        asString(observable.any.provenance("recordId"))
        self.assertEqual(2, storage.timesCalled)
コード例 #6
0
    def testCacheStorageResults(self):
        observable = Observable()
        provenance = OaiProvenance(
            nsMap = {},
            baseURL = ('meta', 'meta/repository/baseurl/text()'),
            harvestDate = ('meta', 'meta/repository/harvestDate/text()'),
            metadataNamespace = ('meta', 'meta/repository/metadataNamespace/text()'),
            identifier = ('header','header/identifier/text()'),
            datestamp = ('header', 'header/datestamp/text()')
        )
        observable.addObserver(provenance)
        storage = MockStorage()
        observer = storage
        provenance.addObserver(observer)

        self.assertEquals(0, storage.timesCalled)
        asString(observable.any.provenance("recordId"))
        self.assertEquals(2, storage.timesCalled)
コード例 #7
0
    def testProvenanceFromOaiPmh(self):
        def getRecord(identifier, *args, **kwargs):
            record = CallTrace()
            record.identifier = identifier
            record.prefixes = set(['oai_dc'])
            record.sets = set()
            record.isDeleted = False
            return record

        oaijazz = CallTrace(methods={
            'getRecord': getRecord,
            'isKnownPrefix': lambda prefix: True
        },
                            onlySpecifiedMethods=True)
        observable = be(
            (Observable(),
             (OaiPmh(repositoryName='example', adminEmail='*****@*****.**'),
              (oaijazz, ), (
                  RetrieveToGetDataAdapter(),
                  (MockStorage(), ),
              ), (
                  OaiProvenance(
                      nsMap={'oai_dc': "http://www.openarchives.org/OAI/2.0/"},
                      baseURL=('meta', '/meta/repository/baseurl/text()'),
                      harvestDate=('meta',
                                   '/meta/repository/harvestDate/text()'),
                      metadataNamespace=(
                          'meta', '/meta/repository/metadataNamespace/text()'),
                      identifier=('header',
                                  '/oai_dc:header/oai_dc:identifier/text()'),
                      datestamp=('header',
                                 '/oai_dc:header/oai_dc:datestamp/text()')),
                  (MockStorage(), ),
              ))))

        result = generatorToString(
            observable.all.handleRequest(
                Method='GET',
                arguments=dict(verb=['GetRecord'],
                               identifier=["recordId"],
                               metadataPrefix=['oai_dc']),
                Headers=dict(Host='oaiserver.example.org'),
                path='/oai',
                port=1234,
            ))
        _, body = result.split(CRLF * 2)
        provenanceResult = xpathFirst(XML(body.encode()),
                                      '//oai:about/oaiprov:provenance')
        self.assertXmlEquals(
            """<provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance
                      http://www.openarchives.org/OAI/2.0/provenance.xsd">

<originDescription harvestDate="HARVESTDATE" altered="true">
  <baseURL>BASEURL</baseURL>
  <identifier>recordId</identifier>
  <datestamp>DATESTAMP</datestamp>
  <metadataNamespace>METADATANAMESPACE</metadataNamespace>
</originDescription>
</provenance>""", provenanceResult)