mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 15:57:23 -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()
|
form = OrganisationDomainsForm()
|
||||||
|
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
organisations_client.update_organisation(
|
try:
|
||||||
org_id,
|
organisations_client.update_organisation(
|
||||||
domains=list(OrderedDict.fromkeys(
|
org_id,
|
||||||
domain.lower()
|
domains=list(OrderedDict.fromkeys(
|
||||||
for domain in filter(None, form.domains.data)
|
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))
|
return redirect(url_for('.organisation_settings', org_id=org_id))
|
||||||
|
|
||||||
form.populate(current_organisation.domains)
|
form.populate(current_organisation.domains)
|
||||||
@@ -483,7 +494,7 @@ def confirm_edit_organisation_name(org_id):
|
|||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
error_msg = "Organisation name already exists"
|
error_msg = "Organisation name already exists"
|
||||||
if e.status_code == 400 and error_msg in e.message:
|
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')
|
flash('This organisation name is already in use', 'error')
|
||||||
return redirect(url_for('main.edit_organisation_name', org_id=org_id))
|
return redirect(url_for('main.edit_organisation_name', org_id=org_id))
|
||||||
else:
|
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(
|
def test_update_organisation_name(
|
||||||
platform_admin_client,
|
platform_admin_client,
|
||||||
organisation_one,
|
organisation_one,
|
||||||
|
|||||||
Reference in New Issue
Block a user