import copy import pytest from fatcat_tools.cleanups import FileCleaner from fatcat_openapi_client import * from fixtures import * @pytest.fixture(scope="function") def file_cleaner(api): yield FileCleaner(api) def test_url_cleanups(file_cleaner): f = FileEntity( sha1="027e7ed3ea1a40e92dd2657a1e3c992b5dc45dd2", urls=[], ) f.urls = [ FileUrl(url="https://web.archive.org/web/12345542/something.com/blah.pdf", rel="webarchive"), FileUrl(url="https://web.archive.org/web/None/something.com/blah.pdf", rel="webarchive"), FileUrl(url="https://archive.org/details/None/something.com/blah.pdf", rel="repository"), ] f = file_cleaner.clean_entity(f) # remove None wayback links assert len(f.urls) == 2 for u in f.urls: assert not 'web/None' in u.url assert f == file_cleaner.clean_entity(f) assert f == file_cleaner.clean_entity(copy.deepcopy(f)) # rel=repository -> rel=archive for archive.org links assert f.urls[1].rel == 'archive' # short wayback dates f.urls = [ FileUrl(url="http://web.archive.org/web/20181031120933/https://www.jstage.jst.go.jp/article/jsci1978/1/1/1_1_231/_pdf", rel="webarchive"), FileUrl(url="http://web.archive.org/web/2018/https://www.jstage.jst.go.jp/article/jsci1978/1/1/1_1_231/_pdf", rel="webarchive"), ] f = file_cleaner.clean_entity(f) assert len(f.urls) == 1 assert f.urls[0].url == 'http://web.archive.org/web/20181031120933/https://www.jstage.jst.go.jp/article/jsci1978/1/1/1_1_231/_pdf' assert f == file_cleaner.clean_entity(f) assert f == file_cleaner.clean_entity(copy.deepcopy(f)) f.urls = [ FileUrl(url="http://web.archive.org/web/2018/https://www.jstage.jst.go.jp/article/jsci1978/1/1/1_1_231/_pdf", rel="webarchive"), ] f = file_cleaner.clean_entity(f) assert len(f.urls) == 1 assert f.urls[0].url == 'http://web.archive.org/web/2018/https://www.jstage.jst.go.jp/article/jsci1978/1/1/1_1_231/_pdf' assert f == file_cleaner.clean_entity(f) assert f == file_cleaner.clean_entity(copy.deepcopy(f))