From f3b7fa662a7526345d8eb5d0285d6fe11784c664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Voron?= Date: Fri, 11 Oct 2019 13:08:03 +0200 Subject: [PATCH] Ensure columns in SQL schema are not nullable --- fastapi_users/db/sqlalchemy.py | 8 ++++---- tests/test_db_sqlalchemy.py | 8 ++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/fastapi_users/db/sqlalchemy.py b/fastapi_users/db/sqlalchemy.py index 4d376ef6..c8eabda0 100644 --- a/fastapi_users/db/sqlalchemy.py +++ b/fastapi_users/db/sqlalchemy.py @@ -13,10 +13,10 @@ class SQLAlchemyBaseUserTable: __tablename__ = "user" id = Column(String, primary_key=True) - email = Column(String, unique=True, index=True) - hashed_password = Column(String) - is_active = Column(Boolean, default=True) - is_superuser = Column(Boolean, default=False) + email = Column(String, unique=True, index=True, nullable=False) + hashed_password = Column(String, nullable=False) + is_active = Column(Boolean, default=True, nullable=False) + is_superuser = Column(Boolean, default=False, nullable=False) class SQLAlchemyUserDatabase(BaseUserDatabase): diff --git a/tests/test_db_sqlalchemy.py b/tests/test_db_sqlalchemy.py index 81f1fbbd..d6f36bf7 100644 --- a/tests/test_db_sqlalchemy.py +++ b/tests/test_db_sqlalchemy.py @@ -71,6 +71,14 @@ async def test_queries(sqlalchemy_user_db): with pytest.raises(sqlite3.IntegrityError): await sqlalchemy_user_db.create(user) + # Exception when inserting non-nullable fields + with pytest.raises(sqlite3.IntegrityError): + wrong_user = BaseUserDB( + id="222", + hashed_password="aaa" + ) + await sqlalchemy_user_db.create(wrong_user) + # Unknown user unknown_user = await sqlalchemy_user_db.get_by_email("galahad@camelot.bt") assert unknown_user is None