Propagate changes on app helpers + tests

This commit is contained in:
Alexandre Aubin 2019-09-20 20:14:14 +02:00
parent ebf2fb9a14
commit 2b51d247fb
3 changed files with 47 additions and 32 deletions

View file

@ -232,11 +232,24 @@ ynh_webpath_register () {
# Create a new permission for the app
#
# example: ynh_permission_create --permission admin --urls /admin
#
# usage: ynh_permission_create --permission "permission" [--urls "url" ["url" ...]]
# | arg: permission - the name for the permission (by default a permission named "main" already exist)
# | arg: urls - (optional) a list of FULL urls for the permission (e.g. domain.tld/apps/admin)
# | arg: urls - (optional) a list of urls to specify for the permission.
#
# Urls are assumed to be relative to the app domain/path if they start with '/'.
# For example:
# / -> domain.tld/app
# /admin -> domain.tld/app/admin
# domain.tld/app/api -> domain.tld/app/api
#
# Urls can be treated as regexes when they start with "re:".
# For example:
# re:/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
# re:domain.tld/app/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
#
# example: ynh_permission_create --permission admin --urls domain.tld/blog/admin
ynh_permission_create() {
declare -Ar args_array=( [p]=permission= [u]=urls= )
local permission
@ -251,10 +264,11 @@ ynh_permission_create() {
# Remove a permission for the app (note that when the app is removed all permission is automatically removed)
#
# example: ynh_permission_delete --permission editors
#
# usage: ynh_permission_delete --permission "permission"
# | arg: permission - the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
#
# example: ynh_permission_delete --permission editors
ynh_permission_delete() {
declare -Ar args_array=( [p]=permission= )
local permission
@ -267,8 +281,8 @@ ynh_permission_delete() {
#
# usage: ynh_permission_urls --permission "permission" --add "url" ["url" ...] --remove "url" ["url" ...]
# | arg: permission - the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
# | arg: add - (optional) a list of FULL urls to add to the permission (e.g. domain.tld/apps/admin)
# | arg: remove - (optional) a list of FULL urls to remove from the permission (e.g. other.tld/apps/admin)
# | arg: add - (optional) a list of urls to add to the permission (see permission_create for details regarding their format)
# | arg: remove - (optional) a list of urls to remove from the permission (see permission_create for details regarding their format)
#
ynh_permission_urls() {
declare -Ar args_array=([p]=permission= [a]=add= [r]=remove=)

View file

@ -529,9 +529,9 @@ def test_backup_and_restore_permission_app():
assert "permissions_app.main" in res
assert "permissions_app.admin" in res
assert "permissions_app.dev" in res
assert res['permissions_app.main']['urls'] == [maindomain + "/urlpermissionapp"]
assert res['permissions_app.admin']['urls'] == [maindomain + "/urlpermissionapp/admin"]
assert res['permissions_app.dev']['urls'] == [maindomain + "/urlpermissionapp/dev"]
assert res['permissions_app.main']['urls'] == ["/"]
assert res['permissions_app.admin']['urls'] == ["/admin"]
assert res['permissions_app.dev']['urls'] == ["/dev"]
assert res['permissions_app.main']['allowed'] == ["all_users"]
assert res['permissions_app.admin']['allowed'] == ["alice"]
@ -543,9 +543,9 @@ def test_backup_and_restore_permission_app():
assert "permissions_app.main" in res
assert "permissions_app.admin" in res
assert "permissions_app.dev" in res
assert res['permissions_app.main']['urls'] == [maindomain + "/urlpermissionapp"]
assert res['permissions_app.admin']['urls'] == [maindomain + "/urlpermissionapp/admin"]
assert res['permissions_app.dev']['urls'] == [maindomain + "/urlpermissionapp/dev"]
assert res['permissions_app.main']['urls'] == ["/"]
assert res['permissions_app.admin']['urls'] == ["/admin"]
assert res['permissions_app.dev']['urls'] == ["/dev"]
assert res['permissions_app.main']['allowed'] == ["all_users"]
assert res['permissions_app.admin']['allowed'] == ["alice"]

View file

@ -31,7 +31,7 @@ def setup_function(function):
user_create("alice", "Alice", "White", "alice@" + maindomain, dummy_password)
user_create("bob", "Bob", "Snow", "bob@" + maindomain, dummy_password)
permission_create("wiki.main", urls=[maindomain + "/wiki"], sync_perm=False)
permission_create("wiki.main", urls=["/"], sync_perm=False)
permission_create("blog.main", sync_perm=False)
user_permission_update("blog.main", remove="all_users", add="alice")
@ -198,7 +198,7 @@ def test_permission_list():
assert res['blog.main']['allowed'] == ["alice"]
assert set(res['wiki.main']['corresponding_users']) == set(["alice", "bob"])
assert res['blog.main']['corresponding_users'] == ["alice"]
assert res['wiki.main']['urls'] == [maindomain + "/wiki"]
assert res['wiki.main']['urls'] == ["/"]
#
# Create - Remove functions
@ -322,37 +322,37 @@ def test_permission_update_permission_that_doesnt_exist():
# Permission url management
def test_permission_add_url():
permission_urls("blog.main", add=[maindomain + "/testA"])
permission_urls("blog.main", add=["/testA"])
res = user_permission_list(full=True)['permissions']
assert res["blog.main"]["urls"] == [maindomain + "/testA"]
assert res["blog.main"]["urls"] == ["/testA"]
def test_permission_add_second_url():
permission_urls("wiki.main", add=[maindomain + "/testA"])
def test_permission_add_another_url():
permission_urls("wiki.main", add=["/testA"])
res = user_permission_list(full=True)['permissions']
assert set(res["wiki.main"]["urls"]) == set([maindomain + "/testA", maindomain + "/wiki"])
assert set(res["wiki.main"]["urls"]) == set(["/", "/testA"])
def test_permission_remove_url():
permission_urls("wiki.main", remove=[maindomain + "/wiki"])
permission_urls("wiki.main", remove=["/"])
res = user_permission_list(full=True)['permissions']
assert res["wiki.main"]["urls"] == []
def test_permission_add_url_already_added():
res = user_permission_list(full=True)['permissions']
assert res["wiki.main"]["urls"] == [maindomain + "/wiki"]
assert res["wiki.main"]["urls"] == ["/"]
permission_urls("wiki.main", add=[maindomain + "/wiki"])
permission_urls("wiki.main", add=["/"])
res = user_permission_list(full=True)['permissions']
assert res["wiki.main"]["urls"] == [maindomain + "/wiki"]
assert res["wiki.main"]["urls"] == ["/"]
def test_permission_remove_url_not_added():
permission_urls("wiki.main", remove=[maindomain + "/doesnt_exist"])
permission_urls("wiki.main", remove=["/doesnt_exist"])
res = user_permission_list(full=True)['permissions']
assert res['wiki.main']['urls'] == [maindomain + "/wiki"]
assert res['wiki.main']['urls'] == ["/"]
#
# Application interaction
@ -366,9 +366,9 @@ def test_permission_app_install():
assert "permissions_app.main" in res
assert "permissions_app.admin" in res
assert "permissions_app.dev" in res
assert res['permissions_app.main']['urls'] == [maindomain + "/urlpermissionapp"]
assert res['permissions_app.admin']['urls'] == [maindomain + "/urlpermissionapp/admin"]
assert res['permissions_app.dev']['urls'] == [maindomain + "/urlpermissionapp/dev"]
assert res['permissions_app.main']['urls'] == ["/"]
assert res['permissions_app.admin']['urls'] == ["/admin"]
assert res['permissions_app.dev']['urls'] == ["/dev"]
assert res['permissions_app.main']['allowed'] == ["all_users"]
assert set(res['permissions_app.main']['corresponding_users']) == set(["alice", "bob"])
@ -399,17 +399,18 @@ def test_permission_app_change_url():
app_install("./tests/apps/permissions_app_ynh",
args="domain=%s&path=%s&admin=%s" % (maindomain, "/urlpermissionapp", "alice"), force=True)
# FIXME : should rework this test to look for differences in the generated app map / app tiles ...
res = user_permission_list(full=True)['permissions']
assert res['permissions_app.main']['urls'] == [maindomain + "/urlpermissionapp"]
assert res['permissions_app.admin']['urls'] == [maindomain + "/urlpermissionapp/admin"]
assert res['permissions_app.dev']['urls'] == [maindomain + "/urlpermissionapp/dev"]
assert res['permissions_app.main']['urls'] == ["/"]
assert res['permissions_app.admin']['urls'] == ["/admin"]
assert res['permissions_app.dev']['urls'] == ["/dev"]
app_change_url("permissions_app", maindomain, "/newchangeurl")
res = user_permission_list(full=True)['permissions']
assert res['permissions_app.main']['urls'] == [maindomain + "/newchangeurl"]
assert res['permissions_app.admin']['urls'] == [maindomain + "/newchangeurl/admin"]
assert res['permissions_app.dev']['urls'] == [maindomain + "/newchangeurl/dev"]
assert res['permissions_app.main']['urls'] == ["/"]
assert res['permissions_app.admin']['urls'] == ["/admin"]
assert res['permissions_app.dev']['urls'] == ["/dev"]
def test_permission_app_propagation_on_ssowat():