2019-03-25 16:02:51 +00:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
from funkwhale_api.users.oauth import scopes
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
"user_perms, expected",
|
|
|
|
[
|
|
|
|
(
|
|
|
|
# All permissions, so all scopes
|
|
|
|
{"moderation": True, "library": True, "settings": True},
|
|
|
|
{
|
|
|
|
"read:profile",
|
|
|
|
"write:profile",
|
|
|
|
"read:libraries",
|
|
|
|
"write:libraries",
|
|
|
|
"read:playlists",
|
|
|
|
"write:playlists",
|
|
|
|
"read:favorites",
|
|
|
|
"write:favorites",
|
|
|
|
"read:notifications",
|
|
|
|
"write:notifications",
|
|
|
|
"read:radios",
|
|
|
|
"write:radios",
|
|
|
|
"read:follows",
|
|
|
|
"write:follows",
|
|
|
|
"read:edits",
|
|
|
|
"write:edits",
|
|
|
|
"read:filters",
|
|
|
|
"write:filters",
|
2019-08-22 09:30:30 +00:00
|
|
|
"read:reports",
|
|
|
|
"write:reports",
|
2019-03-25 16:02:51 +00:00
|
|
|
"read:listenings",
|
|
|
|
"write:listenings",
|
|
|
|
"read:security",
|
|
|
|
"write:security",
|
2020-07-03 08:59:12 +00:00
|
|
|
"write:listenings",
|
|
|
|
"read:plugins",
|
|
|
|
"write:plugins",
|
2019-03-25 16:02:51 +00:00
|
|
|
"read:instance:policies",
|
|
|
|
"write:instance:policies",
|
|
|
|
"read:instance:accounts",
|
|
|
|
"write:instance:accounts",
|
|
|
|
"read:instance:domains",
|
|
|
|
"write:instance:domains",
|
|
|
|
"read:instance:settings",
|
|
|
|
"write:instance:settings",
|
|
|
|
"read:instance:users",
|
|
|
|
"write:instance:users",
|
|
|
|
"read:instance:invitations",
|
|
|
|
"write:instance:invitations",
|
|
|
|
"read:instance:edits",
|
|
|
|
"write:instance:edits",
|
|
|
|
"read:instance:libraries",
|
|
|
|
"write:instance:libraries",
|
2019-09-02 14:34:39 +00:00
|
|
|
"read:instance:notes",
|
|
|
|
"write:instance:notes",
|
|
|
|
"read:instance:reports",
|
|
|
|
"write:instance:reports",
|
2020-03-18 10:57:33 +00:00
|
|
|
"read:instance:requests",
|
|
|
|
"write:instance:requests",
|
2019-03-25 16:02:51 +00:00
|
|
|
},
|
|
|
|
),
|
|
|
|
(
|
|
|
|
{"moderation": True, "library": False, "settings": True},
|
|
|
|
{
|
|
|
|
"read:profile",
|
|
|
|
"write:profile",
|
|
|
|
"read:libraries",
|
|
|
|
"write:libraries",
|
|
|
|
"read:playlists",
|
|
|
|
"write:playlists",
|
|
|
|
"read:favorites",
|
|
|
|
"write:favorites",
|
|
|
|
"read:notifications",
|
|
|
|
"write:notifications",
|
|
|
|
"read:radios",
|
|
|
|
"write:radios",
|
|
|
|
"read:follows",
|
|
|
|
"write:follows",
|
|
|
|
"read:edits",
|
|
|
|
"write:edits",
|
|
|
|
"read:filters",
|
|
|
|
"write:filters",
|
2019-08-22 09:30:30 +00:00
|
|
|
"read:reports",
|
|
|
|
"write:reports",
|
2019-03-25 16:02:51 +00:00
|
|
|
"read:listenings",
|
|
|
|
"write:listenings",
|
|
|
|
"read:security",
|
|
|
|
"write:security",
|
2020-07-03 08:59:12 +00:00
|
|
|
"read:plugins",
|
|
|
|
"write:plugins",
|
2019-03-25 16:02:51 +00:00
|
|
|
"read:instance:policies",
|
|
|
|
"write:instance:policies",
|
|
|
|
"read:instance:accounts",
|
|
|
|
"write:instance:accounts",
|
|
|
|
"read:instance:domains",
|
|
|
|
"write:instance:domains",
|
|
|
|
"read:instance:settings",
|
|
|
|
"write:instance:settings",
|
|
|
|
"read:instance:users",
|
|
|
|
"write:instance:users",
|
|
|
|
"read:instance:invitations",
|
|
|
|
"write:instance:invitations",
|
2019-09-02 14:34:39 +00:00
|
|
|
"read:instance:notes",
|
|
|
|
"write:instance:notes",
|
|
|
|
"read:instance:reports",
|
|
|
|
"write:instance:reports",
|
2020-03-18 10:57:33 +00:00
|
|
|
"read:instance:requests",
|
|
|
|
"write:instance:requests",
|
2019-03-25 16:02:51 +00:00
|
|
|
},
|
|
|
|
),
|
|
|
|
(
|
|
|
|
{"moderation": True, "library": False, "settings": False},
|
|
|
|
{
|
|
|
|
"read:profile",
|
|
|
|
"write:profile",
|
|
|
|
"read:libraries",
|
|
|
|
"write:libraries",
|
|
|
|
"read:playlists",
|
|
|
|
"write:playlists",
|
|
|
|
"read:favorites",
|
|
|
|
"write:favorites",
|
|
|
|
"read:notifications",
|
|
|
|
"write:notifications",
|
|
|
|
"read:radios",
|
|
|
|
"write:radios",
|
|
|
|
"read:follows",
|
|
|
|
"write:follows",
|
|
|
|
"read:edits",
|
|
|
|
"write:edits",
|
|
|
|
"read:filters",
|
|
|
|
"write:filters",
|
2019-08-22 09:30:30 +00:00
|
|
|
"read:reports",
|
|
|
|
"write:reports",
|
2019-03-25 16:02:51 +00:00
|
|
|
"read:listenings",
|
|
|
|
"write:listenings",
|
|
|
|
"read:security",
|
|
|
|
"write:security",
|
2020-07-03 08:59:12 +00:00
|
|
|
"read:plugins",
|
|
|
|
"write:plugins",
|
2019-03-25 16:02:51 +00:00
|
|
|
"read:instance:policies",
|
|
|
|
"write:instance:policies",
|
|
|
|
"read:instance:accounts",
|
|
|
|
"write:instance:accounts",
|
|
|
|
"read:instance:domains",
|
|
|
|
"write:instance:domains",
|
2019-09-02 14:34:39 +00:00
|
|
|
"read:instance:notes",
|
|
|
|
"write:instance:notes",
|
|
|
|
"read:instance:reports",
|
|
|
|
"write:instance:reports",
|
2020-03-18 10:57:33 +00:00
|
|
|
"read:instance:requests",
|
|
|
|
"write:instance:requests",
|
2019-03-25 16:02:51 +00:00
|
|
|
},
|
|
|
|
),
|
|
|
|
(
|
|
|
|
{"moderation": False, "library": False, "settings": False},
|
|
|
|
{
|
|
|
|
"read:profile",
|
|
|
|
"write:profile",
|
|
|
|
"read:libraries",
|
|
|
|
"write:libraries",
|
|
|
|
"read:playlists",
|
|
|
|
"write:playlists",
|
|
|
|
"read:favorites",
|
|
|
|
"write:favorites",
|
|
|
|
"read:notifications",
|
|
|
|
"write:notifications",
|
|
|
|
"read:radios",
|
|
|
|
"write:radios",
|
|
|
|
"read:follows",
|
|
|
|
"write:follows",
|
|
|
|
"read:edits",
|
|
|
|
"write:edits",
|
|
|
|
"read:filters",
|
|
|
|
"write:filters",
|
2019-08-22 09:30:30 +00:00
|
|
|
"read:reports",
|
|
|
|
"write:reports",
|
2019-03-25 16:02:51 +00:00
|
|
|
"read:listenings",
|
|
|
|
"write:listenings",
|
|
|
|
"read:security",
|
|
|
|
"write:security",
|
2020-07-03 08:59:12 +00:00
|
|
|
"read:plugins",
|
|
|
|
"write:plugins",
|
2019-03-25 16:02:51 +00:00
|
|
|
},
|
|
|
|
),
|
|
|
|
],
|
|
|
|
)
|
|
|
|
def test_get_scopes_from_user_permissions(user_perms, expected):
|
|
|
|
|
|
|
|
assert scopes.get_from_permissions(**user_perms) == expected
|