Esempio n. 1
0
async def test_queries(sqlalchemy_user_db):
    user = BaseUserDB(
        id="111",
        email="*****@*****.**",
        hashed_password=get_password_hash("guinevere"),
    )

    # Create
    user_db = await sqlalchemy_user_db.create(user)
    assert user_db.id is not None
    assert user_db.is_active is True
    assert user_db.is_superuser is False
    assert user_db.email == user.email

    # Update
    user_db.is_superuser = True
    await sqlalchemy_user_db.update(user_db)

    # Get by id
    id_user = await sqlalchemy_user_db.get(user.id)
    assert id_user.id == user_db.id
    assert id_user.is_superuser is True

    # Get by email
    email_user = await sqlalchemy_user_db.get_by_email(user.email)
    assert email_user.id == user_db.id

    # List
    users = await sqlalchemy_user_db.list()
    assert len(users) == 1
    first_user = users[0]
    assert first_user.id == user_db.id

    # Exception when inserting existing email
    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="******")
        await sqlalchemy_user_db.create(wrong_user)

    # Unknown user
    unknown_user = await sqlalchemy_user_db.get_by_email("*****@*****.**")
    assert unknown_user is None

    # Delete user
    await sqlalchemy_user_db.delete(user)
    deleted_user = await sqlalchemy_user_db.get(user.id)
    assert deleted_user is None
Esempio n. 2
0
def superuser() -> BaseUserDB:
    return BaseUserDB(
        id="ccc",
        email="*****@*****.**",
        hashed_password=viviane_password_hash,
        is_superuser=True,
    )
Esempio n. 3
0
def inactive_user() -> BaseUserDB:
    return BaseUserDB(
        id="bbb",
        email="*****@*****.**",
        hashed_password=angharad_password_hash,
        is_active=False,
    )
Esempio n. 4
0
async def test_queries(mongodb_user_db):
    user = BaseUserDB(
        id="111",
        email="*****@*****.**",
        hashed_password=get_password_hash("guinevere"),
    )

    # Create
    user_db = await mongodb_user_db.create(user)
    assert user_db.id is not None
    assert user_db.is_active is True
    assert user_db.is_superuser is False
    assert user_db.email == user.email

    # Update
    user_db.is_superuser = True
    await mongodb_user_db.update(user_db)

    # Get by id
    id_user = await mongodb_user_db.get(user.id)
    assert id_user.id == user_db.id
    assert id_user.is_superuser is True

    # Get by email
    email_user = await mongodb_user_db.get_by_email(user.email)
    assert email_user.id == user_db.id

    # List
    users = await mongodb_user_db.list()
    assert len(users) == 1
    first_user = users[0]
    assert first_user.id == user_db.id

    # Exception when inserting existing email
    with pytest.raises(pymongo.errors.DuplicateKeyError):
        await mongodb_user_db.create(user)

    # Unknown user
    unknown_user = await mongodb_user_db.get_by_email("*****@*****.**")
    assert unknown_user is None

    # Delete user
    await mongodb_user_db.delete(user)
    deleted_user = await mongodb_user_db.get(user.id)
    assert deleted_user is None
Esempio n. 5
0
 async def get_by_email(self, email: str) -> Optional[BaseUserDB]:
     user = await self.collection.find_one({"email": email})
     return BaseUserDB(**user) if user else None
Esempio n. 6
0
 async def get(self, id: str) -> Optional[BaseUserDB]:
     user = await self.collection.find_one({"id": id})
     return BaseUserDB(**user) if user else None
Esempio n. 7
0
 async def list(self) -> List[BaseUserDB]:
     return [BaseUserDB(**user) async for user in self.collection.find()]
Esempio n. 8
0
def user() -> BaseUserDB:
    return BaseUserDB(
        id="aaa",
        email="*****@*****.**",
        hashed_password=guinevere_password_hash,
    )