Add basic and user model testing.

This commit is contained in:
Stephan Porada 2019-07-08 10:52:36 +02:00
parent 8e86e0a0e9
commit adec45989c
5 changed files with 59 additions and 2 deletions

View File

@ -18,7 +18,11 @@ class DevelopmentConfig(Config):
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data_dev.sqlite')
# class TestingConfig(Config):
class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
'sqlite://'
WTF_CSRF_ENABLED = False
# class ProductionConfig(Config):
@ -26,7 +30,7 @@ class DevelopmentConfig(Config):
config = {
'development': DevelopmentConfig,
# 'testing': TestingConfig,
'testing': TestingConfig,
# 'production': ProductionConfig,
'default': DevelopmentConfig

View File

@ -11,3 +11,11 @@ migrate = Migrate(app, db)
@app.shell_context_processor
def make_shell_context():
return dict(db=db, User=User, Role=Role)
@app.cli.command()
def test():
"""Run the unit tests."""
import unittest
tests = unittest.TestLoader().discover('tests')
unittest.TextTestRunner(verbosity=2).run(tests)

0
tests/__init__.py Normal file
View File

22
tests/test_basics.py Normal file
View File

@ -0,0 +1,22 @@
import unittest
from flask import current_app
from app import create_app, db
class BasicsTestCase(unittest.TestCase):
def setUp(self):
self.app = create_app('testing')
self.app_context = self.app.app_context()
self.app_context.push()
db.create_all()
def tearDown(self):
db.session.remove()
db.drop_all()
self.app_context.pop()
def test_app_exists(self):
self.assertFalse(current_app is None)
def test_app_is_testing(self):
self.assertTrue(current_app.config['TESTING'])

23
tests/test_user_model.py Normal file
View File

@ -0,0 +1,23 @@
import unittest
from app.models import User
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)