authenticated_client = <rest_framework.test.APIClient object at 0x7f2d3cb078d0>
deposit_collection = <DepositCollection: {'id': 44, 'name': 'test'}>
atom_dataset = {'codemeta-sample': '<?xml version="1.0"?>\n <entry xmlns="http://www.w3.org/2005/Atom"\n xmlns:d...ntry>\n', 'entry-data-empty-body': '<?xml version="1.0"?>\n<entry xmlns="http://www.w3.org/2005/Atom"></entry>\n', ...}
sample_archive = {'data': b'PK\x03\x04\x14\x00\x00\x00\x00\x00\xd1vtQ\xcba\xb4c\x14\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00file1som...ytest-0/test_post_deposit_multipart_zi0/tmpmccqqadc', 'length': 128, 'md5sum': 'b00668c14cb802ddab4e21657d13fdd4', ...}
def test_post_deposit_multipart_zip(
authenticated_client, deposit_collection, atom_dataset, sample_archive
):
"""one multipart deposit (zip+xml) should be accepted
"""
# given
url = reverse(COL_IRI, args=[deposit_collection.name])
archive = InMemoryUploadedFile(
BytesIO(sample_archive["data"]),
field_name=sample_archive["name"],
name=sample_archive["name"],
content_type="application/zip",
size=sample_archive["length"],
charset=None,
)
data_atom_entry = atom_dataset["entry-data-deposit-binary"]
atom_entry = InMemoryUploadedFile(
BytesIO(data_atom_entry.encode("utf-8")),
field_name="atom0",
name="atom0",
content_type='application/atom+xml; charset="utf-8"',
size=len(data_atom_entry),
charset="utf-8",
)
external_id = "external-id"
# when
response = authenticated_client.post(
url,
format="multipart",
data={"archive": archive, "atom_entry": atom_entry,},
# + headers
HTTP_IN_PROGRESS="false",
HTTP_SLUG=external_id,
)
# then
assert response.status_code == status.HTTP_201_CREATED
response_content = parse_xml(BytesIO(response.content))
deposit_id = response_content["swh:deposit_id"]
deposit = Deposit.objects.get(pk=deposit_id)
assert deposit.status == DEPOSIT_STATUS_DEPOSITED
assert deposit.external_id == external_id
assert deposit.collection == deposit_collection
assert deposit.swhid is None
deposit_requests = DepositRequest.objects.filter(deposit=deposit)
assert len(deposit_requests) == 2
for deposit_request in deposit_requests:
assert deposit_request.deposit == deposit
if deposit_request.type == "archive":
check_archive(sample_archive["name"], deposit_request.archive.name)
assert deposit_request.metadata is None
assert deposit_request.raw_metadata is None
else:
> assert (
deposit_request.metadata["atom:id"]
== "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a"
)
E KeyError: 'atom:id'
.tox/py3/lib/python3.7/site-packages/swh/deposit/tests/api/test_collection_post_multipart.py:121: KeyError
TEST RESULT
TEST RESULT
- Run At
- Nov 20 2020, 3:55 PM