diff options
Diffstat (limited to 'python/tests/api_webcaptures.py')
-rw-r--r-- | python/tests/api_webcaptures.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/python/tests/api_webcaptures.py b/python/tests/api_webcaptures.py new file mode 100644 index 00000000..dc1754b3 --- /dev/null +++ b/python/tests/api_webcaptures.py @@ -0,0 +1,96 @@ + +import json +import pytest +import datetime +from copy import copy + +from fatcat_client import * +from fatcat_client.rest import ApiException +from fixtures import * + + +def test_webcapture(api): + + eg = quick_eg(api) + r1 = ReleaseEntity(title="test webcapture release") + r1edit = api.create_release(r1, editgroup_id=eg.editgroup_id) + + wc1 = WebcaptureEntity( + original_url = "http://example.site", + #timestamp = "2012-01-02T03:04:05Z", + timestamp = datetime.datetime.now(datetime.timezone.utc), + cdx = [ + WebcaptureEntityCdx( + surt="site,example,)/data/thing.tar.gz", + #timestamp="2012-01-02T03:04:05Z", + timestamp=datetime.datetime.now(datetime.timezone.utc), + url="http://example.site/data/thing.tar.gz", + mimetype="application/gzip", + status_code=200, + sha1="455face3598611458efe1f072e58624790a67266", + sha256="c7b49f3e84cd1b7cb0b0e3e9f632b7be7e21b4dc229df23331f880a8a7dfa75a", + ), + WebcaptureEntityCdx( + surt="site,example,)/README.md", + #timestamp="2012-01-02T03:04:05Z", + timestamp=datetime.datetime.now(datetime.timezone.utc), + url="http://example.site/README.md", + mimetype="text/markdown", + status_code=200, + sha1="455face3598611458efe1f072e58624790a67266", + sha256="429bcafa4d3d0072d5b2511e12c85c1aac1d304011d1c406da14707f7b9cd905", + ), + ], + archive_urls = [ + FileEntityUrls(rel="wayback", url="https://web.archive.org/web/"), + ], + release_ids = [r1edit.ident], + ) + + wc1edit = api.create_webcapture(wc1, editgroup_id=eg.editgroup_id) + api.accept_editgroup(eg.editgroup_id) + wc2 = api.get_webcapture(wc1edit.ident) + + # check that fields match + # I don't know why these aren't equal... + #print(wc1.archive_urls) + #print(wc2.archive_urls) + #assert wc1.archive_urls == wc2.archive_urls + assert wc1.archive_urls[0].rel == wc2.archive_urls[0].rel + assert wc1.archive_urls[0].url == wc2.archive_urls[0].url + assert wc1.cdx == wc2.cdx + assert wc1.release_ids == wc2.release_ids + assert wc1.timestamp == wc2.timestamp + assert wc1.original_url == wc2.original_url + + # TODO: check release expansion + r1 = api.get_release(r1edit.ident, expand="webcaptures") + print(r1) + assert r1.webcaptures[0].cdx == wc1.cdx + +def test_webcapture_examples(api): + wc3 = api.get_webcapture('aaaaaaaaaaaaa53xaaaaaaaaam') + + assert wc3.cdx[0].surt == 'org,asheesh)/' + assert wc3.cdx[1].sha1 == 'a637f1d27d9bcb237310ed29f19c07e1c8cf0aa5' + assert wc3.archive_urls[1].rel == 'warc' + + +def test_bad_webcapture(api): + + eg = quick_eg(api) + + bad_list = [ + # good (for testing test itself) + WebcaptureEntity(cdx=[ + WebcaptureEntityCdx( + surt="site,example,)/123.jpg", + url="http://example.site/123.jpg", + sha1="455face3598611458efe1f072e58624790a67266", + timestamp=201506071122)]), + ] + + for b in bad_list: + with pytest.raises(fatcat_client.rest.ApiException): + api.create_webcapture(b, editgroup_id=eg.editgroup_id) + |