class ConfirmationTest(TestCase): confirmation_schema = ConfirmationSchema() def test_load_confirmation(self): confirmation_model = self.confirmation_schema.load({"user": "******"}) self.assertIsInstance(confirmation_model, ConfirmationModel)
class TestUser(BaseTest): user_schema = UserSchema() confirmation_schema = ConfirmationSchema() def setUp(self): BaseTest.setUp(self) with self.app_context(): user = self.user_schema.load({ "username": "******", "password": "******", "email": "*****@*****.**", }) user.create_user() conf = ConfirmationModel(user.id) conf.save_to_db() def test_user_confirmation(self): with self.app_context(): user = UserModel.find_by_id(1) user.confirmation.first().confirmed = True self.assertEqual(user.most_recent_confirmation, user.confirmation.first()) user1 = UserModel.find_by_username("testuser") self.assertEqual(user, user1) user2 = UserModel.find_by_id(1) self.assertEqual(user, user2) user3 = UserModel.find_by_email("*****@*****.**") self.assertEqual(user, user3) def test_user_conf_expired(self): with self.app_context(): user = UserModel.find_by_id(1) conf = user.confirmation.first() self.assertIsInstance(conf, ConfirmationModel) self.assertEqual(False, conf.expired) conf.forced_to_expire() time.sleep(0.5) self.assertEqual(True, user.confirmation.first().expired)
from flask import render_template, make_response from flask_restful import Resource import traceback from time import time from models.confirmation import ConfirmationModel from schemas.confirmation import ConfirmationSchema from models.user import UserModel from libs.mailgun import MailGunException from libs.strings import gettext confirmation_schema = ConfirmationSchema() class Confirmation(Resource): # returns the confirmation page @classmethod def get(cls, confirmation_id: str): confirmation = ConfirmationModel.find_by_id(confirmation_id) if not confirmation: return {"message": gettext("confirmation_not_found")}, 404 if confirmation.expired: return {"message": gettext("confirmation_link_expired")}, 400 if confirmation.confirmed: return {"message": gettext("confirmation_already_confirmed")}, 400 confirmation.confirmed = True confirmation.save_to_db()