diff --git a/app/letter_branding/letter_branding_rest.py b/app/letter_branding/letter_branding_rest.py index b7bfde001..2c105da67 100644 --- a/app/letter_branding/letter_branding_rest.py +++ b/app/letter_branding/letter_branding_rest.py @@ -22,27 +22,12 @@ def handle_integrity_error(exc): """ Handle integrity errors caused by the unique constraint """ - if 'domain' in str(exc): - return jsonify( - result='error', - message={'name': ["Duplicate domain '{}'".format( - exc.params.get('domain') - )]} - ), 400 - if 'name' in str(exc): - return jsonify( - result='error', - message={'name': ["Duplicate name '{}'".format( - exc.params.get('name') - )]} - ), 400 - if 'filename' in str(exc): - return jsonify( - result='error', - message={'name': ["Duplicate filename '{}'".format( - exc.params.get('fileaname') - )]} - ), 400 + for col in {'domain', 'name', 'filename'}: + if 'letter_branding_{}_key'.format(col) in str(exc): + return jsonify( + result='error', + message={col: ["{} already in use".format(col.title())]} + ), 400 current_app.logger.exception(exc) return jsonify(result='error', message="Internal server error"), 500 diff --git a/tests/app/letter_branding/test_letter_branding_rest.py b/tests/app/letter_branding/test_letter_branding_rest.py index 4564fc466..f83f569b5 100644 --- a/tests/app/letter_branding/test_letter_branding_rest.py +++ b/tests/app/letter_branding/test_letter_branding_rest.py @@ -61,11 +61,11 @@ def test_create_letter_branding(client, notify_db_session): assert letter_brand.filename == form['filename'] -def test_create_letter_branding_returns_400_if_name_already_exists(client, notify_db_session): +def test_create_letter_branding_returns_400_if_domain_already_exists(client, notify_db_session): create_letter_branding(name='duplicate', domain='duplicate', filename='duplicate') form = { - 'name': 'duplicate', - 'domain': 'super.brand', + 'name': 'super brand', + 'domain': 'duplicate', 'filename': 'super-brand', } @@ -77,7 +77,7 @@ def test_create_letter_branding_returns_400_if_name_already_exists(client, notif assert response.status_code == 400 json_resp = json.loads(response.get_data(as_text=True)) - assert json_resp['message'] == {'name': ["Duplicate domain 'super.brand'"]} + assert json_resp['message'] == {'domain': ["Domain already in use"]} def test_update_letter_branding_returns_400_when_integrity_error_is_thrown( @@ -86,8 +86,8 @@ def test_update_letter_branding_returns_400_when_integrity_error_is_thrown( create_letter_branding(name='duplicate', domain='duplicate', filename='duplicate') brand_to_update = create_letter_branding(name='super brand', domain='super brand', filename='super brand') form = { - 'name': 'super brand', - 'domain': 'duplicate', + 'name': 'duplicate', + 'domain': 'super brand', 'filename': 'super-brand', } @@ -99,4 +99,4 @@ def test_update_letter_branding_returns_400_when_integrity_error_is_thrown( assert response.status_code == 400 json_resp = json.loads(response.get_data(as_text=True)) - assert json_resp['message'] == {"name": ["Duplicate domain 'duplicate'"]} + assert json_resp['message'] == {"name": ["Name already in use"]}