def test_rest_create_public_mock(): """Test creating DOI""" prefix = '10.1234' example_json43 = 'data/datacite-v4.3-full-example.json' example_metadata = load_json_path(example_json43) url = 'https://github.com/inveniosoftware/datacite' data = {"data": {"id": prefix+"/1", "attributes": {"url": url}}} responses.add( responses.POST, "{0}dois".format(RESTURL), json=data, status=201, ) d = get_rest(username='******', password='******', prefix=prefix) doi = d.public_doi(example_metadata, url) datacite_prefix = doi.split('/')[0] assert datacite_prefix == prefix url = 'https://github.com/inveniosoftware' data = {"data": {"id": prefix+"/1", "attributes": {"publisher": "Invenio", "url": url}}} responses.add( responses.PUT, "{0}dois/{1}/1".format(RESTURL, prefix), json=data, status=200, ) metadata = {'publisher': 'Invenio'} new_metadata = d.update_doi(doi, metadata) assert new_metadata['publisher'] == 'Invenio' new_metadata = d.update_doi(doi, url=url) assert new_metadata['url'] == url
def test_rest_create_draft_mock(): prefix = '10.1234' mock = 'https://github.com/inveniosoftware/datacite' data = {"data": {"id": prefix + "/1", "attributes": {"url": mock}}} responses.add( responses.POST, "{0}dois".format(RESTURL), json=data, status=201, ) # test_mode=False because we already introduced a fake url # with RESTURL variable d = get_rest(username='******', password='******', prefix=prefix) doi = d.draft_doi() datacite_prefix = doi.split('/')[0] assert datacite_prefix == prefix responses.add( responses.PUT, "{0}dois/10.1234/1".format(RESTURL), json=data, status=200, ) new_url = d.update_url(doi, mock) assert new_url == mock responses.add( responses.DELETE, "{0}dois/10.1234/1".format(RESTURL), status=204, ) d.delete_doi(doi)
def test_rest_create_draft(): username, password, prefix = get_credentials() d = get_rest(username=username, password=password, prefix=prefix, with_fake_url=False) doi = d.draft_doi() datacite_prefix = doi.split('/')[0] assert datacite_prefix == prefix url = 'https://github.com/inveniosoftware/datacite' new_url = d.update_url(doi, url) assert new_url == url d.delete_doi(doi)
def test_doi_get_500(): """Test.""" responses.add( responses.GET, "{0}dois/10.1234/1".format(RESTURL), body="Internal Server Error", status=500, ) d = get_rest() with pytest.raises(DataCiteServerError): d.doi_get("10.1234/1")
def test_doi_get_410(): """Test.""" responses.add( responses.GET, "{0}dois/10.1234/1".format(RESTURL), body="Gone", status=410, ) d = get_rest() with pytest.raises(DataCiteGoneError): d.doi_get("10.1234/1")
def test_doi_get_404(): """Test.""" responses.add( responses.GET, "{0}dois/10.1234/1".format(RESTURL), body="Not Found", status=404, ) d = get_rest() with pytest.raises(DataCiteNotFoundError): d.doi_get("10.1234/1")
def test_doi_get_403(): """Test.""" responses.add( responses.GET, "{0}dois/10.1234/1".format(RESTURL), body="Forbidden", status=403, ) d = get_rest() with pytest.raises(DataCiteForbiddenError): d.doi_get("10.1234/1")
def test_doi_get_401(): """Test.""" responses.add( responses.GET, "{0}dois/10.1234/1".format(RESTURL), body="Unauthorized", status=401, ) d = get_rest() with pytest.raises(DataCiteUnauthorizedError): d.doi_get("10.1234/1")
def test_doi_get_204(): """Test 204 error and test_mode setting.""" responses.add( responses.GET, "https://api.test.datacite.org/dois/10.1234/1".format(RESTURL), body="No Content", status=204, ) d = get_rest(test_mode=True) with pytest.raises(DataCiteNoContentError): d.doi_get("10.1234/1")
def test_get_doi_204(): """Test 204 error when no content.""" responses.add( responses.GET, "{0}dois/10.1234/1".format(RESTURL), body="No Content", status=204, ) d = get_rest() with pytest.raises(DataCiteNoContentError): d.get_doi("10.1234/1")
def test_rest_create_private_mock(): """Test creating private DOI""" example_json43 = 'data/4.3/datacite-example-dataset-v4.json' example_metadata = load_json_path(example_json43) prefix = '10.1234' url = 'https://github.com/inveniosoftware/datacite' data = { "data": { "id": prefix + "/1", "attributes": { "state": "registered", "url": url } } } responses.add( responses.POST, "{0}dois".format(RESTURL), json=data, status=201, ) responses.add( responses.GET, "{0}dois/{1}/1".format(RESTURL, prefix), json=data, status=200, ) # test_mode=False because we already introduced a fake url # with RESTURL variable d = get_rest(username='******', password='******', prefix=prefix) doi = d.private_doi(example_metadata, url) datacite_prefix = doi.split('/')[0] assert datacite_prefix == prefix datacite_metadata = d.metadata_get(doi) assert datacite_metadata['state'] == 'registered' data = { "data": { "id": prefix + "/1", "attributes": { "state": "findable", "url": url } } } responses.add( responses.PUT, "{0}dois/{1}/1".format(RESTURL, prefix), json=data, status=200, ) new_metadata = d.show_doi(doi) assert new_metadata['state'] == 'findable'
def test_rest_get_200(): """Test.""" url = "http://example.org" data = {"data": {"id": "10.1234/1", "attributes": {"url": url}}} responses.add( responses.GET, "{0}dois/10.1234/1".format(RESTURL), json=data, status=200, ) d = get_rest() assert url == d.doi_get("10.1234/1")
def test_rest_create_draft_metadata(): username, password, prefix = get_credentials() d = get_rest(username=username, password=password, prefix=prefix, with_fake_url=False) metadata = {"titles": [{"title": "hello world", "lang": "en"}]} doi = prefix+'/12345' returned_doi = d.draft_doi(metadata, doi) assert returned_doi == doi url = 'https://github.com/inveniosoftware/datacite' returned_metadata = d.update_doi(doi, url=url) assert returned_metadata['url'] == url assert returned_metadata['titles'][0]['title'] == 'hello world' d.delete_doi(doi)
def test_rest_create_public(example_json43): """Test creating DOIs with all example metadata""" example_metadata = load_json_path(example_json43) url = 'https://github.com/inveniosoftware/datacite' username, password, prefix = get_credentials() d = get_rest(username=username, password=password, prefix=prefix, with_fake_url=False) doi = d.public_doi(example_metadata, url) datacite_prefix = doi.split('/')[0] assert datacite_prefix == prefix metadata = {'publisher': 'Invenio'} new_metadata = d.update_doi(doi, metadata) assert new_metadata['publisher'] == 'Invenio' url = 'https://github.com/inveniosoftware' new_metadata = d.update_doi(doi, url=url) assert new_metadata['url'] == url
def test_rest_create_private(): """Test creating private DOI""" example_json43 = 'data/4.3/datacite-example-dataset-v4.json' example_metadata = load_json_path(example_json43) url = 'https://github.com/inveniosoftware/datacite' username, password, prefix = get_credentials() d = get_rest(username=username, password=password, prefix=prefix, with_fake_url=False) doi = d.private_doi(example_metadata, url) datacite_prefix = doi.split('/')[0] assert datacite_prefix == prefix datacite_metadata = d.get_metadata(doi) assert datacite_metadata['state'] == 'registered' new_metadata = d.show_doi(doi) assert new_metadata['state'] == 'findable' new_metadata = d.hide_doi(doi) assert new_metadata['state'] == 'registered'