canaille-globuzma/tests/test_profile_photo.py
2023-03-16 18:45:35 +01:00

112 lines
3.4 KiB
Python

from canaille.models import User
from webtest import Upload
def test_photo(testclient, user, jpeg_photo):
user.jpegPhoto = [jpeg_photo]
user.save()
res = testclient.get("/profile/user/jpegPhoto")
assert res.body == jpeg_photo
def test_photo_invalid_user(testclient, user):
res = testclient.get("/profile/invalid/jpegPhoto", status=404)
def test_photo_absent(testclient, user):
assert not user.jpegPhoto
res = testclient.get("/profile/user/jpegPhoto", status=404)
def test_photo_invalid_path(testclient, user):
testclient.get("/profile/user/invalid", status=404)
def test_photo_on_profile_edition(
testclient,
slapd_server,
logged_user,
jpeg_photo,
):
# Add a photo
res = testclient.get("/profile/user", status=200)
res.form["jpegPhoto"] = Upload("logo.jpg", jpeg_photo)
res.form["jpegPhoto_delete"] = False
res = res.form.submit(name="action", value="edit")
assert ("success", "Profile updated successfuly.") in res.flashes
res = res.follow()
logged_user = User.get(id=logged_user.id)
assert [jpeg_photo] == logged_user.jpegPhoto
# No change
res = testclient.get("/profile/user", status=200)
res.form["jpegPhoto_delete"] = False
res = res.form.submit(name="action", value="edit")
assert ("success", "Profile updated successfuly.") in res.flashes
res = res.follow()
logged_user = User.get(id=logged_user.id)
assert [jpeg_photo] == logged_user.jpegPhoto
# Photo deletion
res = testclient.get("/profile/user", status=200)
res.form["jpegPhoto_delete"] = True
res = res.form.submit(name="action", value="edit")
assert ("success", "Profile updated successfuly.") in res.flashes
res = res.follow()
logged_user = User.get(id=logged_user.id)
assert [] == logged_user.jpegPhoto
# Photo deletion AND upload, this should never happen
res = testclient.get("/profile/user", status=200)
res.form["jpegPhoto"] = Upload("logo.jpg", jpeg_photo)
res.form["jpegPhoto_delete"] = True
res = res.form.submit(name="action", value="edit")
assert ("success", "Profile updated successfuly.") in res.flashes
res = res.follow()
logged_user = User.get(id=logged_user.id)
assert [] == logged_user.jpegPhoto
def test_photo_on_profile_creation(testclient, slapd_server, jpeg_photo, logged_admin):
res = testclient.get("/users", status=200)
assert User.get("foobar") is None
res.mustcontain(no="foobar")
res = testclient.get("/profile", status=200)
res.form["jpegPhoto"] = Upload("logo.jpg", jpeg_photo)
res.form["uid"] = "foobar"
res.form["sn"] = "Abitbol"
res.form["mail"] = "george@abitbol.com"
res = res.form.submit(name="action", value="edit", status=302).follow(status=200)
user = User.get("foobar")
assert user.jpegPhoto == [jpeg_photo]
user.delete()
def test_photo_deleted_on_profile_creation(
testclient, slapd_server, jpeg_photo, logged_admin
):
res = testclient.get("/users", status=200)
assert User.get("foobar") is None
res.mustcontain(no="foobar")
res = testclient.get("/profile", status=200)
res.form["jpegPhoto"] = Upload("logo.jpg", jpeg_photo)
res.form["jpegPhoto_delete"] = True
res.form["uid"] = "foobar"
res.form["sn"] = "Abitbol"
res.form["mail"] = "george@abitbol.com"
res = res.form.submit(name="action", value="edit", status=302).follow(status=200)
user = User.get("foobar")
assert user.jpegPhoto == []
user.delete()