2019-07-08 08:52:36 +00:00
|
|
|
import unittest
|
2019-07-08 14:09:00 +00:00
|
|
|
import time
|
2019-07-08 08:52:36 +00:00
|
|
|
from app.models import User
|
2019-07-08 14:09:00 +00:00
|
|
|
from app import db
|
2019-07-08 08:52:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
class UserModelTestCase(unittest.TestCase):
|
|
|
|
def test_password_setter(self):
|
|
|
|
u = User(password='cat')
|
|
|
|
self.assertTrue(u.password_hash is not None)
|
|
|
|
|
|
|
|
def test_no_password_getter(self):
|
|
|
|
u = User(password='cat')
|
|
|
|
with self.assertRaises(AttributeError):
|
|
|
|
u.password
|
|
|
|
|
|
|
|
def test_password_verification(self):
|
|
|
|
u = User(password='cat')
|
|
|
|
self.assertTrue(u.verify_password('cat'))
|
|
|
|
self.assertFalse(u.verify_password('dog'))
|
|
|
|
|
|
|
|
def test_password_salts_are_random(self):
|
|
|
|
u = User(password='cat')
|
|
|
|
u2 = User(password='cat')
|
|
|
|
self.assertTrue(u.password_hash != u2.password_hash)
|
2019-07-08 14:09:00 +00:00
|
|
|
|
|
|
|
def test_valid_confirmation_token(self):
|
|
|
|
u = User(password='cat')
|
|
|
|
db.session.add(u)
|
|
|
|
db.session.commit()
|
|
|
|
token = u.generate_confirmation_token()
|
|
|
|
self.assertTrue(u.confirm(token))
|
|
|
|
|
|
|
|
def test_invalid_confirmation_token(self):
|
|
|
|
u1 = User(password='cat')
|
|
|
|
u2 = User(password='dog')
|
|
|
|
db.session.add(u1)
|
|
|
|
db.session.add(u2)
|
|
|
|
db.session.commit()
|
|
|
|
token = u1.generate_confirmation_token()
|
|
|
|
self.assertFalse(u2.confirm(token))
|
|
|
|
|
|
|
|
def test_expired_confirmation_token(self):
|
|
|
|
u = User(password='cat')
|
|
|
|
db.session.add(u)
|
|
|
|
db.session.commit()
|
|
|
|
token = u.generate_confirmation_token(1)
|
|
|
|
time.sleep(2)
|
|
|
|
self.assertFalse(u.confirm(token))
|