aboutsummaryrefslogtreecommitdiff
path: root/tests/cli
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2026-01-09 17:15:36 +0100
committerDaniel Schadt <kingdread@gmx.de>2026-01-09 17:15:36 +0100
commitadab3f162ddc642f5fe4fad39d0eeda543c1d2db (patch)
tree05400ea0b73e69974f24d00f949a627a4a2d7b3e /tests/cli
parent735d8278e95cb1ac1237992bb93ae6187be4923a (diff)
downloadfietsboek-adab3f162ddc642f5fe4fad39d0eeda543c1d2db.tar.gz
fietsboek-adab3f162ddc642f5fe4fad39d0eeda543c1d2db.tar.bz2
fietsboek-adab3f162ddc642f5fe4fad39d0eeda543c1d2db.zip
have a general populate() to fill some data in
Especially with all the "list" commands, we now see that we always have to put some data into the instance. This is cumbersome, especially as we get to the track commands. Therefore, I added a method to put some data into the instance -- that also helps to ensure that we properly cascade things if we delete a user, for example. Currently, this method only adds two users and two tracks, but I plan to also add comments and friendship associations. Further, we can think about re-writing the playwright tests to use this population as well, instead of the playwright_helper one.
Diffstat (limited to 'tests/cli')
-rw-r--r--tests/cli/test_fietsctl.py87
1 files changed, 27 insertions, 60 deletions
diff --git a/tests/cli/test_fietsctl.py b/tests/cli/test_fietsctl.py
index e1994b6..6e19f21 100644
--- a/tests/cli/test_fietsctl.py
+++ b/tests/cli/test_fietsctl.py
@@ -10,6 +10,7 @@ from sqlalchemy.orm import Session
from fietsboek import models
from .conftest import fietsctl_results # pylint: disable=relative-beyond-top-level
+from ..testutils import populate # pylint: disable=relative-beyond-top-level
class CliChecker:
@@ -119,99 +120,65 @@ def test_user_add(fietsctl, dbsession):
assert user.is_verified
-def test_user_list(fietsctl, dbengine):
- with Session(dbengine) as session:
- user = models.User(name="Shauna", email="vayne@lge.com")
- user.set_password("vayne")
- user.roll_session_secret()
- session.add(user)
-
- user = models.User(name="Berri", email="tx@ar.rak", is_admin=True, is_verified=True)
- user.set_password("txarrak")
- user.roll_session_secret()
- session.add(user)
-
- session.commit()
+def test_user_list(fietsctl, dbengine, data_manager):
+ populate(dbengine, data_manager)
res = fietsctl(["user", "list"])
assert res.successful()
- assert res.has_line("vayne@lge\\.com .* Shauna")
- assert res.has_line("av.*tx@ar\\.rak .* Berri")
+ assert res.has_line("av.*jon\\.snow@nw\\.org.*Jon")
+ assert res.has_line("v.*davos@seaworth\\.com.*Davos")
-def test_user_del(fietsctl, dbengine):
- with Session(dbengine) as session:
- user = models.User(name="Shaun", email="murphy@tg.doc", is_verified=True)
- user.set_password("murphy")
- user.roll_session_secret()
- session.add(user)
-
- user = models.User(name="Aaron", email="gl@ss.man", is_verified=True)
- user.set_password("glassman")
- user.roll_session_secret()
- session.add(user)
+def test_user_del(fietsctl, dbengine, data_manager):
+ populate(dbengine, data_manager)
- session.commit()
-
- res = fietsctl(["user", "del", "-f", "--email", "murphy@tg.doc"])
+ res = fietsctl(["user", "del", "-f", "--email", "jon.snow@nw.org"])
assert res.successful()
with dbengine.connect() as conn:
- qry = select(models.User).filter_by(email="gl@ss.man")
+ qry = select(models.User).filter_by(email="davos@seaworth.com")
row = conn.execute(qry).scalar_one_or_none()
assert row
- qry = select(models.User).filter_by(email="murphy@tg.doc")
+ qry = select(models.User).filter_by(email="jon.snow@nw.org")
row = conn.execute(qry).scalar_one_or_none()
assert row is None
- res = fietsctl(["user", "del", "-f", "--email", "gl@ss.man"])
+ res = fietsctl(["user", "del", "-f", "--email", "davos@seaworth.com"])
assert res.successful()
with dbengine.connect() as conn:
- qry = select(models.User).filter_by(email="gl@ss.man")
+ qry = select(models.User).filter_by(email="davos@seaworth.com")
row = conn.execute(qry).scalar_one_or_none()
assert row is None
-def test_user_passwd(fietsctl, dbengine):
- with Session(dbengine) as session:
- user = models.User(name="john", email="dori@n", is_verified=True)
- user.set_password("dorian")
- user.roll_session_secret()
- session.add(user)
- session.commit()
- user_id = user.id
-
- res = fietsctl(["user", "passwd", "--email", "dori@n", "--password", "DORIAN"])
+def test_user_passwd(fietsctl, dbengine, data_manager):
+ ids = populate(dbengine, data_manager)
+
+ res = fietsctl(["user", "passwd", "--email", "jon.snow@nw.org", "--password", "Ghost"])
assert res.successful()
with Session(dbengine) as session:
- user = session.get(models.User, user_id)
- user.check_password("DORIAN")
+ user = session.get(models.User, ids.jon)
+ user.check_password("Ghost")
with pytest.raises(models.user.PasswordMismatch):
- user.check_password("dorian")
+ user.check_password("ygritte")
-def test_user_modify(fietsctl, dbengine):
- with Session(dbengine) as session:
- user = models.User(name="stephen", email="str@n.ge")
- user.set_password("strange")
- user.roll_session_secret()
- session.add(user)
- session.commit()
- user_id = user.id
+def test_user_modify(fietsctl, dbengine, data_manager):
+ ids = populate(dbengine, data_manager)
res = fietsctl([
"user", "modify",
- "--email", "str@n.ge",
+ "--email", "davos@seaworth.com",
"--admin",
- "--verified",
- "--set-email", "not-str@n.ge",
+ "--no-verified",
+ "--set-email", "ser.davos@seaworth.com",
])
assert res.successful()
with Session(dbengine) as session:
- user: models.User = session.get(models.User, user_id)
- assert user.is_verified
+ user: models.User = session.get(models.User, ids.davos)
+ assert not user.is_verified
assert user.is_admin
- assert user.email == "not-str@n.ge"
+ assert user.email == "ser.davos@seaworth.com"