def test_generate_phone_verification_code_twilio_exception( mock_send_sms_exception, session, mock_normalize_number): phone = '5551231212' with pytest.raises(PhoneVerificationError) as service_err: VerificationService.generate_phone_verification_code(phone) assert str(service_err.value) == 'Could not send verification code.' db_code = VC.query.filter(VC.phone == phone).first() assert db_code is None
def test_generate_phone_verification_rate_limit_exceeded( session, mock_normalize_number): vc_obj = VerificationCodeFactory.build() vc_obj.updated_at = utcnow() + datetime.timedelta(seconds=9) session.add(vc_obj) session.commit() phone = vc_obj.phone with pytest.raises(PhoneVerificationError) as service_err: VerificationService.generate_phone_verification_code(phone) assert str(service_err.value) == ('Please wait briefly before requesting a' ' new verification code.')
def test_generate_phone_verification_code_new_phone(mock_send_sms, mock_normalize_number): phone = '5551231212' resp = VerificationService.generate_phone_verification_code(phone) assert isinstance(resp, VerificationServiceResponse) db_code = VC.query.filter(VC.phone == phone).first() assert db_code is not None assert db_code.code is not None assert len(db_code.code) == 6 assert db_code.expires_at is not None assert db_code.created_at is not None assert db_code.updated_at is not None
def test_generate_phone_verification_code_phone_already_in_db( mock_send_sms, session, mock_normalize_number): vc_obj = VerificationCodeFactory.build() expires_at = vc_obj.expires_at vc_obj.created_at = utcnow() - datetime.timedelta(seconds=10) vc_obj.updated_at = utcnow() - datetime.timedelta(seconds=10) session.add(vc_obj) session.commit() phone = vc_obj.phone resp = VerificationService.generate_phone_verification_code(phone) assert isinstance(resp, VerificationServiceResponse) assert VC.query.filter(VC.phone == phone).count() == 1 db_code = VC.query.filter(VC.phone == phone).first() assert db_code is not None assert db_code.code is not None assert len(db_code.code) == 6 assert db_code.expires_at is not None assert db_code.created_at is not None assert db_code.updated_at is not None assert db_code.updated_at >= db_code.created_at assert db_code.expires_at > expires_at