Exemple #1
0
class ConfirmationTest(TestCase):

    confirmation_schema = ConfirmationSchema()

    def test_load_confirmation(self):
        confirmation_model = self.confirmation_schema.load({"user": "******"})

        self.assertIsInstance(confirmation_model, ConfirmationModel)
Exemple #2
0
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()