Working tests, hopefully all code changes done.

This commit is contained in:
Nicholas Staples
2016-01-27 12:22:32 +00:00
parent ce81a6f540
commit 6959d695d3
57 changed files with 1143 additions and 1578 deletions

View File

@@ -1,32 +1,9 @@
from random import randint
from flask import url_for, current_app
from itsdangerous import URLSafeTimedSerializer, SignatureExpired
from app.main.dao import verify_codes_dao
from app import notifications_api_client
def create_verify_code():
return ''.join(["%s" % randint(0, 9) for _ in range(0, 5)])
def send_sms_code(user_id, mobile_number):
sms_code = create_verify_code()
verify_codes_dao.add_code(user_id=user_id, code=sms_code, code_type='sms')
notifications_api_client.send_sms(mobile_number=mobile_number,
message=sms_code)
return sms_code
def send_email_code(user_id, email):
email_code = create_verify_code()
verify_codes_dao.add_code(user_id=user_id, code=email_code, code_type='email')
notifications_api_client.send_email(email_address=email,
from_address='notify@digital.cabinet-office.gov.uk',
message=email_code,
subject='Verification code')
return email_code
def send_change_password_email(email):
link_to_change_password = url_for('.new_password', token=generate_token(email), _external=True)
notifications_api_client.send_email(email_address=email,

View File

@@ -70,6 +70,25 @@ class UserApiClient(BaseAPIClient):
return user[0]
return None
def send_verify_code(self, user_id, code_type):
data = {'code_type': code_type}
endpoint = '/user/{}/code'.format(user_id)
resp = self.post(endpoint, data=data)
def check_verify_code(self, user_id, code, code_type):
data = {'code_type': code_type, 'code': code}
endpoint = '/user/{}/verify/code'.format(user_id)
try:
resp = self.post(endpoint, data=data)
return True, ''
except HTTPError as e:
if e.status_code == 400 or e.status_code == 404:
if 'Code not found' in e.message:
return False, 'Code not found'
elif 'Code has expired' in e.message:
return False, 'Code has expired'
raise e
class User(object):
def __init__(self, fields, max_failed_login_count=3):
@@ -85,14 +104,26 @@ class User(object):
def name(self):
return self.fields.get('name')
@name.setter
def name(self, name):
self.fields['name'] = name
@property
def email_address(self):
return self.fields.get('email_address')
@email_address.setter
def email_address(self, email_address):
self.fields['email_address'] = email_address
@property
def mobile_number(self):
return self.fields.get('mobile_number')
@mobile_number.setter
def mobile_number(self, mobile_number):
self.fields['mobile_number'] = mobile_number
@property
def password_changed_at(self):
return self.fields.get('password_changed_at')
@@ -130,3 +161,6 @@ class User(object):
def serialize(self):
return self.fields
def set_password(self, pwd):
self.fields['password'] = pwd