Skip to content

Commit

Permalink
add tests for get upload url endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
carolinemodic committed Oct 29, 2024
1 parent adbeea1 commit cab6cab
Show file tree
Hide file tree
Showing 6 changed files with 313 additions and 0 deletions.
45 changes: 45 additions & 0 deletions server/tests/api/test_ballot_manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,3 +307,48 @@ def test_ballot_manifest_upload_duplicate_batch_name(
},
},
)


def test_ballot_manifest_get_upload_url_missing_file_type(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
set_logged_in_user(
client, UserType.JURISDICTION_ADMIN, default_ja_email(election_id)
)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/ballot-manifest/upload-url"
)
assert rv.status_code == 400
assert json.loads(rv.data) == {
"errors": [
{
"errorType": "Bad Request",
"message": "Missing expected query parameter: fileType",
}
]
}


def test_ballot_manifest_get_upload_url(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
allowed_users = [
(UserType.JURISDICTION_ADMIN, default_ja_email(election_id)),
(UserType.AUDIT_ADMIN, DEFAULT_AA_EMAIL),
]
for user, email in allowed_users:
set_logged_in_user(client, user, email)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/ballot-manifest/upload-url",
query_string={"fileType": "text/csv"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/jurisdictions/{jurisdiction_ids[0]}/manifest_"
)
assert response_data["fields"]["key"].endswith(".csv")
35 changes: 35 additions & 0 deletions server/tests/api/test_jurisdictions_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,3 +415,38 @@ def test_jurisdictions_file_expected_num_ballots(client: FlaskClient, election_i
assert [
(j["name"], j["expectedBallotManifestNumBallots"]) for j in jurisdictions
] == [("J1", 20), ("J2", None), ("J3", 10), ("J4", 500)]


def test_jurisdiction_file_get_upload_url_missing_file_type(
client: FlaskClient, election_id: str
):
set_logged_in_user(client, UserType.AUDIT_ADMIN, user_key=DEFAULT_AA_EMAIL)
rv = client.get(f"/api/election/{election_id}/jurisdiction/file/upload-url")
assert rv.status_code == 400
assert json.loads(rv.data) == {
"errors": [
{
"errorType": "Bad Request",
"message": "Missing expected query parameter: fileType",
}
]
}


def test_jurisdiction_file_get_upload_url(client: FlaskClient, election_id: str):
set_logged_in_user(client, UserType.AUDIT_ADMIN, user_key=DEFAULT_AA_EMAIL)

rv = client.get(
f"/api/election/{election_id}/jurisdiction/file/upload-url",
query_string={"fileType": "text/csv"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/participating_jurisdictions_"
)
assert response_data["fields"]["key"].endswith(".csv")
60 changes: 60 additions & 0 deletions server/tests/ballot_comparison/test_cvrs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2918,3 +2918,63 @@ def test_cvr_invalid_file_type(
}
]
}


def test_cvrs_get_upload_url_missing_file_type(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
set_logged_in_user(
client, UserType.JURISDICTION_ADMIN, default_ja_email(election_id)
)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/cvrs/upload-url"
)
assert rv.status_code == 400
assert json.loads(rv.data) == {
"errors": [
{
"errorType": "Bad Request",
"message": "Missing expected query parameter: fileType",
}
]
}


def test_cvrs_get_upload_url(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
allowed_users = [
(UserType.JURISDICTION_ADMIN, default_ja_email(election_id)),
(UserType.AUDIT_ADMIN, DEFAULT_AA_EMAIL),
]
for user, email in allowed_users:
set_logged_in_user(client, user, email)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/cvrs/upload-url",
query_string={"fileType": "text/csv", "cvrFileType": "DOMINION"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/jurisdictions/{jurisdiction_ids[0]}/cvrs_"
)
assert response_data["fields"]["key"].endswith(".csv")

rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/cvrs/upload-url",
query_string={"fileType": "text/csv", "cvrFileType": "HART"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/jurisdictions/{jurisdiction_ids[0]}/cvrs_"
)
assert response_data["fields"]["key"].endswith(".zip")
44 changes: 44 additions & 0 deletions server/tests/ballot_comparison/test_standardized_contests.py
Original file line number Diff line number Diff line change
Expand Up @@ -610,3 +610,47 @@ def test_reupload_standardized_contests_after_contests_selected(
]
},
)


def test_standardized_contests_get_upload_url_missing_file_type(
client: FlaskClient, election_id: str
):
set_logged_in_user(
client,
UserType.AUDIT_ADMIN,
DEFAULT_AA_EMAIL,
)
rv = client.get(
f"/api/election/{election_id}/standardized-contests/file/upload-url"
)
assert rv.status_code == 400
assert json.loads(rv.data) == {
"errors": [
{
"errorType": "Bad Request",
"message": "Missing expected query parameter: fileType",
}
]
}


def test_standardized_contests_get_upload_url(client: FlaskClient, election_id: str):
set_logged_in_user(
client,
UserType.AUDIT_ADMIN,
DEFAULT_AA_EMAIL,
)
rv = client.get(
f"/api/election/{election_id}/standardized-contests/file/upload-url",
query_string={"fileType": "text/csv"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/standardized_contests_"
)
assert response_data["fields"]["key"].endswith(".csv")
84 changes: 84 additions & 0 deletions server/tests/batch_comparison/test_batch_inventory.py
Original file line number Diff line number Diff line change
Expand Up @@ -1506,3 +1506,87 @@ def test_batch_inventory_upload_tabulator_status_before_cvr(
}
]
}


def test_batch_inventory_cvr_get_upload_url_missing_file_type(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
set_logged_in_user(
client, UserType.JURISDICTION_ADMIN, default_ja_email(election_id)
)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/batch-inventory/cvr/upload-url"
)
assert rv.status_code == 400
assert json.loads(rv.data) == {
"errors": [
{
"errorType": "Bad Request",
"message": "Missing expected query parameter: fileType",
}
]
}


def test_batch_inventory_cvr_get_upload_url(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
set_logged_in_user(
client, UserType.JURISDICTION_ADMIN, default_ja_email(election_id)
)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/batch-inventory/cvr/upload-url",
query_string={"fileType": "text/csv"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/jurisdictions/{jurisdiction_ids[0]}/batch-inventory-cvrs_"
)
assert response_data["fields"]["key"].endswith(".csv")


def test_batch_inventory_tabulator_status_get_upload_url_missing_file_type(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
set_logged_in_user(
client, UserType.JURISDICTION_ADMIN, default_ja_email(election_id)
)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/batch-inventory/tabulator-status/upload-url"
)
assert rv.status_code == 400
assert json.loads(rv.data) == {
"errors": [
{
"errorType": "Bad Request",
"message": "Missing expected query parameter: fileType",
}
]
}


def test_batch_inventory_tabulator_status_get_upload_url(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
set_logged_in_user(
client, UserType.JURISDICTION_ADMIN, default_ja_email(election_id)
)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/batch-inventory/tabulator-status/upload-url",
query_string={"fileType": "application/xml"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/jurisdictions/{jurisdiction_ids[0]}/batch-inventory-tabulator-status_"
)
assert response_data["fields"]["key"].endswith(".xml")
45 changes: 45 additions & 0 deletions server/tests/batch_comparison/test_batch_tallies.py
Original file line number Diff line number Diff line change
Expand Up @@ -739,3 +739,48 @@ def test_batch_tallies_template_csv_generation(
"Batch 2,0,0,0\r\n"
"Batch 3,0,0,0\r\n"
)


def test_batch_tallies_get_upload_url_missing_file_type(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
set_logged_in_user(
client, UserType.JURISDICTION_ADMIN, default_ja_email(election_id)
)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/batch-tallies/upload-url"
)
assert rv.status_code == 400
assert json.loads(rv.data) == {
"errors": [
{
"errorType": "Bad Request",
"message": "Missing expected query parameter: fileType",
}
]
}


def test_batch_tallies_get_upload_url(
client: FlaskClient, election_id: str, jurisdiction_ids: List[str]
):
allowed_users = [
(UserType.JURISDICTION_ADMIN, default_ja_email(election_id)),
(UserType.AUDIT_ADMIN, DEFAULT_AA_EMAIL),
]
for user, email in allowed_users:
set_logged_in_user(client, user, email)
rv = client.get(
f"/api/election/{election_id}/jurisdiction/{jurisdiction_ids[0]}/batch-tallies/upload-url",
query_string={"fileType": "text/csv"},
)
assert rv.status_code == 200

response_data = json.loads(rv.data)
expected_url = "/api/file-upload"

assert response_data["url"] == expected_url
assert response_data["fields"]["key"].startswith(
f"audits/{election_id}/jurisdictions/{jurisdiction_ids[0]}/batch_tallies_"
)
assert response_data["fields"]["key"].endswith(".csv")

0 comments on commit cab6cab

Please sign in to comment.