def verify_email(request): try: code = request.params['code'] except KeyError: return HTTPBadRequest('Missing code parameter') try: email = request.params['email'] except KeyError: return HTTPBadRequest('Missing email parameter') evc = EmailVerificationCode(code) if evc.verify(request.db, email): request.session.flash( _('Congratulations, your email has been successfully verified'), 'success', ) evc.remove(request.db, email, True) return { 'verified': True, } else: request.session.flash( _('Sorry, your verification code is not correct or has expired'), 'error', ) return { 'verified': False, }
def test_email_verification_code(self): evc = EmailVerificationCode() self.assertNotEqual(evc.code, None) user_id = self.db.users.insert({ 'first_name': 'John', 'last_name': 'Doe', 'email': '*****@*****.**', }, safe=True) user = self.db.users.find_one({'_id': user_id}) evc.store(self.db, user) user = self.db.users.find_one({'_id': user_id}) self.assertEqual(user['email_verification_code'], evc.code) evc2 = EmailVerificationCode(evc.code) result = evc2.verify(self.db, '*****@*****.**') self.assertTrue(result) evc2.remove(self.db, '*****@*****.**', True) user = self.db.users.find_one({'_id': user_id}) self.assertFalse('email_verification_code' in user) self.assertTrue(user['email_verified']) request = DummyRequest() mailer = get_mailer(request) self.assertEqual(len(mailer.outbox), 0) evc2.send(request, user, 'http://example.com/verify') self.assertEqual(len(mailer.outbox), 1) self.assertEqual(mailer.outbox[0].subject, 'Please verify your email address') self.assertEqual(mailer.outbox[0].recipients, ['*****@*****.**'])