def test_doi_get_500(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}doi/10.1234/1".format(APIURL), body="Internal Server Error", status=500, ) d = get_client() with pytest.raises(DataCiteServerError): d.doi_get("10.1234/1")
def test_metadata_delete_500(): """Test.""" httpretty.register_uri( httpretty.DELETE, "{0}metadata/10.1234/example".format(APIURL), body="Internal Server Error", status=500, ) d = get_client() with pytest.raises(DataCiteServerError): d.metadata_delete("10.1234/example")
def test_doi_get_410(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}doi/10.1234/1".format(APIURL), body="Gone", status=410, ) d = get_client() with pytest.raises(DataCiteGoneError): d.doi_get("10.1234/1")
def test_metadata_delete_200(): """Test.""" httpretty.register_uri( httpretty.DELETE, "{0}metadata/10.1234/example".format(APIURL), body="OK", status=200, ) d = get_client(test_mode=True) assert "OK" == d.metadata_delete("10.1234/example") assert httpretty.last_request().querystring['testMode'] == ["1"]
def test_metadata_delete_404(): """Test.""" httpretty.register_uri( httpretty.DELETE, "{0}metadata/10.1234/example".format(APIURL), body="Not found", status=404, ) d = get_client() with pytest.raises(DataCiteNotFoundError): d.metadata_delete("10.1234/example")
def test_metadata_post_403(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}metadata".format(APIURL), body="Forbidden", status=403, ) d = get_client() with pytest.raises(DataCiteForbiddenError): d.metadata_post("<resource></resource>")
def test_metadata_post_500(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}metadata".format(APIURL), body="Internal Server Error", status=500, ) d = get_client() with pytest.raises(DataCiteServerError): d.metadata_post("<resource></resource>")
def test_metadata_post_401(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}metadata".format(APIURL), body="Unauthorized", status=401, ) d = get_client() with pytest.raises(DataCiteUnauthorizedError): d.metadata_post("notxml")
def test_metadata_post_400(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}metadata".format(APIURL), body="Bad Request", status=400, ) d = get_client() with pytest.raises(DataCiteBadRequestError): d.metadata_post("notxml")
def test_doi_post_403(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}doi".format(APIURL), body="Forbidden", status=403, ) d = get_client() with pytest.raises(DataCiteForbiddenError): d.doi_post("10.1234/1", "http://example.org")
def test_doi_post_400(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}doi".format(APIURL), body="Bad Request", status=400, ) d = get_client() with pytest.raises(DataCiteBadRequestError): d.doi_post("baddoi", "http://invaliddomain.org")
def test_doi_get_200(): """Test.""" url = "http://example.org" httpretty.register_uri( httpretty.GET, "{0}doi/10.1234/1".format(APIURL), body=url, status=200, ) d = get_client() assert url == d.doi_get("10.1234/1")
def test_doi_post_401(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}doi".format(APIURL), body="Unauthorized", status=401, ) d = get_client() with pytest.raises(DataCiteUnauthorizedError): d.doi_post("10.1234/1", "http://example.org")
def test_doi_get_403(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}doi/10.1234/1".format(APIURL), body="Forbidden", status=403, ) d = get_client() with pytest.raises(DataCiteForbiddenError): d.doi_get("10.1234/1")
def test_media_get_403(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}media/10.1234/1".format(APIURL), body="login problem or dataset belongs to another party", status=403, ) d = get_client() with pytest.raises(DataCiteForbiddenError): d.media_get("10.1234/1")
def test_doi_post_500(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}doi".format(APIURL), body="Internal Server Error", status=500, ) d = get_client() with pytest.raises(DataCiteServerError): d.doi_post("10.1234/1", "http://example.org")
def test_media_get_404(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}media/10.1234/1".format(APIURL), body="Not Found", status=404, ) d = get_client() with pytest.raises(DataCiteNotFoundError): d.media_get("10.1234/1")
def test_media_post_500(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}media/10.1234/1".format(APIURL), body="Internal Server Error", status=500, ) d = get_client() with pytest.raises(DataCiteServerError): d.media_post("10.1234/1", {'text/plain': 'http://example.org'})
def test_media_post_403(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}media/10.1234/1".format(APIURL), body="Forbidden", status=403, ) d = get_client() with pytest.raises(DataCiteForbiddenError): d.media_post("10.1234/1", {'text/plain': 'http://example.org'})
def test_doi_get_401(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}doi/10.1234/1".format(APIURL), body="Unauthorized", status=401, ) d = get_client() with pytest.raises(DataCiteUnauthorizedError): d.doi_get("10.1234/1")
def test_metadata_get_200(): """Test.""" doc = "<resource></resource>" httpretty.register_uri( httpretty.GET, "{0}metadata/10.1234/1".format(APIURL), body=doc, status=200, content_type="application/xml", ) d = get_client() assert doc == d.metadata_get("10.1234/1")
def test_media_get_500(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}media/10.1234/1".format(APIURL), body="Internal Server Error", status=500, ) d = get_client(test_mode=True) with pytest.raises(DataCiteServerError): d.media_get("10.1234/1") assert httpretty.last_request().querystring['testMode'] == ["1"]
def test_media_get_200(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}media/10.1234/1".format(APIURL), body="application/json=http://example.org/json\r\n" "text/plain=http://example.org/text\r\n", status=200, ) d = get_client() assert d.media_get("10.1234/1") == \ {u'application/json': u'http://example.org/json', u'text/plain': u'http://example.org/text'}
def test_media_post_400(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}media/10.1234/1".format(APIURL), body="Bad Request", status=400, ) d = get_client(test_mode=True) with pytest.raises(DataCiteBadRequestError): d.media_post("10.1234/1", {'text/plain': 'http://invaliddomain.org'}) assert httpretty.last_request().querystring['testMode'] == ["1"]
def test_doi_get_204(): """Test.""" httpretty.register_uri( httpretty.GET, "{0}doi/10.1234/1".format(APIURL), body="No Content", status=204, ) d = get_client(test_mode=True) with pytest.raises(DataCiteNoContentError): d.doi_get("10.1234/1") assert httpretty.last_request().querystring['testMode'] == ["1"]
def test_timeout(): """Test timeouts.""" def callback(request, uri, headers): raise socket.timeout("timeout") httpretty.register_uri( httpretty.GET, "{0}doi/10.1234/1".format(APIURL), body=callback, ) d = get_client(timeout=0.1) with pytest.raises(DataCiteHttpError): d.doi_get("10.1234/1")
def test_doi_post_412(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}doi".format(APIURL), body="Precondition failed", status=412, ) d = get_client(test_mode=True) with pytest.raises(DataCitePreconditionError): d.doi_post("10.1234/1", "http://example.org") assert httpretty.last_request().querystring['testMode'] == ["1"]
def xsd41(): """Load DataCite v4.1 full example as an etree.""" # Ensure the schema validator doesn't make any http requests. with open(join(dirname(__file__), 'data', 'xml.xsd')) as fp: xmlxsd = fp.read() httpretty.enable() httpretty.register_uri(httpretty.GET, 'https://www.w3.org/2009/01/xml.xsd', body=xmlxsd) yield etree.XMLSchema(file='file://' + join(dirname(__file__), 'data', 'metadata41.xsd')) httpretty.disable()
def test_metadata_post_201(): """Test.""" httpretty.register_uri( httpretty.POST, "{0}metadata".format(APIURL), body="CREATED", status=201, location="http://example.org", ) d = get_client(test_mode=True) assert "CREATED" == d.metadata_post("<resource></resource>") assert httpretty.last_request().headers['content-type'] == \ "application/xml;charset=UTF-8" assert httpretty.last_request().querystring['testMode'] == ["1"]
def test_doi_post_200(): """Test.""" doi = "10.1234/1" url = "http://example.org" httpretty.register_uri( httpretty.POST, "{0}doi".format(APIURL), body="CREATED", status=201, ) d = get_client() assert "CREATED" == d.doi_post(doi, url) assert httpretty.last_request().headers['content-type'] == \ "text/plain;charset=UTF-8" assert httpretty.last_request().body == \ b("doi={0}\r\nurl={1}".format(doi, url))