This commit is contained in:
Kenneth Kehl
2025-09-17 12:16:12 -07:00
parent cef8917614
commit 518823439e
4 changed files with 39 additions and 112 deletions

View File

@@ -527,7 +527,7 @@
"filename": "tests/app/main/views/test_register.py",
"hashed_secret": "bdbb156d25d02fd7792865824201dda1c60f4473",
"is_verified": false,
"line_number": 118,
"line_number": 111,
"is_secret": false
},
{
@@ -535,7 +535,7 @@
"filename": "tests/app/main/views/test_register.py",
"hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8",
"is_verified": false,
"line_number": 188,
"line_number": 172,
"is_secret": false
},
{
@@ -543,7 +543,7 @@
"filename": "tests/app/main/views/test_register.py",
"hashed_secret": "bb5b7caa27d005d38039e3797c3ddb9bcd22c3c8",
"is_verified": false,
"line_number": 259,
"line_number": 243,
"is_secret": false
}
],
@@ -634,5 +634,5 @@
}
]
},
"generated_at": "2025-09-09T19:57:05Z"
"generated_at": "2025-09-17T19:16:00Z"
}

View File

@@ -3,6 +3,8 @@ import uuid
import pytest
from flask import url_for
from hypothesis import HealthCheck, given, settings
from hypothesis import strategies as st
import app
from app.enums import ServicePermission
@@ -1219,16 +1221,37 @@ def test_cancel_invited_user_cancels_user_invitations(
)
# @pytest.mark.usefixtures(
# "client_request",
# "mocker",
# )
# def test_cancel_invited_user_doesnt_work_if_user_not_invited_to_this_service(
# client_request,
# mocker,
# ):
# @given(fuzzed_uuid=st.uuids())
# def inner(fuzzed_uuid):
# mock_cancel = mocker.patch("app.invite_api_client.cancel_invited_user")
# client_request.get(
# "main.cancel_invited_user",
# service_id=SERVICE_ONE_ID,
# invited_user_id=fuzzed_uuid,
# _expected_status=404,
# )
# assert mock_cancel.called is False
# inner()
def test_cancel_invited_user_doesnt_work_if_user_not_invited_to_this_service(
client_request,
mock_get_invites_for_service,
mocker,
):
mock_cancel = mocker.patch("app.invite_api_client.cancel_invited_user")
client_request.get(
"main.cancel_invited_user",
service_id=SERVICE_ONE_ID,
invited_user_id=sample_uuid(),
invited_user_id="6ce466d0-fd6a-11e5-82f5-e0accb9d11a6",
_expected_status=404,
)
assert mock_cancel.called is False

View File

@@ -3,7 +3,9 @@ import json
from unittest.mock import ANY
import pytest
from flask import url_for
from flask import current_app, url_for
from hypothesis import HealthCheck, given, settings
from hypothesis import strategies as st
from app.enums import ServicePermission
from app.main.views.register import (
@@ -78,15 +80,6 @@ def test_register_creates_new_user_and_redirects_to_continue_page(
== "An email has been sent to notfound@example.gsa.gov."
)
# mock_send_verify_email.assert_called_with(ANY, user_data["email_address"])
# mock_register_user.assert_called_with(
# user_data["name"],
# user_data["email_address"],
# user_data["mobile_number"],
# user_data["password"],
# user_data["auth_type"],
# )
def test_register_continue_handles_missing_session_sensibly(client_request, mocker):
@@ -139,33 +132,24 @@ def test_should_return_200_when_email_is_not_gov_uk(
)
@pytest.mark.parametrize(
"email_address",
[
"notfound@example.gsa.gov",
"example@lsquo.si.edu",
],
@settings(suppress_health_check=[HealthCheck.function_scoped_fixture])
@given(
fuzzed_email_address=st.from_regex(
r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}", fullmatch=True
)
)
def test_should_add_user_details_to_session(
client_request,
mocker,
mock_send_verify_code,
mock_register_user,
mock_get_user_by_email_not_found,
mock_get_organizations_with_unusual_domains,
mock_email_is_not_already_in_use,
mock_send_verify_email,
mock_login,
email_address,
fuzzed_email_address,
):
mocker.patch("app.notify_client.user_api_client.UserApiClient.deactivate_user")
client_request.logout()
client_request.post(
"main.register",
_data={
"name": "Test Codes",
"email_address": email_address,
"email_address": fuzzed_email_address,
"mobile_number": "+12023123123",
"password": "validPassword!",
},
@@ -451,12 +435,6 @@ def test_decode_state(encoded_invite_data):
}
# @pytest.mark.parametrize(
# ("user_services", "user_organizations", "expected_status", "organization_checked"),
# [
# ([SERVICE_ONE_ID], [], 200, False),
@pytest.mark.parametrize(
("invite_data", "expected_is_org_invite", "expected_user_id"),
[

View File

@@ -14,8 +14,6 @@ from zipfile import BadZipFile
import pytest
from flask import url_for
from hypothesis import HealthCheck, given, settings
from hypothesis import strategies as st
from xlrd.biffh import XLRDError
from xlrd.xldate import XLDateAmbiguous, XLDateError, XLDateNegative, XLDateTooLarge
@@ -106,78 +104,6 @@ test_spreadsheet_files = glob(path.join("tests", "spreadsheet_files", "*"))
test_non_spreadsheet_files = glob(path.join("tests", "non_spreadsheet_files", "*"))
@settings(max_examples=10, suppress_health_check=[HealthCheck.function_scoped_fixture])
@given(
rows=st.integers(min_value=1, max_value=10),
rows_data=st.lists(
st.tuples(
st.text(
min_size=10,
max_size=15,
alphabet=st.characters(min_codepoint=ord("0"), max_codepoint=ord("9")),
),
st.text(
min_size=1,
max_size=20,
alphabet=st.characters(whitelist_categories=["L", "N", "Zs"]),
),
st.text(
min_size=1,
max_size=20,
alphabet=st.characters(whitelist_categories=["L", "N", "Zs"]),
),
st.text(
min_size=1,
max_size=20,
alphabet=st.characters(whitelist_categories=["L", "N", "Zs"]),
),
),
min_size=1,
max_size=10,
),
)
def test_fuzz_upload_csv_batch_sms_handles_bad_and_good_input(
rows, rows_data, client_request, mocker, fake_uuid
):
mock_s3_set_metadata = mocker.patch(
"app.main.views.send.set_metadata_on_csv_upload"
)
mock_s3_upload = mocker.patch("app.main.views.send.s3upload")
mocker.patch(
"app.main.views.send.get_csv_metadata",
return_value={"original_file_name": "fuzz.csv"},
)
output = io.StringIO()
writer = csv.writer(output)
writer.writerow(["phone_number", "name", "favourite colour", "fruit"])
for row in rows_data[: min(rows, len(rows_data))]:
writer.writerow(row)
csv_content = output.getvalue()
try:
client_request.post(
"main.send_messages",
service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
_data={"file": (io.BytesIO(csv_content.encode("utf-8")), "fuzz.csv")},
_content_type="multipart/form-data",
_follows_redirects=False,
)
except Exception:
print("Generated CSV that caused 500:\n", csv_content) # noqa
raise
assert mock_s3_upload.called
uploaded_data = mock_s3_upload.call_args[0][1]["data"].strip()
assert "phone number" in uploaded_data
mock_s3_set_metadata.assert_called_once_with(
SERVICE_ONE_ID, ANY, original_file_name="fuzz.csv"
)
def test_show_correct_title_and_description_for_email_sender_type(
client_request,
fake_uuid,