Merge pull request #255 from dod-ccpo/review-request-page-#159038263
Review request page #159038263
This commit is contained in:
61
tests/routes/test_request_approval.py
Normal file
61
tests/routes/test_request_approval.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import os
|
||||
from flask import url_for
|
||||
|
||||
from atst.models.attachment import Attachment
|
||||
from atst.domain.roles import Roles
|
||||
|
||||
from tests.factories import RequestFactory, TaskOrderFactory, UserFactory
|
||||
|
||||
|
||||
def test_ccpo_can_view_approval(user_session, client):
|
||||
ccpo = Roles.get("ccpo")
|
||||
user = UserFactory.create(atat_role=ccpo)
|
||||
user_session(user)
|
||||
|
||||
request = RequestFactory.create()
|
||||
response = client.get(url_for("requests.approval", request_id=request.id))
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_non_ccpo_cannot_view_approval(user_session, client):
|
||||
user = UserFactory.create()
|
||||
user_session(user)
|
||||
|
||||
request = RequestFactory.create(creator=user)
|
||||
response = client.get(url_for("requests.approval", request_id=request.id))
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
def test_task_order_download(app, client, user_session, pdf_upload):
|
||||
user = UserFactory.create()
|
||||
user_session(user)
|
||||
|
||||
attachment = Attachment.attach(pdf_upload)
|
||||
task_order = TaskOrderFactory.create(number="abc123", pdf=attachment)
|
||||
request = RequestFactory.create(task_order=task_order, creator=user)
|
||||
|
||||
# ensure that real data for pdf upload has been flushed to disk
|
||||
pdf_upload.seek(0)
|
||||
pdf_content = pdf_upload.read()
|
||||
pdf_upload.close()
|
||||
full_path = os.path.join(
|
||||
app.config.get("STORAGE_CONTAINER"), attachment.object_name
|
||||
)
|
||||
with open(full_path, "wb") as output_file:
|
||||
output_file.write(pdf_content)
|
||||
output_file.flush()
|
||||
|
||||
response = client.get(
|
||||
url_for("requests.task_order_pdf_download", request_id=request.id)
|
||||
)
|
||||
assert response.data == pdf_content
|
||||
|
||||
|
||||
def test_task_order_download_does_not_exist(client, user_session):
|
||||
user = UserFactory.create()
|
||||
user_session(user)
|
||||
request = RequestFactory.create(creator=user)
|
||||
response = client.get(
|
||||
url_for("requests.task_order_pdf_download", request_id=request.id)
|
||||
)
|
||||
assert response.status_code == 404
|
@@ -1,3 +1,5 @@
|
||||
from flask import url_for
|
||||
|
||||
from atst.routes.requests.index import RequestsIndex
|
||||
from tests.factories import RequestFactory, UserFactory
|
||||
from atst.domain.requests import Requests
|
||||
@@ -21,3 +23,18 @@ def test_action_required_ccpo():
|
||||
context = RequestsIndex(ccpo).execute()
|
||||
|
||||
assert context["num_action_required"] == 1
|
||||
|
||||
|
||||
def test_ccpo_sees_approval_screen():
|
||||
ccpo = UserFactory.from_atat_role("ccpo")
|
||||
request = RequestFactory.create()
|
||||
Requests.submit(request)
|
||||
ccpo_context = RequestsIndex(ccpo).execute()
|
||||
assert ccpo_context["requests"][0]["edit_link"] == url_for(
|
||||
"requests.approval", request_id=request.id
|
||||
)
|
||||
|
||||
mo_context = RequestsIndex(request.creator).execute()
|
||||
assert mo_context["requests"][0]["edit_link"] != url_for(
|
||||
"requests.approval", request_id=request.id
|
||||
)
|
||||
|
@@ -31,3 +31,19 @@ def test_upload_fails_for_non_pdfs(uploader):
|
||||
fs = FileStorage(fp, content_type="text/plain")
|
||||
with pytest.raises(UploadError):
|
||||
uploader.upload(fs)
|
||||
|
||||
|
||||
def test_download_stream(upload_dir, uploader, pdf_upload):
|
||||
# write pdf content to upload file storage and make sure it is flushed to
|
||||
# disk
|
||||
pdf_upload.seek(0)
|
||||
pdf_content = pdf_upload.read()
|
||||
pdf_upload.close()
|
||||
full_path = os.path.join(upload_dir, "abc")
|
||||
with open(full_path, "wb") as output_file:
|
||||
output_file.write(pdf_content)
|
||||
output_file.flush()
|
||||
|
||||
stream = uploader.download_stream("abc")
|
||||
stream_content = b"".join([b for b in stream])
|
||||
assert pdf_content == stream_content
|
||||
|
Reference in New Issue
Block a user