Strip obscure whitespace from form submissions

We strip most whitespace as of:
https://github.com/alphagov/notifications-admin/pull/1701

However we are still getting some bad email addresses through, for
example one that had a leading zero-width space character. This means
that the user sees a validation error; really we should just deal with
the mess for them.

So this commit also includes characters without Unicode character
property "WSpace=Y" (which includes zero-width space) to those which are
stripped from form submissions.

List taken from here: https://en.wikipedia.org/wiki/Whitespace_character

See issue and discussion here: https://bugs.python.org/issue13391
This commit is contained in:
Chris Hill-Scott
2018-04-25 15:48:01 +01:00
parent 511ca8f652
commit 9e78c5f575
2 changed files with 43 additions and 1 deletions

View File

@@ -0,0 +1,32 @@
import pytest
from wtforms import Form, StringField
from app.main.forms import StripWhitespaceForm, StripWhitespaceStringField
class ExampleForm(StripWhitespaceForm):
foo = StringField('Foo')
class ExampleFormSpecialField(Form):
foo = StripWhitespaceStringField('foo')
@pytest.mark.parametrize('submitted_data', [
'bar',
' bar ',
"""
\t bar
""",
' \u180E\u200B \u200C bar \u200D \u2060\uFEFF ',
])
@pytest.mark.parametrize('form', [
ExampleForm,
ExampleFormSpecialField,
])
def test_form_strips_all_whitespace(
app_,
form,
submitted_data,
):
assert form(foo=submitted_data).foo.data == 'bar'