def test_verify_email_invalid_email(): session_dict = { 'email_attestation': { 'email': generate_password_hash('*****@*****.**'), 'code': '12345', 'expiry': datetime.datetime.utcnow() + datetime.timedelta(minutes=30) } } args = { 'eth_address': str_eth(sample_eth_address), 'email': '*****@*****.**', 'code': '54321' } with mock.patch('logic.attestation_service.session', session_dict): with pytest.raises(EmailVerificationError) as verification_err: VerificationService.verify_email(**args) assert(verification_err.value.message) == \ 'No verification code was found for that email.' # Verify attestation not stored attestations = Attestation.query.all() assert(len(attestations)) == 0
def test_verify_email_invalid_code(mock_session): session_dict = { 'email_attestation': { 'email': generate_password_hash('*****@*****.**'), 'code': '12345', 'expiry': datetime.datetime.utcnow() + datetime.timedelta(minutes=30) } } args = { 'eth_address': str_eth(sample_eth_address), 'email': '*****@*****.**', 'code': '54321' } with mock.patch('logic.attestation_service.session', session_dict): with pytest.raises(ValidationError) as validation_err: VerificationService.verify_email(**args) assert(validation_err.value.messages[0] ) == 'Verification code is incorrect.' assert(validation_err.value.field_names[0]) == 'code' # Verify attestation not stored attestations = Attestation.query.all() assert(len(attestations)) == 0
def test_verify_email_email_not_found(mock_now, session): vc_obj = VerificationCodeFactory.build() session.add(vc_obj) session.commit() args = { 'eth_address': str_eth(sample_eth_address), 'email': 'garbage', 'code': vc_obj.code } mock_now.return_value = vc_obj.expires_at - datetime.timedelta(minutes=1) with pytest.raises(EmailVerificationError) as service_err: VerificationService.verify_email(**args) assert str(service_err.value) == 'The given email was not found.'
def test_verify_email_wrong_code(mock_now, session): vc_obj = VerificationCodeFactory.build() session.add(vc_obj) session.commit() req = { 'eth_address': str_eth(sample_eth_address), 'email': vc_obj.email, 'code': 'garbage' } mock_now.return_value = vc_obj.expires_at - datetime.timedelta(minutes=1) with pytest.raises(EmailVerificationError) as service_err: VerificationService.verify_email(**req) assert str(service_err.value) == 'The code you provided is invalid.'
def test_verify_email_valid_code(mock_session): session_dict = { 'email_attestation': { 'email': generate_password_hash('*****@*****.**'), 'code': '12345', 'expiry': datetime.datetime.utcnow() + datetime.timedelta(minutes=30) } } args = { 'eth_address': str_eth(sample_eth_address), 'email': '*****@*****.**', 'code': '12345' } with mock.patch('logic.attestation_service.session', session_dict): response = VerificationService.verify_email(**args) assert isinstance(response, VerificationServiceResponse) assert len(response.data['signature']) == SIGNATURE_LENGTH assert response.data['claim_type'] == CLAIM_TYPES['email'] assert response.data['data'] == 'email verified' # Verify attestation stored in database attestations = Attestation.query.all() assert(len(attestations)) == 1 assert(attestations[0].method) == AttestationTypes.EMAIL assert(attestations[0].value) == "*****@*****.**"
def test_verify_email_no_verification_sent(): args = { 'eth_address': str_eth(sample_eth_address), 'email': '*****@*****.**', 'code': '54321' } with mock.patch('logic.attestation_service.session', dict()): with pytest.raises(EmailVerificationError) as verification_err: VerificationService.verify_email(**args) assert(verification_err.value.message) == \ 'No verification code was found.' # Verify attestation not stored attestations = Attestation.query.all() assert(len(attestations)) == 0
def test_verify_email_valid_code(mock_now, session): vc_obj = VerificationCodeFactory.build() session.add(vc_obj) session.commit() req = { 'eth_address': str_eth(sample_eth_address), 'email': vc_obj.email.upper(), 'code': vc_obj.code } mock_now.return_value = vc_obj.expires_at - datetime.timedelta(minutes=1) resp = VerificationService.verify_email(**req) resp_data = resp.data assert len(resp_data['signature']) == SIGNATURE_LENGTH assert resp_data['claim_type'] == CLAIM_TYPES['email'] assert resp_data['data'] == 'email verified'
def test_verify_email_valid_code(mock_session, app): session_dict = { 'email_attestation': { 'email': generate_password_hash('*****@*****.**'), 'code': '12345', 'expiry': datetime.datetime.utcnow() + datetime.timedelta(minutes=30) } } args = { 'eth_address': str_eth(sample_eth_address), 'email': '*****@*****.**', 'code': '12345' } with mock.patch('logic.attestation_service.session', session_dict): with app.test_request_context(): response = VerificationService.verify_email(**args) assert isinstance(response, VerificationServiceResponse) assert response.data['signature']['version'] == '1.0.0' assert len(response.data['signature']['bytes']) == SIGNATURE_LENGTH assert response.data[ 'schemaId'] == 'https://schema.originprotocol.com/attestation_1.0.0.json' validate_issuer(response.data['data']['issuer']) assert response.data['data']['issueDate'] assert response.data['data']['attestation']['verificationMethod']['email'] assert response.data['data']['attestation']['email']['verified'] # Verify attestation stored in database attestations = Attestation.query.all() assert (len(attestations)) == 1 assert (attestations[0].method) == AttestationTypes.EMAIL assert (attestations[0].value) == "*****@*****.**"