class TestKeyCode(TestCase): def setUp(self): self.configuration = { "sqlalchemy.url": "sqlite://", "sqlalchemy.echo": False, "sqlalchemy.pool_recycle": 3600, } from rpi_database.models import SQLAlchemyMixin, KeyCode self.sqlmixin = SQLAlchemyMixin(**self.configuration) self.sqlmixin.init_db() # use defaults for the first user save for the code self.key_data = { 'code': '67890', 'enabled': False, } self.key = KeyCode(**self.key_data) with self.sqlmixin.session_context() as session: session.add(self.key) session.commit() def test_enabled(self): self.assertIsNotNone(self.key.code) self.assertEquals(self.key.enabled, self.key_data['enabled']) self.assertIsInstance(self.key.enabled, bool) def test_code(self): self.assertIsNotNone(self.key.code) self.assertEquals(self.key.code, self.key_data['code']) def test_code_unique(self): from rpi_database.models import KeyCode from sqlalchemy.exc import IntegrityError key = KeyCode(**self.key_data) with self.sqlmixin.session_context() as session: session.add(key) with ShouldRaise(IntegrityError): session.commit() def tearDown(self): if self.sqlmixin: self.sqlmixin.drop_db()
class TestUser(TestCase): def setUp(self): self.configuration = { "sqlalchemy.url": "sqlite://", "sqlalchemy.echo": False, "sqlalchemy.pool_recycle": 3600, } from rpi_database.models import SQLAlchemyMixin, User, KeyCode self.sqlmixin = SQLAlchemyMixin(**self.configuration) self.sqlmixin.init_db() # use defaults for the first user save for the code self.user_data = { 'first_name': "Derp", 'last_name': "Derps", 'email': "*****@*****.**", } self.key_data = { 'code': '67890', 'enabled': False, } self.key = KeyCode(**self.key_data) self.user = User(**self.user_data) self.user.key_code = self.key with self.sqlmixin.session_context() as session: session.add(self.user) session.commit() def test_first_name(self): self.assertIsNotNone(self.user.first_name) self.assertEquals(self.user.first_name, self.user_data['first_name']) def test_last_name(self): self.assertIsNotNone(self.user.last_name) self.assertEquals(self.user.last_name, self.user_data['last_name']) def test_email(self): self.assertIsNotNone(self.user.email) self.assertEquals(self.user.email, self.user_data['email']) def test_unique_email(self): from rpi_database.models import User from sqlalchemy.exc import IntegrityError user = User(**self.user_data) with self.sqlmixin.session_context() as session: session.add(user) with ShouldRaise(IntegrityError): session.commit() def test_key_code(self): self.assertIsNotNone(self.user.key_code) self.assertEquals(self.user.key_code_id, 1) def tearDown(self): if self.sqlmixin: self.sqlmixin.drop_db()