Changeset View
Changeset View
Standalone View
Standalone View
swh/deposit/tests/api/test_deposit_private_read_metadata.py
Show First 20 Lines • Show All 90 Lines • ▼ Show 20 Lines | for url in private_get_raw_url_endpoints(deposit_collection, deposit): | ||||
"negative_utc": False, | "negative_utc": False, | ||||
"offset": 0, | "offset": 0, | ||||
"timestamp": {"microseconds": 0, "seconds": 1507389428}, | "timestamp": {"microseconds": 0, "seconds": 1507389428}, | ||||
}, | }, | ||||
"client": "test", | "client": "test", | ||||
"id": deposit.id, | "id": deposit.id, | ||||
"collection": "test", | "collection": "test", | ||||
"revision_parents": [], | "revision_parents": [], | ||||
"release_notes": "This is the release of October 7th, 2017.", | |||||
}, | }, | ||||
} | } | ||||
def test_read_metadata_revision_with_parent( | def test_read_metadata_revision_with_parent( | ||||
authenticated_client, deposit_collection, partial_deposit, atom_dataset | authenticated_client, deposit_collection, partial_deposit, atom_dataset | ||||
): | ): | ||||
"""Private read metadata to a deposit (with parent) returns metadata | """Private read metadata to a deposit (with parent) returns metadata | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | for url in private_get_raw_url_endpoints(deposit_collection, deposit): | ||||
"negative_utc": False, | "negative_utc": False, | ||||
"offset": 0, | "offset": 0, | ||||
"timestamp": {"microseconds": 0, "seconds": 1507389428}, | "timestamp": {"microseconds": 0, "seconds": 1507389428}, | ||||
}, | }, | ||||
"client": "test", | "client": "test", | ||||
"id": deposit.id, | "id": deposit.id, | ||||
"collection": "test", | "collection": "test", | ||||
"revision_parents": [rev_id], | "revision_parents": [rev_id], | ||||
"release_notes": "This is the release of October 7th, 2017.", | |||||
}, | }, | ||||
} | } | ||||
def test_read_metadata_3( | def test_read_metadata_3( | ||||
authenticated_client, deposit_collection, partial_deposit, atom_dataset | authenticated_client, deposit_collection, partial_deposit, atom_dataset | ||||
): | ): | ||||
"""date(Created|Published) provided, uses author/committer date | """date(Created|Published) provided, uses author/committer date | ||||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | for url in private_get_raw_url_endpoints(deposit_collection, deposit): | ||||
"negative_utc": False, | "negative_utc": False, | ||||
"offset": 0, | "offset": 0, | ||||
"timestamp": {"microseconds": 0, "seconds": 1507389428}, | "timestamp": {"microseconds": 0, "seconds": 1507389428}, | ||||
}, | }, | ||||
"client": deposit_collection.name, | "client": deposit_collection.name, | ||||
"id": deposit.id, | "id": deposit.id, | ||||
"collection": deposit_collection.name, | "collection": deposit_collection.name, | ||||
"revision_parents": [], | "revision_parents": [], | ||||
"release_notes": "This is the release of October 7th, 2017.", | |||||
}, | }, | ||||
} | } | ||||
def test_read_metadata_4( | def test_read_metadata_4( | ||||
authenticated_client, deposit_collection, atom_dataset, partial_deposit | authenticated_client, deposit_collection, atom_dataset, partial_deposit | ||||
): | ): | ||||
"""dateCreated/datePublished not provided, revision uses complete_date | """dateCreated/datePublished not provided, revision uses complete_date | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | for url in private_get_raw_url_endpoints(deposit_collection, deposit): | ||||
"negative_utc": False, | "negative_utc": False, | ||||
"offset": 0, | "offset": 0, | ||||
"timestamp": {"microseconds": 0, "seconds": 1459900800}, | "timestamp": {"microseconds": 0, "seconds": 1459900800}, | ||||
}, | }, | ||||
"client": deposit_collection.name, | "client": deposit_collection.name, | ||||
"id": deposit.id, | "id": deposit.id, | ||||
"collection": deposit_collection.name, | "collection": deposit_collection.name, | ||||
"revision_parents": [], | "revision_parents": [], | ||||
"release_notes": None, | |||||
}, | }, | ||||
} | } | ||||
def test_read_metadata_5( | def test_read_metadata_5( | ||||
authenticated_client, deposit_collection, partial_deposit, atom_dataset | authenticated_client, deposit_collection, partial_deposit, atom_dataset | ||||
): | ): | ||||
"""dateCreated/datePublished provided, revision uses author/committer | """dateCreated/datePublished provided, revision uses author/committer | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | for url in private_get_raw_url_endpoints(deposit_collection, deposit): | ||||
"negative_utc": False, | "negative_utc": False, | ||||
"offset": 120, | "offset": 120, | ||||
"timestamp": {"microseconds": 0, "seconds": 1428332927}, | "timestamp": {"microseconds": 0, "seconds": 1428332927}, | ||||
}, | }, | ||||
"client": deposit_collection.name, | "client": deposit_collection.name, | ||||
"id": deposit.id, | "id": deposit.id, | ||||
"collection": deposit_collection.name, | "collection": deposit_collection.name, | ||||
"revision_parents": [], | "revision_parents": [], | ||||
"release_notes": None, | |||||
}, | }, | ||||
} | } | ||||
def test_access_to_nonexisting_deposit_returns_404_response( | def test_access_to_nonexisting_deposit_returns_404_response( | ||||
authenticated_client, deposit_collection, | authenticated_client, deposit_collection, | ||||
): | ): | ||||
"""Read unknown collection should return a 404 response | """Read unknown collection should return a 404 response | ||||
""" | """ | ||||
unknown_id = 999 | unknown_id = 999 | ||||
try: | try: | ||||
Deposit.objects.get(pk=unknown_id) | Deposit.objects.get(pk=unknown_id) | ||||
except Deposit.DoesNotExist: | except Deposit.DoesNotExist: | ||||
assert True | assert True | ||||
for url in private_get_raw_url_endpoints(deposit_collection, unknown_id): | for url in private_get_raw_url_endpoints(deposit_collection, unknown_id): | ||||
response = authenticated_client.get(url) | response = authenticated_client.get(url) | ||||
assert response.status_code == status.HTTP_404_NOT_FOUND | assert response.status_code == status.HTTP_404_NOT_FOUND | ||||
msg = "Deposit %s does not exist" % unknown_id | msg = "Deposit %s does not exist" % unknown_id | ||||
assert msg in response.content.decode("utf-8") | assert msg in response.content.decode("utf-8") | ||||
def test_read_metadata_multiple_release_notes( | |||||
authenticated_client, deposit_collection, partial_deposit, atom_dataset | |||||
): | |||||
"""Private metadata read api to existing deposit should return metadata | |||||
""" | |||||
deposit = partial_deposit | |||||
deposit.external_id = "some-external-id" | |||||
deposit.origin_url = f"https://hal-test.archives-ouvertes.fr/{deposit.external_id}" | |||||
deposit.save() | |||||
metadata_xml_atoms = [ | |||||
atom_dataset[atom_key] for atom_key in ["entry-data-multiple-release-notes"] | |||||
] | |||||
metadata_xml_raws = [parse_xml(xml) for xml in metadata_xml_atoms] | |||||
for atom_xml in metadata_xml_atoms: | |||||
deposit = update_deposit_with_metadata( | |||||
authenticated_client, deposit_collection, deposit, atom_xml, | |||||
) | |||||
for url in private_get_raw_url_endpoints(deposit_collection, deposit): | |||||
response = authenticated_client.get(url) | |||||
assert response.status_code == status.HTTP_200_OK | |||||
assert response["content-type"] == "application/json" | |||||
actual_data = response.json() | |||||
assert actual_data == { | |||||
"origin": { | |||||
"type": "deposit", | |||||
"url": "https://hal-test.archives-ouvertes.fr/some-external-id", | |||||
}, | |||||
"metadata_raw": metadata_xml_atoms, | |||||
"metadata_dict": utils.merge(*metadata_xml_raws), | |||||
"provider": { | |||||
"metadata": {}, | |||||
"provider_name": "", | |||||
"provider_type": "deposit_client", | |||||
"provider_url": "https://hal-test.archives-ouvertes.fr/", | |||||
}, | |||||
"tool": { | |||||
"configuration": {"sword_version": "2"}, | |||||
"name": "swh-deposit", | |||||
"version": __version__, | |||||
}, | |||||
"deposit": { | |||||
"author": SWH_PERSON, | |||||
"committer": SWH_PERSON, | |||||
"committer_date": { | |||||
"negative_utc": False, | |||||
"offset": 0, | |||||
"timestamp": {"microseconds": 0, "seconds": 1507389428}, | |||||
}, | |||||
"author_date": { | |||||
"negative_utc": False, | |||||
"offset": 0, | |||||
"timestamp": {"microseconds": 0, "seconds": 1507389428}, | |||||
}, | |||||
"client": "test", | |||||
"id": deposit.id, | |||||
"collection": "test", | |||||
"revision_parents": [], | |||||
"release_notes": ( | |||||
"This is the release of October 7th, 2017.\n\n" | |||||
"It fixes some bugs." | |||||
), | |||||
}, | |||||
} |