Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/deposit/tests/test_deposit.py
# Copyright (C) 2019-2020 The Software Heritage developers | # Copyright (C) 2019-2020 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import json | |||||
import re | import re | ||||
import pytest | import pytest | ||||
from swh.model.hashutil import hash_to_bytes, hash_to_hex | from swh.model.hashutil import hash_to_bytes, hash_to_hex | ||||
from swh.loader.package.deposit.loader import DepositLoader | from swh.loader.package.deposit.loader import DepositLoader | ||||
from swh.loader.package.tests.common import ( | from swh.loader.package.tests.common import ( | ||||
▲ Show 20 Lines • Show All 167 Lines • ▼ Show 20 Lines | def test_deposit_loading_ok(swh_config, requests_mock_datadir): | ||||
} | } | ||||
check_snapshot(expected_snapshot, storage=loader.storage) | check_snapshot(expected_snapshot, storage=loader.storage) | ||||
revision = next(loader.storage.revision_get([hash_to_bytes(revision_id)])) | revision = next(loader.storage.revision_get([hash_to_bytes(revision_id)])) | ||||
assert revision | assert revision | ||||
# check metadata | # check metadata | ||||
tool = { | fetcher = { | ||||
"name": "swh-deposit", | "name": "swh-deposit", | ||||
"version": "0.0.1", | "version": "0.0.1", | ||||
"configuration": {"sword_version": "2",}, | |||||
} | } | ||||
tool = loader.storage.tool_get(tool) | authority = { | ||||
assert tool is not None | "type": "deposit_client", | ||||
assert tool["id"] is not None | "url": "https://hal-test.archives-ouvertes.fr/", | ||||
provider = { | |||||
"provider_name": "hal", | |||||
"provider_type": "deposit_client", | |||||
"provider_url": "https://hal-test.archives-ouvertes.fr/", | |||||
"metadata": None, | |||||
} | } | ||||
provider = loader.storage.metadata_provider_get_by(provider) | metadata = list(loader.storage.origin_metadata_get(url, authority)) | ||||
assert provider is not None | |||||
assert provider["id"] is not None | |||||
metadata = list( | |||||
loader.storage.origin_metadata_get_by(url, provider_type="deposit_client") | |||||
) | |||||
assert metadata is not None | assert metadata is not None | ||||
assert isinstance(metadata, list) | assert isinstance(metadata, list) | ||||
assert len(metadata) == 1 | assert len(metadata) == 1 | ||||
metadata0 = metadata[0] | metadata0 = metadata[0] | ||||
assert metadata0["provider_id"] == provider["id"] | assert metadata0["authority"] == authority | ||||
assert metadata0["provider_type"] == "deposit_client" | assert metadata0["fetcher"] == fetcher | ||||
assert metadata0["tool_id"] == tool["id"] | |||||
# Retrieve the information for deposit status update query to the deposit | # Retrieve the information for deposit status update query to the deposit | ||||
urls = [ | urls = [ | ||||
m | m | ||||
for m in requests_mock_datadir.request_history | for m in requests_mock_datadir.request_history | ||||
if m.url == f"{DEPOSIT_URL}/{deposit_id}/update/" | if m.url == f"{DEPOSIT_URL}/{deposit_id}/update/" | ||||
] | ] | ||||
▲ Show 20 Lines • Show All 91 Lines • ▼ Show 20 Lines | assert revision["metadata"] == { | ||||
"sha256": "474bf646aeeff6d945eb752b1a9f8a40f3d81a88909ee7bd2d08cc822aa361e6", # noqa | "sha256": "474bf646aeeff6d945eb752b1a9f8a40f3d81a88909ee7bd2d08cc822aa361e6", # noqa | ||||
}, | }, | ||||
"filename": "archive.zip", | "filename": "archive.zip", | ||||
"length": 956830, | "length": 956830, | ||||
} | } | ||||
], | ], | ||||
} | } | ||||
fetcher = { | |||||
"name": "swh-deposit", | |||||
"version": "0.0.1", | |||||
} | |||||
authority = { | |||||
"type": "deposit_client", | |||||
"url": "https://hal-test.archives-ouvertes.fr/", | |||||
} | |||||
# Check the metadata swh side | # Check the metadata swh side | ||||
origin_meta = list( | origin_meta = list(loader.storage.origin_metadata_get(url, authority)) | ||||
loader.storage.origin_metadata_get_by(url, provider_type="deposit_client") | |||||
) | |||||
assert len(origin_meta) == 1 | assert len(origin_meta) == 1 | ||||
origin_meta = origin_meta[0] | origin_meta = origin_meta[0] | ||||
# dynamic, a pain to display and not that interesting | # dynamic, a pain to display and not that interesting | ||||
origin_meta.pop("discovery_date") | origin_meta.pop("discovery_date") | ||||
assert origin_meta == { | assert origin_meta == { | ||||
"metadata": { | "origin_url": "https://hal-test.archives-ouvertes.fr/some-external-id", | ||||
"metadata": json.dumps( | |||||
{ | |||||
"@xmlns": ["http://www.w3.org/2005/Atom"], | "@xmlns": ["http://www.w3.org/2005/Atom"], | ||||
"author": ["some awesome author", "another one", "no one"], | "author": ["some awesome author", "another one", "no one"], | ||||
"codemeta:dateCreated": "2017-10-07T15:17:08Z", | "codemeta:dateCreated": "2017-10-07T15:17:08Z", | ||||
"codemeta:datePublished": "2017-10-08T15:00:00Z", | "codemeta:datePublished": "2017-10-08T15:00:00Z", | ||||
"external_identifier": "some-external-id", | "external_identifier": "some-external-id", | ||||
"url": "https://hal-test.archives-ouvertes.fr/some-external-id", | "url": "https://hal-test.archives-ouvertes.fr/some-external-id", | ||||
}, | } | ||||
"origin_url": "https://hal-test.archives-ouvertes.fr/some-external-id", | ).encode(), | ||||
"provider_id": 1, | "format": "sword-v2-atom-codemeta-v2-in-json", | ||||
"provider_name": "hal", | "authority": authority, | ||||
"provider_type": "deposit_client", | "fetcher": fetcher, | ||||
"provider_url": "https://hal-test.archives-ouvertes.fr/", | |||||
"tool_id": 1, | |||||
} | } | ||||
# Retrieve the information for deposit status update query to the deposit | # Retrieve the information for deposit status update query to the deposit | ||||
urls = [ | urls = [ | ||||
m | m | ||||
for m in requests_mock_datadir.request_history | for m in requests_mock_datadir.request_history | ||||
if m.url == f"{DEPOSIT_URL}/{deposit_id}/update/" | if m.url == f"{DEPOSIT_URL}/{deposit_id}/update/" | ||||
] | ] | ||||
Show All 14 Lines |