-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add send DSS message to deposit function
* Update deposit function to send message to DSS * Add arguments to deposit function * Rename package_files var to correspond with new name of function
- Loading branch information
Showing
2 changed files
with
65 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,90 @@ | ||
import logging | ||
|
||
import boto3 | ||
from moto import mock_sqs | ||
|
||
from awd import deposit | ||
from awd.s3 import S3 | ||
|
||
logger = logging.getLogger(__name__) | ||
|
||
|
||
def test_deposit_success(web_mock, s3_mock, s3_client): | ||
s3 = S3() | ||
@mock_sqs | ||
def test_deposit_success( | ||
web_mock, s3_mock, s3_class, sqs_class, submission_message_body | ||
): | ||
sqs = boto3.resource("sqs", region_name="us-east-1") | ||
sqs.create_queue(QueueName="mock-input-queue") | ||
response = deposit.deposit( | ||
"tests/fixtures/doi_success.csv", | ||
"http://example.com/works/", | ||
"http://example.com/doi/", | ||
"awd", | ||
"https://queue.amazonaws.com/123456789012/mock-input-queue", | ||
"https://queue.amazonaws.com/123456789012/mock-output-queue", | ||
"123.4/5678", | ||
) | ||
uploaded_metadata = s3_class.client.get_object( | ||
Bucket="awd", Key="10.1002-term.3131.json" | ||
) | ||
uploaded_metadata = s3.client.get_object(Bucket="awd", Key="10.1002-term.3131.json") | ||
assert uploaded_metadata["ResponseMetadata"]["HTTPStatusCode"] == 200 | ||
uploaded_bitstream = s3.client.get_object(Bucket="awd", Key="10.1002-term.3131.pdf") | ||
uploaded_bitstream = s3_class.client.get_object( | ||
Bucket="awd", Key="10.1002-term.3131.pdf" | ||
) | ||
assert uploaded_bitstream["ResponseMetadata"]["HTTPStatusCode"] == 200 | ||
messages = sqs_class.receive( | ||
"https://queue.amazonaws.com/123456789012/mock-input-queue" | ||
) | ||
for message in messages: | ||
assert message["Body"] == str(submission_message_body) | ||
assert response == "Submission process has completed" | ||
|
||
|
||
def test_deposit_insufficient_metadata(caplog, web_mock, s3_mock, s3_client): | ||
def test_deposit_insufficient_metadata(caplog, web_mock, s3_mock, s3_class): | ||
with caplog.at_level(logging.INFO): | ||
response = deposit.deposit( | ||
"tests/fixtures/doi_insufficient_metadata.csv", | ||
"http://example.com/works/", | ||
"http://example.com/doi/", | ||
"awd", | ||
"mock-input-queue", | ||
"mock-output-queue", | ||
"123.4/5678", | ||
) | ||
assert ( | ||
"Insufficient metadata for 10.1002/nome.tadata, missing title or URL" | ||
in caplog.text | ||
) | ||
assert "Contents" not in s3_client.client.list_objects(Bucket="awd") | ||
assert "Contents" not in s3_class.client.list_objects(Bucket="awd") | ||
assert response == "Submission process has completed" | ||
|
||
|
||
def test_deposit_pdf_unavailable(caplog, web_mock, s3_mock, s3_client): | ||
def test_deposit_pdf_unavailable(caplog, web_mock, s3_mock, s3_class): | ||
with caplog.at_level(logging.INFO): | ||
response = deposit.deposit( | ||
"tests/fixtures/doi_pdf_unavailable.csv", | ||
"http://example.com/works/", | ||
"http://example.com/doi/", | ||
"awd", | ||
"mock-input-queue", | ||
"mock-output-queue", | ||
"123.4/5678", | ||
) | ||
assert "A PDF could not be retrieved for DOI: 10.1002/none.0000" in caplog.text | ||
assert "Contents" not in s3_client.client.list_objects(Bucket="awd") | ||
assert "Contents" not in s3_class.client.list_objects(Bucket="awd") | ||
assert response == "Submission process has completed" | ||
|
||
|
||
def test_deposit_s3_upload_failed(caplog, web_mock, s3_mock, s3_client): | ||
def test_deposit_s3_upload_failed(caplog, web_mock, s3_mock, s3_class): | ||
with caplog.at_level(logging.INFO): | ||
response = deposit.deposit( | ||
"tests/fixtures/doi_success.csv", | ||
"http://example.com/works/", | ||
"http://example.com/doi/", | ||
"not-a-bucket", | ||
"mock-input-queue", | ||
"mock-output-queue", | ||
"123.4/5678", | ||
) | ||
assert "Upload failed: 10.1002-term.3131.json" in caplog.text | ||
assert "Contents" not in s3_client.client.list_objects(Bucket="awd") | ||
assert "Contents" not in s3_class.client.list_objects(Bucket="awd") | ||
assert response == "Submission process has completed" |