Merge pull request #994 from dod-ccpo/cloud-pdf-uploads

CSP PDF uploads
This commit is contained in:
richard-dds
2019-08-08 11:17:07 -04:00
committed by GitHub
23 changed files with 548 additions and 104 deletions

View File

@@ -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)

View File

@@ -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")

View File

@@ -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

View File

@@ -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)