def test_get_record(self):
        dataset = factories.Dataset(name='dataset_test_api_export', author='Test Plugin')
        repository = OAIPMHRepository()
        oaipmh_identifier = repository.record_access._get_oaipmh_id(dataset.get(repository.id_field))

        request_content = repository.handle_request('GetRecord', {'identifier':oaipmh_identifier, 
                                                                        'metadataPrefix':'oai_dc'}, 'REQUEST_URL')
        oaipmh_record = XMLRecord(MetadataFormats().get_metadata_formats('oai_pmh')[0], request_content)

        # validate the XML
        assert_true(repository._is_valid_oai_pmh_record(oaipmh_record.get_xml_dict()))
        assert_false(repository._is_error_oai_pmh_record(oaipmh_record.get_xml_dict()))
    def test_list_identifiers(self):
        dataset = factories.Dataset(name='dataset_test_api_export_01', author='Test Plugin')
        dataset = factories.Dataset(name='bad_dataset_test_api_export', author='Test Plugin')
        dataset = factories.Dataset(name='dataset_test_api_export_02', author='Test Plugin')
        repository = OAIPMHRepository()

        request_content = repository.handle_request('ListIdentifiers', {'metadataPrefix':'oai_dc'}, 'REQUEST_URL')
        oaipmh_record = XMLRecord(MetadataFormats().get_metadata_formats('oai_pmh')[0], request_content)

        # validate the XML
        assert_true(repository._is_valid_oai_pmh_record(oaipmh_record.get_xml_dict()))
        assert_false(repository._is_error_oai_pmh_record(oaipmh_record.get_xml_dict()))
def index():
    """Return the result of the handled request of a batching OAI-PMH
    server implementation.
    """
    url_params = request.args
    if 'verb' in url_params:
        verb = url_params.get('verb')
        if verb:
            log.debug('verb: %s', verb)
            repository = OAIPMHRepository()
            params = url_params.copy()
            params.pop('verb', None)
            content = repository.handle_request(verb, params, request.url)
            headers = {u'Content-Type': 'text/xml; charset=UTF-8'}
            return make_response(content, 200, headers)

    return render('oaipmh_repository/oaipmh_repository.html')
 def test_list_metadata_formats(self):
     request_content = OAIPMHRepository().handle_request('ListMetadataFormats', {}, 'REQUEST_URL')
     oaipmh_record = XMLRecord(MetadataFormats().get_metadata_formats('oai_pmh')[0], request_content)
     # validate the XML
     assert_true(oaipmh_record.validate())
     assert_false(OAIPMHRepository()._is_error_oai_pmh_record(oaipmh_record.get_xml_dict()))