import unittest from app import create_app, db, User from app.models import Project from pdc_config import TestConfig from tests.common_db_feed import feed_projects class DbBaseTestCase(unittest.TestCase): def setUp(self): self.app = create_app(TestConfig) # force db uri to sqlite memory self.app.config.update( SQLALCHEMY_DATABASE_URI='sqlite:///:memory:' ) self.app_context = self.app.app_context() self.app_context.push() db.create_all() feed_projects() def tearDown(self): db.session.remove() db.drop_all() self.app_context.pop() def test_first(self): projects = Project.query.all() self.assertEqual(3, len(projects)) class AuthModelTestCase(DbBaseTestCase): def skip_if_no_sqlitememory(self): if 'memory' not in self.app.config['SQLALCHEMY_DATABASE_URI']: self.skipTest("Needs in memory sqlite") def get_admin(self): return User.query.filter(User.name == 'admin').one() def setUp(self): DbBaseTestCase.setUp(self) self.skip_if_no_sqlitememory() db.create_all() admin = User(email='admin@nowhere.org', name='admin', login='admin', role='admin') db.session.add(admin) db.session.commit() def test_in_memory(self): self.app.logger.info("In memory Sqlite DB for tests") self.assertTrue(True) def test_setrole(self): admin = self.get_admin() admin.set_role("ADMIN") db.session.commit() admin = self.get_admin() self.assertTrue(admin is not None) self.assertTrue(admin.has_role("ADMIN")) self.assertFalse(admin.has_role("SERVICE")) def test_setrole_valueerror(self): admin = self.get_admin() with self.assertRaises(ValueError) as ve: admin.set_role("NOSUCHROLE") def test_setcheckpassword(self): admin = self.get_admin() admin.set_password("hahaha") db.session.commit() admin2 = self.get_admin() self.assertTrue(admin2.check_password("hahaha"))