mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-11 17:38:50 -04:00
Merge pull request #3445 from alphagov/handle-org-domain-exists-error
Catch error when organisation domain already in use
This commit is contained in:
@@ -448,13 +448,24 @@ def edit_organisation_domains(org_id):
|
||||
form = OrganisationDomainsForm()
|
||||
|
||||
if form.validate_on_submit():
|
||||
organisations_client.update_organisation(
|
||||
org_id,
|
||||
domains=list(OrderedDict.fromkeys(
|
||||
domain.lower()
|
||||
for domain in filter(None, form.domains.data)
|
||||
)),
|
||||
)
|
||||
try:
|
||||
organisations_client.update_organisation(
|
||||
org_id,
|
||||
domains=list(OrderedDict.fromkeys(
|
||||
domain.lower()
|
||||
for domain in filter(None, form.domains.data)
|
||||
)),
|
||||
)
|
||||
except HTTPError as e:
|
||||
error_message = "Domain already exists"
|
||||
if e.status_code == 400 and error_message in e.message:
|
||||
flash("This domain is already in use", "error")
|
||||
return render_template(
|
||||
'views/organisations/organisation/settings/edit-domains.html',
|
||||
form=form,
|
||||
)
|
||||
else:
|
||||
raise e
|
||||
return redirect(url_for('.organisation_settings', org_id=org_id))
|
||||
|
||||
form.populate(current_organisation.domains)
|
||||
@@ -483,7 +494,7 @@ def confirm_edit_organisation_name(org_id):
|
||||
except HTTPError as e:
|
||||
error_msg = "Organisation name already exists"
|
||||
if e.status_code == 400 and error_msg in e.message:
|
||||
# Redirect the user back to the change service name screen
|
||||
# Redirect the user back to the change organisation name screen
|
||||
flash('This organisation name is already in use', 'error')
|
||||
return redirect(url_for('main.edit_organisation_name', org_id=org_id))
|
||||
else:
|
||||
|
||||
@@ -991,6 +991,38 @@ def test_update_organisation_domains(
|
||||
)
|
||||
|
||||
|
||||
def test_update_organisation_domains_when_domain_already_exists(
|
||||
mocker,
|
||||
client_request,
|
||||
fake_uuid,
|
||||
organisation_one,
|
||||
mock_get_organisation,
|
||||
):
|
||||
user = create_platform_admin_user()
|
||||
client_request.login(user)
|
||||
|
||||
mocker.patch('app.organisations_client.update_organisation', side_effect=HTTPError(
|
||||
response=Mock(
|
||||
status_code=400,
|
||||
json={'result': 'error', 'message': 'Domain already exists'}
|
||||
),
|
||||
message="Domain already exists")
|
||||
)
|
||||
|
||||
response = client_request.post(
|
||||
'main.edit_organisation_domains',
|
||||
org_id=ORGANISATION_ID,
|
||||
_data={
|
||||
'domains': [
|
||||
'example.gov.uk',
|
||||
]
|
||||
},
|
||||
_expected_status=200,
|
||||
)
|
||||
|
||||
assert response.find("div", class_="banner-dangerous").text.strip() == "This domain is already in use"
|
||||
|
||||
|
||||
def test_update_organisation_name(
|
||||
platform_admin_client,
|
||||
organisation_one,
|
||||
|
||||
Reference in New Issue
Block a user