Validate email addresses in oversight form

This commit is contained in:
Patrick Smith 2019-02-04 13:19:34 -05:00
parent d98abad611
commit f1683e8ff7
3 changed files with 34 additions and 5 deletions

View File

@ -10,7 +10,7 @@ from wtforms.fields import (
) )
from wtforms.fields.html5 import DateField, TelField from wtforms.fields.html5 import DateField, TelField
from wtforms.widgets import ListWidget, CheckboxInput from wtforms.widgets import ListWidget, CheckboxInput
from wtforms.validators import Length, Required, Optional from wtforms.validators import Email, Length, Required, Optional
from flask_wtf.file import FileAllowed from flask_wtf.file import FileAllowed
from atst.forms.validators import IsNumber, PhoneNumber, RequiredIf from atst.forms.validators import IsNumber, PhoneNumber, RequiredIf
@ -132,7 +132,10 @@ class OversightForm(CacheableForm):
translate("forms.task_order.oversight_first_name_label") translate("forms.task_order.oversight_first_name_label")
) )
ko_last_name = StringField(translate("forms.task_order.oversight_last_name_label")) ko_last_name = StringField(translate("forms.task_order.oversight_last_name_label"))
ko_email = StringField(translate("forms.task_order.oversight_email_label")) ko_email = StringField(
translate("forms.task_order.oversight_email_label"),
validators=[Optional(), Email()],
)
ko_phone_number = TelField( ko_phone_number = TelField(
translate("forms.task_order.oversight_phone_label"), translate("forms.task_order.oversight_phone_label"),
validators=[Optional(), PhoneNumber()], validators=[Optional(), PhoneNumber()],
@ -151,7 +154,10 @@ class OversightForm(CacheableForm):
translate("forms.task_order.oversight_first_name_label") translate("forms.task_order.oversight_first_name_label")
) )
cor_last_name = StringField(translate("forms.task_order.oversight_last_name_label")) cor_last_name = StringField(translate("forms.task_order.oversight_last_name_label"))
cor_email = StringField(translate("forms.task_order.oversight_email_label")) cor_email = StringField(
translate("forms.task_order.oversight_email_label"),
validators=[Optional(), Email()],
)
cor_phone_number = TelField( cor_phone_number = TelField(
translate("forms.task_order.oversight_phone_label"), translate("forms.task_order.oversight_phone_label"),
validators=[ validators=[
@ -176,7 +182,10 @@ class OversightForm(CacheableForm):
translate("forms.task_order.oversight_first_name_label") translate("forms.task_order.oversight_first_name_label")
) )
so_last_name = StringField(translate("forms.task_order.oversight_last_name_label")) so_last_name = StringField(translate("forms.task_order.oversight_last_name_label"))
so_email = StringField(translate("forms.task_order.oversight_email_label")) so_email = StringField(
translate("forms.task_order.oversight_email_label"),
validators=[Optional(), Email()],
)
so_phone_number = TelField( so_phone_number = TelField(
translate("forms.task_order.oversight_phone_label"), translate("forms.task_order.oversight_phone_label"),
validators=[Optional(), PhoneNumber()], validators=[Optional(), PhoneNumber()],

View File

@ -13,7 +13,7 @@
<div class='form-row'> <div class='form-row'>
<div class='form-col form-col--half'> <div class='form-col form-col--half'>
{{ TextInput(email, placeholder='name@mail.mil') }} {{ TextInput(email, placeholder='name@mail.mil', validation='email') }}
</div> </div>
<div class='form-col form-col--half'> <div class='form-col form-col--half'>

View File

@ -122,6 +122,26 @@ def test_task_order_form_shows_errors(client, user_session):
assert "Not a valid decimal" in body assert "Not a valid decimal" in body
def test_task_order_validates_email_address(client, user_session):
to = task_order()
creator = to.creator
user_session(creator)
task_order_data = TaskOrderFactory.dictionary()
oversight_data = slice_data_for_section(task_order_data, "oversight")
oversight_data.update({"ko_email": "not an email"})
response = client.post(
url_for("task_orders.update", screen=3, task_order_id=to.id),
data=oversight_data,
follow_redirects=False,
)
body = response.data.decode()
assert "There were some errors" in body
assert "Invalid email" in body
@pytest.fixture @pytest.fixture
def task_order(): def task_order():
user = UserFactory.create() user = UserFactory.create()