Merge pull request #994 from dod-ccpo/cloud-pdf-uploads
CSP PDF uploads
This commit is contained in:
@@ -269,7 +269,9 @@ class TaskOrderFactory(Base):
|
||||
class Meta:
|
||||
model = TaskOrder
|
||||
|
||||
portfolio = factory.SubFactory(PortfolioFactory)
|
||||
portfolio = factory.SubFactory(
|
||||
PortfolioFactory, owner=factory.SelfAttribute("..creator")
|
||||
)
|
||||
number = factory.LazyFunction(random_task_order_number)
|
||||
creator = factory.SubFactory(UserFactory)
|
||||
_pdf = factory.SubFactory(AttachmentFactory)
|
||||
|
@@ -2,8 +2,8 @@ import pytest
|
||||
|
||||
from wtforms.widgets import CheckboxInput
|
||||
from wtforms.fields import StringField
|
||||
from wtforms.validators import InputRequired
|
||||
from wtforms import Form
|
||||
from wtforms.validators import InputRequired, URL
|
||||
from wtforms import Form, FormField
|
||||
|
||||
|
||||
class InitialValueForm(Form):
|
||||
@@ -14,6 +14,19 @@ class InitialValueForm(Form):
|
||||
)
|
||||
|
||||
|
||||
class TaskOrderPdfForm(Form):
|
||||
filename = StringField(default="initialvalue")
|
||||
object_name = StringField()
|
||||
|
||||
errorfield = StringField(
|
||||
label="error", validators=[InputRequired(message="Test Error Message")]
|
||||
)
|
||||
|
||||
|
||||
class TaskOrderForm(Form):
|
||||
pdf = FormField(TaskOrderPdfForm, label="task_order_pdf")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def env(app, scope="function"):
|
||||
return app.jinja_env
|
||||
@@ -39,6 +52,16 @@ def initial_value_form(scope="function"):
|
||||
return InitialValueForm()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def task_order_form(scope="function"):
|
||||
return TaskOrderForm()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def error_task_order_form(scope="function"):
|
||||
return ErrorTaskOrderForm()
|
||||
|
||||
|
||||
def write_template(content, name):
|
||||
with open("js/test_templates/{}".format(name), "w") as fh:
|
||||
fh.write(content)
|
||||
@@ -50,12 +73,16 @@ def test_make_checkbox_input_template(checkbox_input_macro, initial_value_form):
|
||||
write_template(rendered_checkbox_macro, "checkbox_input_template.html")
|
||||
|
||||
|
||||
def test_make_upload_input_template(upload_input_macro, initial_value_form):
|
||||
rendered_upload_macro = upload_input_macro(initial_value_form.datafield)
|
||||
def test_make_upload_input_template(upload_input_macro, task_order_form):
|
||||
rendered_upload_macro = upload_input_macro(
|
||||
task_order_form.pdf, token="token", object_name="object_name"
|
||||
)
|
||||
write_template(rendered_upload_macro, "upload_input_template.html")
|
||||
|
||||
|
||||
def test_make_upload_input_error_template(upload_input_macro, initial_value_form):
|
||||
initial_value_form.validate()
|
||||
rendered_upload_macro = upload_input_macro(initial_value_form.errorfield)
|
||||
def test_make_upload_input_error_template(upload_input_macro, task_order_form):
|
||||
task_order_form.validate()
|
||||
rendered_upload_macro = upload_input_macro(
|
||||
task_order_form.pdf, token="token", object_name="object_name"
|
||||
)
|
||||
write_template(rendered_upload_macro, "upload_input_error_template.html")
|
||||
|
@@ -9,6 +9,10 @@ from atst.models import TaskOrder
|
||||
from tests.factories import CLINFactory, PortfolioFactory, TaskOrderFactory, UserFactory
|
||||
|
||||
|
||||
def build_pdf_form_data(filename="sample.pdf", object_name="object_name"):
|
||||
return {"pdf-filename": filename, "pdf-object_name": object_name}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def task_order():
|
||||
user = UserFactory.create()
|
||||
@@ -47,19 +51,16 @@ def test_task_orders_form_step_one_add_pdf(client, user_session, portfolio):
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_task_orders_submit_form_step_one_add_pdf(
|
||||
client, user_session, portfolio, pdf_upload, session
|
||||
):
|
||||
def test_task_orders_submit_form_step_one_add_pdf(client, user_session, portfolio):
|
||||
user_session(portfolio.owner)
|
||||
form_data = {"pdf": pdf_upload}
|
||||
response = client.post(
|
||||
url_for("task_orders.submit_form_step_one_add_pdf", portfolio_id=portfolio.id),
|
||||
data=form_data,
|
||||
data=build_pdf_form_data(),
|
||||
)
|
||||
|
||||
assert response.status_code == 302
|
||||
task_order = portfolio.task_orders[0]
|
||||
assert task_order.pdf.filename == pdf_upload.filename
|
||||
assert task_order.pdf.filename == "sample.pdf"
|
||||
|
||||
|
||||
def test_task_orders_form_step_one_add_pdf_existing_to(
|
||||
@@ -72,35 +73,29 @@ def test_task_orders_form_step_one_add_pdf_existing_to(
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_task_orders_submit_form_step_one_add_pdf_existing_to(
|
||||
client, user_session, task_order, pdf_upload, pdf_upload2
|
||||
):
|
||||
task_order.pdf = pdf_upload
|
||||
assert task_order.pdf.filename == pdf_upload.filename
|
||||
|
||||
def test_task_orders_submit_form_step_one_add_pdf_existing_to(client, user_session):
|
||||
task_order = TaskOrderFactory.create()
|
||||
user_session(task_order.creator)
|
||||
form_data = {"pdf": pdf_upload2}
|
||||
response = client.post(
|
||||
url_for(
|
||||
"task_orders.submit_form_step_one_add_pdf", task_order_id=task_order.id
|
||||
),
|
||||
data=form_data,
|
||||
data=build_pdf_form_data(),
|
||||
)
|
||||
assert response.status_code == 302
|
||||
assert task_order.pdf.filename == pdf_upload2.filename
|
||||
assert task_order.pdf.filename == "sample.pdf"
|
||||
|
||||
|
||||
def test_task_orders_submit_form_step_one_add_pdf_delete_pdf(
|
||||
client, user_session, portfolio, pdf_upload
|
||||
):
|
||||
user_session(portfolio.owner)
|
||||
task_order = TaskOrderFactory.create(pdf=pdf_upload, portfolio=portfolio)
|
||||
data = {"pdf": ""}
|
||||
task_order = TaskOrderFactory.create(portfolio=portfolio)
|
||||
response = client.post(
|
||||
url_for(
|
||||
"task_orders.submit_form_step_one_add_pdf", task_order_id=task_order.id
|
||||
),
|
||||
data=data,
|
||||
data=build_pdf_form_data(filename="", object_name=""),
|
||||
)
|
||||
assert task_order.pdf is None
|
||||
assert response.status_code == 302
|
||||
|
@@ -448,9 +448,7 @@ def test_task_orders_download_task_order_pdf_access(get_url_assert_status, monke
|
||||
rando = user_with()
|
||||
|
||||
portfolio = PortfolioFactory.create(owner=owner)
|
||||
task_order = TaskOrderFactory.create(
|
||||
portfolio=portfolio, pdf=AttachmentFactory.create()
|
||||
)
|
||||
task_order = TaskOrderFactory.create(portfolio=portfolio)
|
||||
|
||||
url = url_for("task_orders.download_task_order_pdf", task_order_id=task_order.id)
|
||||
get_url_assert_status(owner, url, 200)
|
||||
|
Reference in New Issue
Block a user