This commit is contained in:
Kenneth Kehl
2023-08-29 14:54:30 -07:00
parent 19dcd7a48b
commit 1ecb747c6d
588 changed files with 34100 additions and 23589 deletions

View File

@@ -38,38 +38,46 @@ from tests.app.db import (
def test_purge_functional_test_data(notify_db_session, notify_api):
orig_user_count = User.query.count()
notify_api.test_cli_runner().invoke(
create_test_user, [
'--email', 'somebody+7af2cdb0-7cbc-44dc-a5d0-f817fc6ee94e@fake.gov',
'--mobile_number', '202-555-5555',
'--password', 'correct horse battery staple',
'--name', 'Fake Humanson',
]
create_test_user,
[
"--email",
"somebody+7af2cdb0-7cbc-44dc-a5d0-f817fc6ee94e@fake.gov",
"--mobile_number",
"202-555-5555",
"--password",
"correct horse battery staple",
"--name",
"Fake Humanson",
],
)
user_count = User.query.count()
assert user_count == orig_user_count + 1
notify_api.test_cli_runner().invoke(purge_functional_test_data, ['-u', 'somebody'])
notify_api.test_cli_runner().invoke(purge_functional_test_data, ["-u", "somebody"])
# if the email address has a uuid, it is test data so it should be purged and there should be
# zero users. Otherwise, it is real data so there should be one user.
assert User.query.count() == orig_user_count
def test_purge_functional_test_data_bad_mobile(notify_db_session, notify_api):
user_count = User.query.count()
assert user_count == 0
# run the command
command_response = notify_api.test_cli_runner().invoke(
create_test_user, [
'--email', 'somebody+7af2cdb0-7cbc-44dc-a5d0-f817fc6ee94e@fake.gov',
'--mobile_number', '555-555-55554444',
'--password', 'correct horse battery staple',
'--name', 'Fake Personson',
]
create_test_user,
[
"--email",
"somebody+7af2cdb0-7cbc-44dc-a5d0-f817fc6ee94e@fake.gov",
"--mobile_number",
"555-555-55554444",
"--password",
"correct horse battery staple",
"--name",
"Fake Personson",
],
)
# The bad mobile phone number results in a bad parameter error, leading to a system exit 2 and no entry made in db
assert "SystemExit(2)" in str(command_response)
@@ -78,10 +86,9 @@ def test_purge_functional_test_data_bad_mobile(notify_db_session, notify_api):
def test_update_jobs_archived_flag(notify_db_session, notify_api):
service = create_service()
sms_template = create_template(service=service, template_type='sms')
sms_template = create_template(service=service, template_type="sms")
create_job(sms_template)
right_now = datetime.datetime.utcnow()
@@ -94,10 +101,13 @@ def test_update_jobs_archived_flag(notify_db_session, notify_api):
assert archived_jobs == 0
notify_api.test_cli_runner().invoke(
update_jobs_archived_flag, [
'-e', tomorrow,
'-s', right_now,
]
update_jobs_archived_flag,
[
"-e",
tomorrow,
"-s",
right_now,
],
)
jobs = Job.query.all()
assert len(jobs) == 1
@@ -110,15 +120,12 @@ def test_populate_organizations_from_file(notify_db_session, notify_api):
assert org_count == 0
file_name = "./tests/app/orgs1.csv"
text = "name|blah|blah|blah|||\n" \
"foo|Federal|True|'foo.gov'|'foo.gov'||\n"
text = "name|blah|blah|blah|||\n" "foo|Federal|True|'foo.gov'|'foo.gov'||\n"
f = open(file_name, "a")
f.write(text)
f.close()
command_response = notify_api.test_cli_runner().invoke(
populate_organizations_from_file, [
'-f', file_name
]
populate_organizations_from_file, ["-f", file_name]
)
os.remove(file_name)
@@ -128,7 +135,9 @@ def test_populate_organizations_from_file(notify_db_session, notify_api):
assert org_count == 1
def test_populate_organization_agreement_details_from_file(notify_db_session, notify_api):
def test_populate_organization_agreement_details_from_file(
notify_db_session, notify_api
):
file_name = "./tests/app/orgs.csv"
org_count = Organization.query.count()
@@ -141,111 +150,123 @@ def test_populate_organization_agreement_details_from_file(notify_db_session, no
org.agreement_signed = True
notify_db_session.commit()
text = "id,agreement_signed_version,agreement_signed_on_behalf_of_name,agreement_signed_at\n" \
f"{org.id},1,bob,'2023-01-01 00:00:00'\n"
text = (
"id,agreement_signed_version,agreement_signed_on_behalf_of_name,agreement_signed_at\n"
f"{org.id},1,bob,'2023-01-01 00:00:00'\n"
)
f = open(file_name, "a")
f.write(text)
f.close()
command_response = notify_api.test_cli_runner().invoke(
populate_organization_agreement_details_from_file, [
'-f', file_name
]
populate_organization_agreement_details_from_file, ["-f", file_name]
)
print(f"command_response = {command_response}")
org_count = Organization.query.count()
assert org_count == 1
org = Organization.query.one()
assert org.agreement_signed_on_behalf_of_name == 'bob'
assert org.agreement_signed_on_behalf_of_name == "bob"
os.remove(file_name)
def test_create_test_user_command(notify_db_session, notify_api):
# number of users before adding ours
user_count = User.query.count()
# run the command
notify_api.test_cli_runner().invoke(
create_test_user, [
'--email', 'somebody@fake.gov',
'--mobile_number', '202-555-5555',
'--password', 'correct horse battery staple',
'--name', 'Fake Personson',
]
create_test_user,
[
"--email",
"somebody@fake.gov",
"--mobile_number",
"202-555-5555",
"--password",
"correct horse battery staple",
"--name",
"Fake Personson",
],
)
# there should be one more user
assert User.query.count() == user_count + 1
# that user should be the one we added
user = User.query.filter_by(
name='Fake Personson'
).first()
assert user.email_address == 'somebody@fake.gov'
assert user.auth_type == 'sms_auth'
assert user.state == 'active'
user = User.query.filter_by(name="Fake Personson").first()
assert user.email_address == "somebody@fake.gov"
assert user.auth_type == "sms_auth"
assert user.state == "active"
def test_insert_inbound_numbers_from_file(notify_db_session, notify_api, tmpdir):
numbers_file = tmpdir.join("numbers.txt")
numbers_file.write("07700900373\n07700900473\n07700900375\n\n\n\n")
notify_api.test_cli_runner().invoke(insert_inbound_numbers_from_file, ['-f', numbers_file])
notify_api.test_cli_runner().invoke(
insert_inbound_numbers_from_file, ["-f", numbers_file]
)
inbound_numbers = dao_get_available_inbound_numbers()
assert len(inbound_numbers) == 3
assert set(x.number for x in inbound_numbers) == {'07700900373', '07700900473', '07700900375'}
assert set(x.number for x in inbound_numbers) == {
"07700900373",
"07700900473",
"07700900375",
}
@pytest.mark.parametrize("organization_type, expected_allowance",
[('federal', 40000),
('state', 40000)])
@pytest.mark.parametrize(
"organization_type, expected_allowance", [("federal", 40000), ("state", 40000)]
)
def test_populate_annual_billing_with_defaults(
notify_db_session, notify_api, organization_type, expected_allowance
notify_db_session, notify_api, organization_type, expected_allowance
):
service = create_service(service_name=organization_type, organization_type=organization_type)
service = create_service(
service_name=organization_type, organization_type=organization_type
)
notify_api.test_cli_runner().invoke(
populate_annual_billing_with_defaults, ['-y', 2022]
populate_annual_billing_with_defaults, ["-y", 2022]
)
results = AnnualBilling.query.filter(
AnnualBilling.financial_year_start == 2022,
AnnualBilling.service_id == service.id
AnnualBilling.service_id == service.id,
).all()
assert len(results) == 1
assert results[0].free_sms_fragment_limit == expected_allowance
@pytest.mark.parametrize("organization_type, expected_allowance",
[('federal', 40000),
('state', 40000)])
@pytest.mark.parametrize(
"organization_type, expected_allowance", [("federal", 40000), ("state", 40000)]
)
def test_populate_annual_billing_with_the_previous_years_allowance(
notify_db_session, notify_api, organization_type, expected_allowance
notify_db_session, notify_api, organization_type, expected_allowance
):
service = create_service(service_name=organization_type, organization_type=organization_type)
service = create_service(
service_name=organization_type, organization_type=organization_type
)
notify_api.test_cli_runner().invoke(
populate_annual_billing_with_defaults, ['-y', 2022]
populate_annual_billing_with_defaults, ["-y", 2022]
)
results = AnnualBilling.query.filter(
AnnualBilling.financial_year_start == 2022,
AnnualBilling.service_id == service.id
AnnualBilling.service_id == service.id,
).all()
assert len(results) == 1
assert results[0].free_sms_fragment_limit == expected_allowance
notify_api.test_cli_runner().invoke(
populate_annual_billing_with_the_previous_years_allowance, ['-y', 2023]
populate_annual_billing_with_the_previous_years_allowance, ["-y", 2023]
)
results = AnnualBilling.query.filter(
AnnualBilling.financial_year_start == 2023,
AnnualBilling.service_id == service.id
AnnualBilling.service_id == service.id,
).all()
assert len(results) == 1
@@ -253,7 +274,6 @@ def test_populate_annual_billing_with_the_previous_years_allowance(
def test_fix_billable_units(notify_db_session, notify_api, sample_template):
create_notification(template=sample_template)
notification = Notification.query.one()
notification.billable_units = 0
@@ -264,42 +284,41 @@ def test_fix_billable_units(notify_db_session, notify_api, sample_template):
notify_db_session.commit()
notify_api.test_cli_runner().invoke(
fix_billable_units, []
)
notify_api.test_cli_runner().invoke(fix_billable_units, [])
notification = Notification.query.one()
assert notification.billable_units == 1
def test_populate_annual_billing_with_defaults_sets_free_allowance_to_zero_if_previous_year_is_zero(
notify_db_session, notify_api
notify_db_session, notify_api
):
service = create_service(organization_type='federal')
create_annual_billing(service_id=service.id, free_sms_fragment_limit=0, financial_year_start=2021)
service = create_service(organization_type="federal")
create_annual_billing(
service_id=service.id, free_sms_fragment_limit=0, financial_year_start=2021
)
notify_api.test_cli_runner().invoke(
populate_annual_billing_with_defaults, ['-y', 2022]
populate_annual_billing_with_defaults, ["-y", 2022]
)
results = AnnualBilling.query.filter(
AnnualBilling.financial_year_start == 2022,
AnnualBilling.service_id == service.id
AnnualBilling.service_id == service.id,
).all()
assert len(results) == 1
assert results[0].free_sms_fragment_limit == 0
def test_update_template(
notify_db_session, email_2fa_code_template
):
def test_update_template(notify_db_session, email_2fa_code_template):
_update_template(
"299726d2-dba6-42b8-8209-30e1d66ea164",
"Example text message template!",
"sms",
["Hi, Im trying out U.S. Notify! Today is ((day of week)) and my favorite color is ((color))."],
""
[
"Hi, Im trying out U.S. Notify! Today is ((day of week)) and my favorite color is ((color))."
],
"",
)
t = Template.query.all()