diff --git a/swh/deposit/tests/api/test_deposit_update.py b/swh/deposit/tests/api/test_deposit_update.py --- a/swh/deposit/tests/api/test_deposit_update.py +++ b/swh/deposit/tests/api/test_deposit_update.py @@ -14,12 +14,19 @@ DEPOSIT_STATUS_PARTIAL, EDIT_SE_IRI, EM_IRI, + APIConfig, ) from swh.deposit.models import Deposit, DepositCollection, DepositRequest from swh.deposit.parsers import parse_xml from swh.deposit.tests.common import check_archive, create_arborescence_archive from swh.model.hashutil import hash_to_bytes from swh.model.identifiers import parse_swhid, swhid +from swh.model.model import ( # RawExtrinsicMetadata, + MetadataAuthority, + MetadataAuthorityType, + MetadataFetcher, + MetadataTargetType, +) def test_replace_archive_to_deposit_is_possible( @@ -634,8 +641,56 @@ assert len(requests_archive1) == nb_archives assert set(actual_existing_requests_archive) == set(requests_archive1) - # FIXME: Check the metadata storage information created is consistent - pass + # Ensure metadata stored in the metadata storage is consistent + metadata_authority = MetadataAuthority( + type=MetadataAuthorityType.DEPOSIT_CLIENT, + url=complete_deposit.client.provider_url, + metadata={"name": complete_deposit.client.last_name}, + ) + + actual_authority = swh_storage.metadata_authority_get( + MetadataAuthorityType.DEPOSIT_CLIENT, url=complete_deposit.client.provider_url + ) + assert actual_authority == metadata_authority + + config = APIConfig() + metadata_fetcher = MetadataFetcher( + name=config.tool["name"], + version=config.tool["version"], + metadata=config.tool["configuration"], + ) + + actual_fetcher = swh_storage.metadata_fetcher_get( + config.tool["name"], config.tool["version"] + ) + assert actual_fetcher == metadata_fetcher + + raw_metadata = raw_metadata1.encode() + # expected_metadata_object = RawExtrinsicMetadata( + # type=MetadataTargetType.DIRECTORY, + # id=deposit_swhid, + # discovery_date=request_meta1.date, + # authority=metadata_authority, + # fetcher=metadata_fetcher, + # format="sword-v2-atom-codemeta", + # metadata=raw_metadata, + # ) + + directory_swhid = parse_swhid(complete_deposit.swh_id) + page_results = swh_storage.raw_extrinsic_metadata_get( + MetadataTargetType.DIRECTORY, directory_swhid, metadata_authority + ) + assert page_results.next_page_token is None + assert len(page_results.results) == 1 + dir_meta = page_results.results[0] + assert dir_meta.id == directory_swhid + assert dir_meta.metadata == raw_metadata + # storage issue: fail on metadata comparison difference + # assert dir_meta.authority == metadata_authority + # storage issue: fail on metadata comparison difference + # assert dir_meta.fetcher == metadata_fetcher + # storage issue: fail on metadata comparison difference above + # assert dir_meta == expected_metadata_object def test_post_update_metadata_done_deposit_failure_swhid_unknown(