mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
tests: fix spy on m18n.n which in some cases doesnt work anymore ... not sure why, bit confused ...
This commit is contained in:
parent
482f8f3443
commit
031c641b77
7 changed files with 133 additions and 128 deletions
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
|
from unittest.mock import Mock
|
||||||
|
|
||||||
import moulinette
|
import moulinette
|
||||||
from moulinette import m18n, Moulinette
|
from moulinette import m18n, Moulinette
|
||||||
|
@ -23,11 +24,15 @@ def get_test_apps_dir():
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def message(mocker, key, **kwargs):
|
def message(key, **kwargs):
|
||||||
mocker.spy(m18n, "n")
|
m = Mock(wraps=m18n.n)
|
||||||
|
old_m18n = m18n.n
|
||||||
|
m18n.n = m
|
||||||
yield
|
yield
|
||||||
m18n.n.assert_any_call(key, **kwargs)
|
try:
|
||||||
|
m.assert_any_call(key, **kwargs)
|
||||||
|
finally:
|
||||||
|
m18n.n = old_m18n
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def raiseYunohostError(mocker, key, **kwargs):
|
def raiseYunohostError(mocker, key, **kwargs):
|
||||||
|
|
|
@ -392,9 +392,9 @@ def test_legacy_app_install_private(secondary_domain):
|
||||||
assert app_is_not_installed(secondary_domain, "legacy_app")
|
assert app_is_not_installed(secondary_domain, "legacy_app")
|
||||||
|
|
||||||
|
|
||||||
def test_legacy_app_install_unknown_domain(mocker):
|
def test_legacy_app_install_unknown_domain():
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_argument_invalid"):
|
with message("app_argument_invalid"):
|
||||||
install_legacy_app("whatever.nope", "/legacy")
|
install_legacy_app("whatever.nope", "/legacy")
|
||||||
|
|
||||||
assert app_is_not_installed("whatever.nope", "legacy_app")
|
assert app_is_not_installed("whatever.nope", "legacy_app")
|
||||||
|
@ -421,12 +421,12 @@ def test_legacy_app_install_multiple_instances(secondary_domain):
|
||||||
assert app_is_not_installed(secondary_domain, "legacy_app__2")
|
assert app_is_not_installed(secondary_domain, "legacy_app__2")
|
||||||
|
|
||||||
|
|
||||||
def test_legacy_app_install_path_unavailable(mocker, secondary_domain):
|
def test_legacy_app_install_path_unavailable(secondary_domain):
|
||||||
# These will be removed in teardown
|
# These will be removed in teardown
|
||||||
install_legacy_app(secondary_domain, "/legacy")
|
install_legacy_app(secondary_domain, "/legacy")
|
||||||
|
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_location_unavailable"):
|
with message("app_location_unavailable"):
|
||||||
install_legacy_app(secondary_domain, "/")
|
install_legacy_app(secondary_domain, "/")
|
||||||
|
|
||||||
assert app_is_installed(secondary_domain, "legacy_app")
|
assert app_is_installed(secondary_domain, "legacy_app")
|
||||||
|
@ -442,19 +442,19 @@ def test_legacy_app_install_with_nginx_down(mocker, secondary_domain):
|
||||||
install_legacy_app(secondary_domain, "/legacy")
|
install_legacy_app(secondary_domain, "/legacy")
|
||||||
|
|
||||||
|
|
||||||
def test_legacy_app_failed_install(mocker, secondary_domain):
|
def test_legacy_app_failed_install(secondary_domain):
|
||||||
# This will conflict with the folder that the app
|
# This will conflict with the folder that the app
|
||||||
# attempts to create, making the install fail
|
# attempts to create, making the install fail
|
||||||
mkdir("/var/www/legacy_app/", 0o750)
|
mkdir("/var/www/legacy_app/", 0o750)
|
||||||
|
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_install_script_failed"):
|
with message("app_install_script_failed"):
|
||||||
install_legacy_app(secondary_domain, "/legacy")
|
install_legacy_app(secondary_domain, "/legacy")
|
||||||
|
|
||||||
assert app_is_not_installed(secondary_domain, "legacy_app")
|
assert app_is_not_installed(secondary_domain, "legacy_app")
|
||||||
|
|
||||||
|
|
||||||
def test_legacy_app_failed_remove(mocker, secondary_domain):
|
def test_legacy_app_failed_remove(secondary_domain):
|
||||||
install_legacy_app(secondary_domain, "/legacy")
|
install_legacy_app(secondary_domain, "/legacy")
|
||||||
|
|
||||||
# The remove script runs with set -eu and attempt to remove this
|
# The remove script runs with set -eu and attempt to remove this
|
||||||
|
@ -486,52 +486,52 @@ def test_full_domain_app_with_conflicts(mocker, secondary_domain):
|
||||||
install_full_domain_app(secondary_domain)
|
install_full_domain_app(secondary_domain)
|
||||||
|
|
||||||
|
|
||||||
def test_systemfuckedup_during_app_install(mocker, secondary_domain):
|
def test_systemfuckedup_during_app_install(secondary_domain):
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_install_failed"):
|
with message("app_install_failed"):
|
||||||
with message(mocker, "app_action_broke_system"):
|
with message("app_action_broke_system"):
|
||||||
install_break_yo_system(secondary_domain, breakwhat="install")
|
install_break_yo_system(secondary_domain, breakwhat="install")
|
||||||
|
|
||||||
assert app_is_not_installed(secondary_domain, "break_yo_system")
|
assert app_is_not_installed(secondary_domain, "break_yo_system")
|
||||||
|
|
||||||
|
|
||||||
def test_systemfuckedup_during_app_remove(mocker, secondary_domain):
|
def test_systemfuckedup_during_app_remove(secondary_domain):
|
||||||
install_break_yo_system(secondary_domain, breakwhat="remove")
|
install_break_yo_system(secondary_domain, breakwhat="remove")
|
||||||
|
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_action_broke_system"):
|
with message("app_action_broke_system"):
|
||||||
with message(mocker, "app_removed"):
|
with message("app_removed"):
|
||||||
app_remove("break_yo_system")
|
app_remove("break_yo_system")
|
||||||
|
|
||||||
assert app_is_not_installed(secondary_domain, "break_yo_system")
|
assert app_is_not_installed(secondary_domain, "break_yo_system")
|
||||||
|
|
||||||
|
|
||||||
def test_systemfuckedup_during_app_install_and_remove(mocker, secondary_domain):
|
def test_systemfuckedup_during_app_install_and_remove(secondary_domain):
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_install_failed"):
|
with message("app_install_failed"):
|
||||||
with message(mocker, "app_action_broke_system"):
|
with message("app_action_broke_system"):
|
||||||
install_break_yo_system(secondary_domain, breakwhat="everything")
|
install_break_yo_system(secondary_domain, breakwhat="everything")
|
||||||
|
|
||||||
assert app_is_not_installed(secondary_domain, "break_yo_system")
|
assert app_is_not_installed(secondary_domain, "break_yo_system")
|
||||||
|
|
||||||
|
|
||||||
def test_systemfuckedup_during_app_upgrade(mocker, secondary_domain):
|
def test_systemfuckedup_during_app_upgrade(secondary_domain):
|
||||||
install_break_yo_system(secondary_domain, breakwhat="upgrade")
|
install_break_yo_system(secondary_domain, breakwhat="upgrade")
|
||||||
|
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_action_broke_system"):
|
with message("app_action_broke_system"):
|
||||||
app_upgrade(
|
app_upgrade(
|
||||||
"break_yo_system",
|
"break_yo_system",
|
||||||
file=os.path.join(get_test_apps_dir(), "break_yo_system_ynh"),
|
file=os.path.join(get_test_apps_dir(), "break_yo_system_ynh"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_failed_multiple_app_upgrade(mocker, secondary_domain):
|
def test_failed_multiple_app_upgrade(secondary_domain):
|
||||||
install_legacy_app(secondary_domain, "/legacy")
|
install_legacy_app(secondary_domain, "/legacy")
|
||||||
install_break_yo_system(secondary_domain, breakwhat="upgrade")
|
install_break_yo_system(secondary_domain, breakwhat="upgrade")
|
||||||
|
|
||||||
with pytest.raises(YunohostError):
|
with pytest.raises(YunohostError):
|
||||||
with message(mocker, "app_not_upgraded"):
|
with message("app_not_upgraded"):
|
||||||
app_upgrade(
|
app_upgrade(
|
||||||
["break_yo_system", "legacy_app"],
|
["break_yo_system", "legacy_app"],
|
||||||
file={
|
file={
|
||||||
|
|
|
@ -236,10 +236,10 @@ def add_archive_system_from_4p2():
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
def test_backup_only_ldap(mocker):
|
def test_backup_only_ldap():
|
||||||
# Create the backup
|
# Create the backup
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(name=name, system=["conf_ldap"], apps=None)
|
backup_create(name=name, system=["conf_ldap"], apps=None)
|
||||||
|
|
||||||
archives = backup_list()["archives"]
|
archives = backup_list()["archives"]
|
||||||
|
@ -253,7 +253,7 @@ def test_backup_only_ldap(mocker):
|
||||||
|
|
||||||
def test_backup_system_part_that_does_not_exists(mocker):
|
def test_backup_system_part_that_does_not_exists(mocker):
|
||||||
# Create the backup
|
# Create the backup
|
||||||
with message(mocker, "backup_hook_unknown", hook="doesnt_exist"):
|
with message("backup_hook_unknown", hook="doesnt_exist"):
|
||||||
with raiseYunohostError(mocker, "backup_nothings_done"):
|
with raiseYunohostError(mocker, "backup_nothings_done"):
|
||||||
backup_create(system=["doesnt_exist"], apps=None)
|
backup_create(system=["doesnt_exist"], apps=None)
|
||||||
|
|
||||||
|
@ -263,10 +263,10 @@ def test_backup_system_part_that_does_not_exists(mocker):
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
def test_backup_and_restore_all_sys(mocker):
|
def test_backup_and_restore_all_sys():
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
# Create the backup
|
# Create the backup
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(name=name, system=[], apps=None)
|
backup_create(name=name, system=[], apps=None)
|
||||||
|
|
||||||
archives = backup_list()["archives"]
|
archives = backup_list()["archives"]
|
||||||
|
@ -284,7 +284,7 @@ def test_backup_and_restore_all_sys(mocker):
|
||||||
assert not os.path.exists("/etc/ssowat/conf.json")
|
assert not os.path.exists("/etc/ssowat/conf.json")
|
||||||
|
|
||||||
# Restore the backup
|
# Restore the backup
|
||||||
with message(mocker, "restore_complete"):
|
with message("restore_complete"):
|
||||||
backup_restore(name=archives[0], force=True, system=[], apps=None)
|
backup_restore(name=archives[0], force=True, system=[], apps=None)
|
||||||
|
|
||||||
# Check ssowat conf is back
|
# Check ssowat conf is back
|
||||||
|
@ -297,17 +297,17 @@ def test_backup_and_restore_all_sys(mocker):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.with_system_archive_from_4p2
|
@pytest.mark.with_system_archive_from_4p2
|
||||||
def test_restore_system_from_Ynh4p2(monkeypatch, mocker):
|
def test_restore_system_from_Ynh4p2(monkeypatch):
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
# Backup current system
|
# Backup current system
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(name=name, system=[], apps=None)
|
backup_create(name=name, system=[], apps=None)
|
||||||
archives = backup_list()["archives"]
|
archives = backup_list()["archives"]
|
||||||
assert len(archives) == 2
|
assert len(archives) == 2
|
||||||
|
|
||||||
# Restore system archive from 3.8
|
# Restore system archive from 3.8
|
||||||
try:
|
try:
|
||||||
with message(mocker, "restore_complete"):
|
with message("restore_complete"):
|
||||||
backup_restore(
|
backup_restore(
|
||||||
name=backup_list()["archives"][1], system=[], apps=None, force=True
|
name=backup_list()["archives"][1], system=[], apps=None, force=True
|
||||||
)
|
)
|
||||||
|
@ -336,7 +336,7 @@ def test_backup_script_failure_handling(monkeypatch, mocker):
|
||||||
# with the expected error message key
|
# with the expected error message key
|
||||||
monkeypatch.setattr("yunohost.backup.hook_exec", custom_hook_exec)
|
monkeypatch.setattr("yunohost.backup.hook_exec", custom_hook_exec)
|
||||||
|
|
||||||
with message(mocker, "backup_app_failed", app="backup_recommended_app"):
|
with message("backup_app_failed", app="backup_recommended_app"):
|
||||||
with raiseYunohostError(mocker, "backup_nothings_done"):
|
with raiseYunohostError(mocker, "backup_nothings_done"):
|
||||||
backup_create(system=None, apps=["backup_recommended_app"])
|
backup_create(system=None, apps=["backup_recommended_app"])
|
||||||
|
|
||||||
|
@ -363,7 +363,7 @@ def test_backup_not_enough_free_space(monkeypatch, mocker):
|
||||||
def test_backup_app_not_installed(mocker):
|
def test_backup_app_not_installed(mocker):
|
||||||
assert not _is_installed("wordpress")
|
assert not _is_installed("wordpress")
|
||||||
|
|
||||||
with message(mocker, "unbackup_app", app="wordpress"):
|
with message("unbackup_app", app="wordpress"):
|
||||||
with raiseYunohostError(mocker, "backup_nothings_done"):
|
with raiseYunohostError(mocker, "backup_nothings_done"):
|
||||||
backup_create(system=None, apps=["wordpress"])
|
backup_create(system=None, apps=["wordpress"])
|
||||||
|
|
||||||
|
@ -375,14 +375,14 @@ def test_backup_app_with_no_backup_script(mocker):
|
||||||
assert not os.path.exists(backup_script)
|
assert not os.path.exists(backup_script)
|
||||||
|
|
||||||
with message(
|
with message(
|
||||||
mocker, "backup_with_no_backup_script_for_app", app="backup_recommended_app"
|
"backup_with_no_backup_script_for_app", app="backup_recommended_app"
|
||||||
):
|
):
|
||||||
with raiseYunohostError(mocker, "backup_nothings_done"):
|
with raiseYunohostError(mocker, "backup_nothings_done"):
|
||||||
backup_create(system=None, apps=["backup_recommended_app"])
|
backup_create(system=None, apps=["backup_recommended_app"])
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.with_backup_recommended_app_installed
|
@pytest.mark.with_backup_recommended_app_installed
|
||||||
def test_backup_app_with_no_restore_script(mocker):
|
def test_backup_app_with_no_restore_script():
|
||||||
restore_script = "/etc/yunohost/apps/backup_recommended_app/scripts/restore"
|
restore_script = "/etc/yunohost/apps/backup_recommended_app/scripts/restore"
|
||||||
os.system("rm %s" % restore_script)
|
os.system("rm %s" % restore_script)
|
||||||
assert not os.path.exists(restore_script)
|
assert not os.path.exists(restore_script)
|
||||||
|
@ -391,16 +391,16 @@ def test_backup_app_with_no_restore_script(mocker):
|
||||||
# user...
|
# user...
|
||||||
|
|
||||||
with message(
|
with message(
|
||||||
mocker, "backup_with_no_restore_script_for_app", app="backup_recommended_app"
|
"backup_with_no_restore_script_for_app", app="backup_recommended_app"
|
||||||
):
|
):
|
||||||
backup_create(system=None, apps=["backup_recommended_app"])
|
backup_create(system=None, apps=["backup_recommended_app"])
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.clean_opt_dir
|
@pytest.mark.clean_opt_dir
|
||||||
def test_backup_with_different_output_directory(mocker):
|
def test_backup_with_different_output_directory():
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
# Create the backup
|
# Create the backup
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(
|
backup_create(
|
||||||
system=["conf_ynh_settings"],
|
system=["conf_ynh_settings"],
|
||||||
apps=None,
|
apps=None,
|
||||||
|
@ -420,10 +420,10 @@ def test_backup_with_different_output_directory(mocker):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.clean_opt_dir
|
@pytest.mark.clean_opt_dir
|
||||||
def test_backup_using_copy_method(mocker):
|
def test_backup_using_copy_method():
|
||||||
# Create the backup
|
# Create the backup
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(
|
backup_create(
|
||||||
system=["conf_ynh_settings"],
|
system=["conf_ynh_settings"],
|
||||||
apps=None,
|
apps=None,
|
||||||
|
@ -442,8 +442,8 @@ def test_backup_using_copy_method(mocker):
|
||||||
|
|
||||||
@pytest.mark.with_wordpress_archive_from_4p2
|
@pytest.mark.with_wordpress_archive_from_4p2
|
||||||
@pytest.mark.with_custom_domain("yolo.test")
|
@pytest.mark.with_custom_domain("yolo.test")
|
||||||
def test_restore_app_wordpress_from_Ynh4p2(mocker):
|
def test_restore_app_wordpress_from_Ynh4p2():
|
||||||
with message(mocker, "restore_complete"):
|
with message("restore_complete"):
|
||||||
backup_restore(
|
backup_restore(
|
||||||
system=None, name=backup_list()["archives"][0], apps=["wordpress"]
|
system=None, name=backup_list()["archives"][0], apps=["wordpress"]
|
||||||
)
|
)
|
||||||
|
@ -461,7 +461,7 @@ def test_restore_app_script_failure_handling(monkeypatch, mocker):
|
||||||
|
|
||||||
assert not _is_installed("wordpress")
|
assert not _is_installed("wordpress")
|
||||||
|
|
||||||
with message(mocker, "app_restore_script_failed"):
|
with message("app_restore_script_failed"):
|
||||||
with raiseYunohostError(mocker, "restore_nothings_done"):
|
with raiseYunohostError(mocker, "restore_nothings_done"):
|
||||||
backup_restore(
|
backup_restore(
|
||||||
system=None, name=backup_list()["archives"][0], apps=["wordpress"]
|
system=None, name=backup_list()["archives"][0], apps=["wordpress"]
|
||||||
|
@ -494,7 +494,7 @@ def test_restore_app_not_in_backup(mocker):
|
||||||
assert not _is_installed("wordpress")
|
assert not _is_installed("wordpress")
|
||||||
assert not _is_installed("yoloswag")
|
assert not _is_installed("yoloswag")
|
||||||
|
|
||||||
with message(mocker, "backup_archive_app_not_found", app="yoloswag"):
|
with message("backup_archive_app_not_found", app="yoloswag"):
|
||||||
with raiseYunohostError(mocker, "restore_nothings_done"):
|
with raiseYunohostError(mocker, "restore_nothings_done"):
|
||||||
backup_restore(
|
backup_restore(
|
||||||
system=None, name=backup_list()["archives"][0], apps=["yoloswag"]
|
system=None, name=backup_list()["archives"][0], apps=["yoloswag"]
|
||||||
|
@ -509,7 +509,7 @@ def test_restore_app_not_in_backup(mocker):
|
||||||
def test_restore_app_already_installed(mocker):
|
def test_restore_app_already_installed(mocker):
|
||||||
assert not _is_installed("wordpress")
|
assert not _is_installed("wordpress")
|
||||||
|
|
||||||
with message(mocker, "restore_complete"):
|
with message("restore_complete"):
|
||||||
backup_restore(
|
backup_restore(
|
||||||
system=None, name=backup_list()["archives"][0], apps=["wordpress"]
|
system=None, name=backup_list()["archives"][0], apps=["wordpress"]
|
||||||
)
|
)
|
||||||
|
@ -525,22 +525,22 @@ def test_restore_app_already_installed(mocker):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.with_legacy_app_installed
|
@pytest.mark.with_legacy_app_installed
|
||||||
def test_backup_and_restore_legacy_app(mocker):
|
def test_backup_and_restore_legacy_app():
|
||||||
_test_backup_and_restore_app(mocker, "legacy_app")
|
_test_backup_and_restore_app("legacy_app")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.with_backup_recommended_app_installed
|
@pytest.mark.with_backup_recommended_app_installed
|
||||||
def test_backup_and_restore_recommended_app(mocker):
|
def test_backup_and_restore_recommended_app():
|
||||||
_test_backup_and_restore_app(mocker, "backup_recommended_app")
|
_test_backup_and_restore_app("backup_recommended_app")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.with_backup_recommended_app_installed_with_ynh_restore
|
@pytest.mark.with_backup_recommended_app_installed_with_ynh_restore
|
||||||
def test_backup_and_restore_with_ynh_restore(mocker):
|
def test_backup_and_restore_with_ynh_restore():
|
||||||
_test_backup_and_restore_app(mocker, "backup_recommended_app")
|
_test_backup_and_restore_app("backup_recommended_app")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.with_permission_app_installed
|
@pytest.mark.with_permission_app_installed
|
||||||
def test_backup_and_restore_permission_app(mocker):
|
def test_backup_and_restore_permission_app():
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
assert "permissions_app.main" in res
|
assert "permissions_app.main" in res
|
||||||
assert "permissions_app.admin" in res
|
assert "permissions_app.admin" in res
|
||||||
|
@ -554,7 +554,7 @@ def test_backup_and_restore_permission_app(mocker):
|
||||||
assert res["permissions_app.admin"]["allowed"] == ["alice"]
|
assert res["permissions_app.admin"]["allowed"] == ["alice"]
|
||||||
assert res["permissions_app.dev"]["allowed"] == []
|
assert res["permissions_app.dev"]["allowed"] == []
|
||||||
|
|
||||||
_test_backup_and_restore_app(mocker, "permissions_app")
|
_test_backup_and_restore_app("permissions_app")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
assert "permissions_app.main" in res
|
assert "permissions_app.main" in res
|
||||||
|
@ -570,10 +570,10 @@ def test_backup_and_restore_permission_app(mocker):
|
||||||
assert res["permissions_app.dev"]["allowed"] == []
|
assert res["permissions_app.dev"]["allowed"] == []
|
||||||
|
|
||||||
|
|
||||||
def _test_backup_and_restore_app(mocker, app):
|
def _test_backup_and_restore_app(app):
|
||||||
# Create a backup of this app
|
# Create a backup of this app
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(name=name, system=None, apps=[app])
|
backup_create(name=name, system=None, apps=[app])
|
||||||
|
|
||||||
archives = backup_list()["archives"]
|
archives = backup_list()["archives"]
|
||||||
|
@ -590,7 +590,7 @@ def _test_backup_and_restore_app(mocker, app):
|
||||||
assert app + ".main" not in user_permission_list()["permissions"]
|
assert app + ".main" not in user_permission_list()["permissions"]
|
||||||
|
|
||||||
# Restore the app
|
# Restore the app
|
||||||
with message(mocker, "restore_complete"):
|
with message("restore_complete"):
|
||||||
backup_restore(system=None, name=archives[0], apps=[app])
|
backup_restore(system=None, name=archives[0], apps=[app])
|
||||||
|
|
||||||
assert app_is_installed(app)
|
assert app_is_installed(app)
|
||||||
|
@ -631,19 +631,19 @@ def test_restore_archive_with_bad_archive(mocker):
|
||||||
clean_tmp_backup_directory()
|
clean_tmp_backup_directory()
|
||||||
|
|
||||||
|
|
||||||
def test_restore_archive_with_custom_hook(mocker):
|
def test_restore_archive_with_custom_hook():
|
||||||
custom_restore_hook_folder = os.path.join(CUSTOM_HOOK_FOLDER, "restore")
|
custom_restore_hook_folder = os.path.join(CUSTOM_HOOK_FOLDER, "restore")
|
||||||
os.system("touch %s/99-yolo" % custom_restore_hook_folder)
|
os.system("touch %s/99-yolo" % custom_restore_hook_folder)
|
||||||
|
|
||||||
# Backup with custom hook system
|
# Backup with custom hook system
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(name=name, system=[], apps=None)
|
backup_create(name=name, system=[], apps=None)
|
||||||
archives = backup_list()["archives"]
|
archives = backup_list()["archives"]
|
||||||
assert len(archives) == 1
|
assert len(archives) == 1
|
||||||
|
|
||||||
# Restore system with custom hook
|
# Restore system with custom hook
|
||||||
with message(mocker, "restore_complete"):
|
with message("restore_complete"):
|
||||||
backup_restore(
|
backup_restore(
|
||||||
name=backup_list()["archives"][0], system=[], apps=None, force=True
|
name=backup_list()["archives"][0], system=[], apps=None, force=True
|
||||||
)
|
)
|
||||||
|
@ -651,7 +651,7 @@ def test_restore_archive_with_custom_hook(mocker):
|
||||||
os.system("rm %s/99-yolo" % custom_restore_hook_folder)
|
os.system("rm %s/99-yolo" % custom_restore_hook_folder)
|
||||||
|
|
||||||
|
|
||||||
def test_backup_binds_are_readonly(mocker, monkeypatch):
|
def test_backup_binds_are_readonly(monkeypatch):
|
||||||
def custom_mount_and_backup(self):
|
def custom_mount_and_backup(self):
|
||||||
self._organize_files()
|
self._organize_files()
|
||||||
|
|
||||||
|
@ -676,5 +676,5 @@ def test_backup_binds_are_readonly(mocker, monkeypatch):
|
||||||
|
|
||||||
# Create the backup
|
# Create the backup
|
||||||
name = random_ascii(8)
|
name = random_ascii(8)
|
||||||
with message(mocker, "backup_created", name=name):
|
with message("backup_created", name=name):
|
||||||
backup_create(name=name, system=[])
|
backup_create(name=name, system=[])
|
||||||
|
|
|
@ -59,7 +59,7 @@ def test_authenticate_with_wrong_password():
|
||||||
assert expected_msg in str(exception)
|
assert expected_msg in str(exception)
|
||||||
|
|
||||||
|
|
||||||
def test_authenticate_server_down(mocker):
|
def test_authenticate_server_down():
|
||||||
os.system("systemctl stop slapd && sleep 5")
|
os.system("systemctl stop slapd && sleep 5")
|
||||||
|
|
||||||
LDAPAuth().authenticate_credentials(credentials="alice:Yunohost")
|
LDAPAuth().authenticate_credentials(credentials="alice:Yunohost")
|
||||||
|
|
|
@ -435,8 +435,8 @@ def test_permission_list():
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
def test_permission_create_main(mocker):
|
def test_permission_create_main():
|
||||||
with message(mocker, "permission_created", permission="site.main"):
|
with message("permission_created", permission="site.main"):
|
||||||
permission_create("site.main", allowed=["all_users"], protected=False)
|
permission_create("site.main", allowed=["all_users"], protected=False)
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
|
@ -446,8 +446,8 @@ def test_permission_create_main(mocker):
|
||||||
assert res["site.main"]["protected"] is False
|
assert res["site.main"]["protected"] is False
|
||||||
|
|
||||||
|
|
||||||
def test_permission_create_extra(mocker):
|
def test_permission_create_extra():
|
||||||
with message(mocker, "permission_created", permission="site.test"):
|
with message("permission_created", permission="site.test"):
|
||||||
permission_create("site.test")
|
permission_create("site.test")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
|
@ -466,8 +466,8 @@ def test_permission_create_with_specific_user():
|
||||||
assert res["site.test"]["allowed"] == ["alice"]
|
assert res["site.test"]["allowed"] == ["alice"]
|
||||||
|
|
||||||
|
|
||||||
def test_permission_create_with_tile_management(mocker):
|
def test_permission_create_with_tile_management():
|
||||||
with message(mocker, "permission_created", permission="site.main"):
|
with message("permission_created", permission="site.main"):
|
||||||
_permission_create_with_dummy_app(
|
_permission_create_with_dummy_app(
|
||||||
"site.main",
|
"site.main",
|
||||||
allowed=["all_users"],
|
allowed=["all_users"],
|
||||||
|
@ -483,8 +483,8 @@ def test_permission_create_with_tile_management(mocker):
|
||||||
assert res["site.main"]["show_tile"] is False
|
assert res["site.main"]["show_tile"] is False
|
||||||
|
|
||||||
|
|
||||||
def test_permission_create_with_tile_management_with_main_default_value(mocker):
|
def test_permission_create_with_tile_management_with_main_default_value():
|
||||||
with message(mocker, "permission_created", permission="site.main"):
|
with message("permission_created", permission="site.main"):
|
||||||
_permission_create_with_dummy_app(
|
_permission_create_with_dummy_app(
|
||||||
"site.main",
|
"site.main",
|
||||||
allowed=["all_users"],
|
allowed=["all_users"],
|
||||||
|
@ -500,8 +500,8 @@ def test_permission_create_with_tile_management_with_main_default_value(mocker):
|
||||||
assert res["site.main"]["show_tile"] is True
|
assert res["site.main"]["show_tile"] is True
|
||||||
|
|
||||||
|
|
||||||
def test_permission_create_with_tile_management_with_not_main_default_value(mocker):
|
def test_permission_create_with_tile_management_with_not_main_default_value():
|
||||||
with message(mocker, "permission_created", permission="wiki.api"):
|
with message("permission_created", permission="wiki.api"):
|
||||||
_permission_create_with_dummy_app(
|
_permission_create_with_dummy_app(
|
||||||
"wiki.api",
|
"wiki.api",
|
||||||
allowed=["all_users"],
|
allowed=["all_users"],
|
||||||
|
@ -517,8 +517,8 @@ def test_permission_create_with_tile_management_with_not_main_default_value(mock
|
||||||
assert res["wiki.api"]["show_tile"] is True
|
assert res["wiki.api"]["show_tile"] is True
|
||||||
|
|
||||||
|
|
||||||
def test_permission_create_with_urls_management_without_url(mocker):
|
def test_permission_create_with_urls_management_without_url():
|
||||||
with message(mocker, "permission_created", permission="wiki.api"):
|
with message("permission_created", permission="wiki.api"):
|
||||||
_permission_create_with_dummy_app(
|
_permission_create_with_dummy_app(
|
||||||
"wiki.api", allowed=["all_users"], domain=maindomain, path="/site"
|
"wiki.api", allowed=["all_users"], domain=maindomain, path="/site"
|
||||||
)
|
)
|
||||||
|
@ -530,8 +530,8 @@ def test_permission_create_with_urls_management_without_url(mocker):
|
||||||
assert res["wiki.api"]["auth_header"] is True
|
assert res["wiki.api"]["auth_header"] is True
|
||||||
|
|
||||||
|
|
||||||
def test_permission_create_with_urls_management_simple_domain(mocker):
|
def test_permission_create_with_urls_management_simple_domain():
|
||||||
with message(mocker, "permission_created", permission="site.main"):
|
with message("permission_created", permission="site.main"):
|
||||||
_permission_create_with_dummy_app(
|
_permission_create_with_dummy_app(
|
||||||
"site.main",
|
"site.main",
|
||||||
allowed=["all_users"],
|
allowed=["all_users"],
|
||||||
|
@ -553,8 +553,8 @@ def test_permission_create_with_urls_management_simple_domain(mocker):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.other_domains(number=2)
|
@pytest.mark.other_domains(number=2)
|
||||||
def test_permission_create_with_urls_management_multiple_domain(mocker):
|
def test_permission_create_with_urls_management_multiple_domain():
|
||||||
with message(mocker, "permission_created", permission="site.main"):
|
with message("permission_created", permission="site.main"):
|
||||||
_permission_create_with_dummy_app(
|
_permission_create_with_dummy_app(
|
||||||
"site.main",
|
"site.main",
|
||||||
allowed=["all_users"],
|
allowed=["all_users"],
|
||||||
|
@ -575,14 +575,14 @@ def test_permission_create_with_urls_management_multiple_domain(mocker):
|
||||||
assert res["site.main"]["auth_header"] is True
|
assert res["site.main"]["auth_header"] is True
|
||||||
|
|
||||||
|
|
||||||
def test_permission_delete(mocker):
|
def test_permission_delete():
|
||||||
with message(mocker, "permission_deleted", permission="wiki.main"):
|
with message("permission_deleted", permission="wiki.main"):
|
||||||
permission_delete("wiki.main", force=True)
|
permission_delete("wiki.main", force=True)
|
||||||
|
|
||||||
res = user_permission_list()["permissions"]
|
res = user_permission_list()["permissions"]
|
||||||
assert "wiki.main" not in res
|
assert "wiki.main" not in res
|
||||||
|
|
||||||
with message(mocker, "permission_deleted", permission="blog.api"):
|
with message("permission_deleted", permission="blog.api"):
|
||||||
permission_delete("blog.api", force=False)
|
permission_delete("blog.api", force=False)
|
||||||
|
|
||||||
res = user_permission_list()["permissions"]
|
res = user_permission_list()["permissions"]
|
||||||
|
@ -625,8 +625,8 @@ def test_permission_delete_main_without_force(mocker):
|
||||||
# user side functions
|
# user side functions
|
||||||
|
|
||||||
|
|
||||||
def test_permission_add_group(mocker):
|
def test_permission_add_group():
|
||||||
with message(mocker, "permission_updated", permission="wiki.main"):
|
with message("permission_updated", permission="wiki.main"):
|
||||||
user_permission_update("wiki.main", add="alice")
|
user_permission_update("wiki.main", add="alice")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
|
@ -634,8 +634,8 @@ def test_permission_add_group(mocker):
|
||||||
assert set(res["wiki.main"]["corresponding_users"]) == {"alice", "bob"}
|
assert set(res["wiki.main"]["corresponding_users"]) == {"alice", "bob"}
|
||||||
|
|
||||||
|
|
||||||
def test_permission_remove_group(mocker):
|
def test_permission_remove_group():
|
||||||
with message(mocker, "permission_updated", permission="blog.main"):
|
with message("permission_updated", permission="blog.main"):
|
||||||
user_permission_update("blog.main", remove="alice")
|
user_permission_update("blog.main", remove="alice")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
|
@ -643,8 +643,8 @@ def test_permission_remove_group(mocker):
|
||||||
assert res["blog.main"]["corresponding_users"] == []
|
assert res["blog.main"]["corresponding_users"] == []
|
||||||
|
|
||||||
|
|
||||||
def test_permission_add_and_remove_group(mocker):
|
def test_permission_add_and_remove_group():
|
||||||
with message(mocker, "permission_updated", permission="wiki.main"):
|
with message("permission_updated", permission="wiki.main"):
|
||||||
user_permission_update("wiki.main", add="alice", remove="all_users")
|
user_permission_update("wiki.main", add="alice", remove="all_users")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
|
@ -652,9 +652,9 @@ def test_permission_add_and_remove_group(mocker):
|
||||||
assert res["wiki.main"]["corresponding_users"] == ["alice"]
|
assert res["wiki.main"]["corresponding_users"] == ["alice"]
|
||||||
|
|
||||||
|
|
||||||
def test_permission_add_group_already_allowed(mocker):
|
def test_permission_add_group_already_allowed():
|
||||||
with message(
|
with message(
|
||||||
mocker, "permission_already_allowed", permission="blog.main", group="alice"
|
"permission_already_allowed", permission="blog.main", group="alice"
|
||||||
):
|
):
|
||||||
user_permission_update("blog.main", add="alice")
|
user_permission_update("blog.main", add="alice")
|
||||||
|
|
||||||
|
@ -663,9 +663,9 @@ def test_permission_add_group_already_allowed(mocker):
|
||||||
assert res["blog.main"]["corresponding_users"] == ["alice"]
|
assert res["blog.main"]["corresponding_users"] == ["alice"]
|
||||||
|
|
||||||
|
|
||||||
def test_permission_remove_group_already_not_allowed(mocker):
|
def test_permission_remove_group_already_not_allowed():
|
||||||
with message(
|
with message(
|
||||||
mocker, "permission_already_disallowed", permission="blog.main", group="bob"
|
"permission_already_disallowed", permission="blog.main", group="bob"
|
||||||
):
|
):
|
||||||
user_permission_update("blog.main", remove="bob")
|
user_permission_update("blog.main", remove="bob")
|
||||||
|
|
||||||
|
@ -674,8 +674,8 @@ def test_permission_remove_group_already_not_allowed(mocker):
|
||||||
assert res["blog.main"]["corresponding_users"] == ["alice"]
|
assert res["blog.main"]["corresponding_users"] == ["alice"]
|
||||||
|
|
||||||
|
|
||||||
def test_permission_reset(mocker):
|
def test_permission_reset():
|
||||||
with message(mocker, "permission_updated", permission="blog.main"):
|
with message("permission_updated", permission="blog.main"):
|
||||||
user_permission_reset("blog.main")
|
user_permission_reset("blog.main")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
|
@ -693,42 +693,42 @@ def test_permission_reset_idempotency():
|
||||||
assert set(res["blog.main"]["corresponding_users"]) == {"alice", "bob"}
|
assert set(res["blog.main"]["corresponding_users"]) == {"alice", "bob"}
|
||||||
|
|
||||||
|
|
||||||
def test_permission_change_label(mocker):
|
def test_permission_change_label():
|
||||||
with message(mocker, "permission_updated", permission="wiki.main"):
|
with message("permission_updated", permission="wiki.main"):
|
||||||
user_permission_update("wiki.main", label="New Wiki")
|
user_permission_update("wiki.main", label="New Wiki")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
assert res["wiki.main"]["label"] == "New Wiki"
|
assert res["wiki.main"]["label"] == "New Wiki"
|
||||||
|
|
||||||
|
|
||||||
def test_permission_change_label_with_same_value(mocker):
|
def test_permission_change_label_with_same_value():
|
||||||
with message(mocker, "permission_updated", permission="wiki.main"):
|
with message("permission_updated", permission="wiki.main"):
|
||||||
user_permission_update("wiki.main", label="Wiki")
|
user_permission_update("wiki.main", label="Wiki")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
assert res["wiki.main"]["label"] == "Wiki"
|
assert res["wiki.main"]["label"] == "Wiki"
|
||||||
|
|
||||||
|
|
||||||
def test_permission_switch_show_tile(mocker):
|
def test_permission_switch_show_tile():
|
||||||
# Note that from the actionmap the value is passed as string, not as bool
|
# Note that from the actionmap the value is passed as string, not as bool
|
||||||
# Try with lowercase
|
# Try with lowercase
|
||||||
with message(mocker, "permission_updated", permission="wiki.main"):
|
with message("permission_updated", permission="wiki.main"):
|
||||||
user_permission_update("wiki.main", show_tile="false")
|
user_permission_update("wiki.main", show_tile="false")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
assert res["wiki.main"]["show_tile"] is False
|
assert res["wiki.main"]["show_tile"] is False
|
||||||
|
|
||||||
# Try with uppercase
|
# Try with uppercase
|
||||||
with message(mocker, "permission_updated", permission="wiki.main"):
|
with message("permission_updated", permission="wiki.main"):
|
||||||
user_permission_update("wiki.main", show_tile="TRUE")
|
user_permission_update("wiki.main", show_tile="TRUE")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
assert res["wiki.main"]["show_tile"] is True
|
assert res["wiki.main"]["show_tile"] is True
|
||||||
|
|
||||||
|
|
||||||
def test_permission_switch_show_tile_with_same_value(mocker):
|
def test_permission_switch_show_tile_with_same_value():
|
||||||
# Note that from the actionmap the value is passed as string, not as bool
|
# Note that from the actionmap the value is passed as string, not as bool
|
||||||
with message(mocker, "permission_updated", permission="wiki.main"):
|
with message("permission_updated", permission="wiki.main"):
|
||||||
user_permission_update("wiki.main", show_tile="True")
|
user_permission_update("wiki.main", show_tile="True")
|
||||||
|
|
||||||
res = user_permission_list(full=True)["permissions"]
|
res = user_permission_list(full=True)["permissions"]
|
||||||
|
|
|
@ -87,7 +87,7 @@ def test_ssh_conf_unmanaged():
|
||||||
assert SSHD_CONFIG in _get_conf_hashes("ssh")
|
assert SSHD_CONFIG in _get_conf_hashes("ssh")
|
||||||
|
|
||||||
|
|
||||||
def test_ssh_conf_unmanaged_and_manually_modified(mocker):
|
def test_ssh_conf_unmanaged_and_manually_modified():
|
||||||
_force_clear_hashes([SSHD_CONFIG])
|
_force_clear_hashes([SSHD_CONFIG])
|
||||||
os.system("echo ' ' >> %s" % SSHD_CONFIG)
|
os.system("echo ' ' >> %s" % SSHD_CONFIG)
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ def test_ssh_conf_unmanaged_and_manually_modified(mocker):
|
||||||
assert SSHD_CONFIG in _get_conf_hashes("ssh")
|
assert SSHD_CONFIG in _get_conf_hashes("ssh")
|
||||||
assert SSHD_CONFIG in manually_modified_files()
|
assert SSHD_CONFIG in manually_modified_files()
|
||||||
|
|
||||||
with message(mocker, "regenconf_need_to_explicitly_specify_ssh"):
|
with message("regenconf_need_to_explicitly_specify_ssh"):
|
||||||
regen_conf(force=True)
|
regen_conf(force=True)
|
||||||
|
|
||||||
assert SSHD_CONFIG in _get_conf_hashes("ssh")
|
assert SSHD_CONFIG in _get_conf_hashes("ssh")
|
||||||
|
|
|
@ -91,8 +91,8 @@ def test_list_groups():
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
def test_create_user(mocker):
|
def test_create_user():
|
||||||
with message(mocker, "user_created"):
|
with message("user_created"):
|
||||||
user_create("albert", maindomain, "test123Ynh", fullname="Albert Good")
|
user_create("albert", maindomain, "test123Ynh", fullname="Albert Good")
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
|
@ -102,8 +102,8 @@ def test_create_user(mocker):
|
||||||
assert "albert" in group_res["all_users"]["members"]
|
assert "albert" in group_res["all_users"]["members"]
|
||||||
|
|
||||||
|
|
||||||
def test_del_user(mocker):
|
def test_del_user():
|
||||||
with message(mocker, "user_deleted"):
|
with message("user_deleted"):
|
||||||
user_delete("alice")
|
user_delete("alice")
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
|
@ -112,7 +112,7 @@ def test_del_user(mocker):
|
||||||
assert "alice" not in group_res["all_users"]["members"]
|
assert "alice" not in group_res["all_users"]["members"]
|
||||||
|
|
||||||
|
|
||||||
def test_import_user(mocker):
|
def test_import_user():
|
||||||
import csv
|
import csv
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ def test_import_user(mocker):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
csv_io.seek(0)
|
csv_io.seek(0)
|
||||||
with message(mocker, "user_import_success"):
|
with message("user_import_success"):
|
||||||
user_import(csv_io, update=True, delete=True)
|
user_import(csv_io, update=True, delete=True)
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
|
@ -171,7 +171,7 @@ def test_import_user(mocker):
|
||||||
assert "alice" not in group_res["dev"]["members"]
|
assert "alice" not in group_res["dev"]["members"]
|
||||||
|
|
||||||
|
|
||||||
def test_export_user(mocker):
|
def test_export_user():
|
||||||
result = user_export()
|
result = user_export()
|
||||||
should_be = (
|
should_be = (
|
||||||
"username;firstname;lastname;password;mail;mail-alias;mail-forward;mailbox-quota;groups\r\n"
|
"username;firstname;lastname;password;mail;mail-alias;mail-forward;mailbox-quota;groups\r\n"
|
||||||
|
@ -182,8 +182,8 @@ def test_export_user(mocker):
|
||||||
assert result == should_be
|
assert result == should_be
|
||||||
|
|
||||||
|
|
||||||
def test_create_group(mocker):
|
def test_create_group():
|
||||||
with message(mocker, "group_created", group="adminsys"):
|
with message("group_created", group="adminsys"):
|
||||||
user_group_create("adminsys")
|
user_group_create("adminsys")
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
|
@ -192,8 +192,8 @@ def test_create_group(mocker):
|
||||||
assert group_res["adminsys"]["members"] == []
|
assert group_res["adminsys"]["members"] == []
|
||||||
|
|
||||||
|
|
||||||
def test_del_group(mocker):
|
def test_del_group():
|
||||||
with message(mocker, "group_deleted", group="dev"):
|
with message("group_deleted", group="dev"):
|
||||||
user_group_delete("dev")
|
user_group_delete("dev")
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
|
@ -262,46 +262,46 @@ def test_del_group_that_does_not_exist(mocker):
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
def test_update_user(mocker):
|
def test_update_user():
|
||||||
with message(mocker, "user_updated"):
|
with message("user_updated"):
|
||||||
user_update("alice", firstname="NewName", lastname="NewLast")
|
user_update("alice", firstname="NewName", lastname="NewLast")
|
||||||
|
|
||||||
info = user_info("alice")
|
info = user_info("alice")
|
||||||
assert info["fullname"] == "NewName NewLast"
|
assert info["fullname"] == "NewName NewLast"
|
||||||
|
|
||||||
with message(mocker, "user_updated"):
|
with message("user_updated"):
|
||||||
user_update("alice", fullname="New2Name New2Last")
|
user_update("alice", fullname="New2Name New2Last")
|
||||||
|
|
||||||
info = user_info("alice")
|
info = user_info("alice")
|
||||||
assert info["fullname"] == "New2Name New2Last"
|
assert info["fullname"] == "New2Name New2Last"
|
||||||
|
|
||||||
|
|
||||||
def test_update_group_add_user(mocker):
|
def test_update_group_add_user():
|
||||||
with message(mocker, "group_updated", group="dev"):
|
with message("group_updated", group="dev"):
|
||||||
user_group_update("dev", add=["bob"])
|
user_group_update("dev", add=["bob"])
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
assert set(group_res["dev"]["members"]) == {"alice", "bob"}
|
assert set(group_res["dev"]["members"]) == {"alice", "bob"}
|
||||||
|
|
||||||
|
|
||||||
def test_update_group_add_user_already_in(mocker):
|
def test_update_group_add_user_already_in():
|
||||||
with message(mocker, "group_user_already_in_group", user="bob", group="apps"):
|
with message("group_user_already_in_group", user="bob", group="apps"):
|
||||||
user_group_update("apps", add=["bob"])
|
user_group_update("apps", add=["bob"])
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
assert group_res["apps"]["members"] == ["bob"]
|
assert group_res["apps"]["members"] == ["bob"]
|
||||||
|
|
||||||
|
|
||||||
def test_update_group_remove_user(mocker):
|
def test_update_group_remove_user():
|
||||||
with message(mocker, "group_updated", group="apps"):
|
with message("group_updated", group="apps"):
|
||||||
user_group_update("apps", remove=["bob"])
|
user_group_update("apps", remove=["bob"])
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
assert group_res["apps"]["members"] == []
|
assert group_res["apps"]["members"] == []
|
||||||
|
|
||||||
|
|
||||||
def test_update_group_remove_user_not_already_in(mocker):
|
def test_update_group_remove_user_not_already_in():
|
||||||
with message(mocker, "group_user_not_in_group", user="jack", group="apps"):
|
with message("group_user_not_in_group", user="jack", group="apps"):
|
||||||
user_group_update("apps", remove=["jack"])
|
user_group_update("apps", remove=["jack"])
|
||||||
|
|
||||||
group_res = user_group_list()["groups"]
|
group_res = user_group_list()["groups"]
|
||||||
|
|
Loading…
Add table
Reference in a new issue