forked from Github-Mirrors/canaille
112 lines
3.4 KiB
Python
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()
|