109526520: Changed the code form fields to StringField

When the codes were IntegerFields and the code started with zero, the zero was trimmed, resulting in a failed match.
This commit is contained in:
Rebecca Law
2015-12-08 15:30:55 +00:00
parent bef2258803
commit 9923c14e73
3 changed files with 35 additions and 8 deletions

View File

@@ -41,10 +41,12 @@ class RegisterUserForm(Form):
class VerifyForm(Form):
sms_code = IntegerField("Text message confirmation code",
validators=[DataRequired(message='SMS code can not be empty')])
email_code = IntegerField("Email confirmation code",
validators=[DataRequired(message='Email code can not be empty')])
sms_code = StringField("Text message confirmation code",
validators=[DataRequired(message='SMS code can not be empty'),
Length(min=5, max=5, message='Code must be 5 digits')])
email_code = StringField("Email confirmation code",
validators=[DataRequired(message='Email code can not be empty'),
Length(min=5, max=5, message='Code must be 5 digits')])
def validate_email_code(self, a):
if self.email_code.data is not None:

View File

@@ -1,13 +1,10 @@
from datetime import datetime
from flask import render_template, redirect, jsonify
from flask_login import login_user
from app.main import main
from app.main.forms import LoginForm
from app.main.dao import users_dao
from app.models import User
from app.main.encryption import checkpw
from app.main.forms import LoginForm
@main.route("/sign-in", methods=(['GET']))

View File

@@ -97,6 +97,34 @@ def test_should_return_400_when_email_code_is_missing(notifications_admin, notif
assert 'Email code can not be empty' in response.get_data(as_text=True)
def test_should_return_400_when_email_code_has_letter(notifications_admin, notifications_admin_db):
with notifications_admin.test_client() as client:
with client.session_transaction() as session:
user = _create_test_user()
session['user_id'] = user.id
session['sms_code'] = hashpw('23456')
session['email_code'] = hashpw('23456')
response = client.post('/verify',
data={'sms_code': '23456',
'email_code': 'abcde'})
assert response.status_code == 400
assert 'Code does not match' in response.get_data(as_text=True)
def test_should_return_302_when_email_code_starts_with_zero(notifications_admin, notifications_admin_db):
with notifications_admin.test_client() as client:
with client.session_transaction() as session:
user = _create_test_user()
session['user_id'] = user.id
session['sms_code'] = hashpw('23456')
session['email_code'] = hashpw('09765')
response = client.post('/verify',
data={'sms_code': '23456',
'email_code': '09765'})
assert response.status_code == 302
assert response.location == 'http://localhost/add-service'
def _create_test_user():
user = User(name='Test User',
password='somepassword',