return error if invalid alias address
This commit is contained in:
parent
e1123961cf
commit
226ce9333c
|
@ -1,6 +1,6 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from email_validator import validate_email
|
from email_validator import validate_email, EmailNotValidError
|
||||||
from flask import g
|
from flask import g
|
||||||
from flask import jsonify, request
|
from flask import jsonify, request
|
||||||
from itsdangerous import SignatureExpired
|
from itsdangerous import SignatureExpired
|
||||||
|
@ -213,7 +213,16 @@ def new_custom_alias_v3():
|
||||||
LOG.d("full alias already used %s", full_alias)
|
LOG.d("full alias already used %s", full_alias)
|
||||||
return jsonify(error=f"alias {full_alias} already exists"), 409
|
return jsonify(error=f"alias {full_alias} already exists"), 409
|
||||||
|
|
||||||
custom_domain = get_custom_domain(full_alias)
|
if ".." in full_alias:
|
||||||
|
return (
|
||||||
|
jsonify(error="2 consecutive dot signs aren't allowed in an email address"),
|
||||||
|
400,
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
custom_domain = get_custom_domain(full_alias)
|
||||||
|
except EmailNotValidError:
|
||||||
|
return jsonify(error="invalid email alias"), 400
|
||||||
|
|
||||||
alias = Alias.create(
|
alias = Alias.create(
|
||||||
user_id=user.id,
|
user_id=user.id,
|
||||||
|
|
|
@ -269,3 +269,25 @@ def test_too_many_requests(flask_client):
|
||||||
# last request
|
# last request
|
||||||
assert r.status_code == 429
|
assert r.status_code == 429
|
||||||
assert r.json == {"error": "Rate limit exceeded"}
|
assert r.json == {"error": "Rate limit exceeded"}
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_alias_2_consecutive_dots(flask_client):
|
||||||
|
user = login(flask_client)
|
||||||
|
|
||||||
|
word = random_word()
|
||||||
|
suffix = f".{word}@{EMAIL_DOMAIN}"
|
||||||
|
signed_suffix = signer.sign(suffix).decode()
|
||||||
|
|
||||||
|
r = flask_client.post(
|
||||||
|
"/api/v3/alias/custom/new",
|
||||||
|
json={
|
||||||
|
"alias_prefix": "prefix.", # with the trailing dot, the alias will have 2 consecutive dots
|
||||||
|
"signed_suffix": signed_suffix,
|
||||||
|
"mailbox_ids": [user.default_mailbox_id],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert r.status_code == 400
|
||||||
|
assert r.json == {
|
||||||
|
"error": "2 consecutive dot signs aren't allowed in an email address"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue