Skip to content
Snippets Groups Projects
Commit 2dad88b4 authored by vlorentz's avatar vlorentz
Browse files

mailmaps: Make error handling more robust when 'from_email' is missing/empty.

parent 0bcfbb21
No related branches found
No related tags found
1 merge request!719mailmaps: Make error handling more robust when 'from_email' is missing/empty.
......@@ -41,12 +41,18 @@ def profile_add_mailmap(request: Request) -> HttpResponse:
if not request.user.has_perm(MAILMAP_PERMISSION):
return HttpResponseForbidden()
from_email = request.data.pop("from_email", None)
if not from_email:
return HttpResponseBadRequest("'from_email' must be provided and non-empty.")
try:
UserMailmap.objects.create(user_id=str(request.user.id), **request.data)
UserMailmap.objects.create(
user_id=str(request.user.id), from_email=from_email, **request.data
)
except IntegrityError:
return HttpResponseBadRequest("This 'from_email' already exists.")
mm = UserMailmap.objects.get(
user_id=str(request.user.id), from_email=request.data.get("from_email")
user_id=str(request.user.id), from_email=from_email
)
return Response(UserMailmapSerializer(mm).data)
......@@ -56,10 +62,9 @@ def profile_update_mailmap(request: Request) -> HttpResponse:
if not request.user.has_perm(MAILMAP_PERMISSION):
return HttpResponseForbidden()
try:
from_email = request.data.pop("from_email")
except KeyError:
return HttpResponseBadRequest("Missing from_email value")
from_email = request.data.pop("from_email", None)
if not from_email:
return HttpResponseBadRequest("'from_email' must be provided and non-empty.")
user_id = str(request.user.id)
......
......@@ -85,11 +85,12 @@ def test_mailmap_endpoints_error_response(api_client, mailmap_user):
api_client.force_login(mailmap_user)
url = reverse("profile-mailmap-add")
resp = check_api_post_response(api_client, url, status_code=500)
assert "exception" in resp.data
resp = check_api_post_response(api_client, url, status_code=400)
assert b"from_email" in resp.content
url = reverse("profile-mailmap-update")
resp = check_api_post_response(api_client, url, status_code=400)
assert b"from_email" in resp.content
@pytest.mark.django_db(transaction=True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment