Make sure domains are always lowercased

Because otherwise we might get garbage duplicate data.
This commit is contained in:
Chris Hill-Scott
2019-03-08 14:38:49 +00:00
parent 6e8ce78603
commit 73ca8b73f9
2 changed files with 31 additions and 2 deletions

View File

@@ -59,12 +59,12 @@ def dao_update_organisation(organisation_id, **kwargs):
kwargs
)
if domains:
if isinstance(domains, list):
Domain.query.filter_by(organisation_id=organisation_id).delete()
db.session.bulk_save_objects([
Domain(domain=domain, organisation_id=organisation_id)
Domain(domain=domain.lower(), organisation_id=organisation_id)
for domain in domains
])

View File

@@ -90,6 +90,35 @@ def test_update_organisation(
assert getattr(organisation, attribute) == value
@pytest.mark.parametrize('domain_list, expected_domains', (
(['abc', 'def'], {'abc', 'def'}),
(['ABC', 'DEF'], {'abc', 'def'}),
([], set()),
(None, {'123', '456'}),
pytest.param(
['abc', 'ABC'], {'abc'},
marks=pytest.mark.xfail(raises=IntegrityError)
),
))
def test_update_organisation_domains_lowercases(
notify_db,
notify_db_session,
domain_list,
expected_domains,
):
create_organisation()
organisation = Organisation.query.one()
# Seed some domains
dao_update_organisation(organisation.id, domains=['123', '456'])
# This should overwrite the seeded domains
dao_update_organisation(organisation.id, domains=domain_list)
assert {domain.domain for domain in organisation.domains} == expected_domains
def test_add_service_to_organisation(notify_db, notify_db_session, sample_service, sample_organisation):
assert sample_organisation.services == []