191 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Python
		
	
	
	
| 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",
 | |
|                 "read:reports",
 | |
|                 "write:reports",
 | |
|                 "read:listenings",
 | |
|                 "write:listenings",
 | |
|                 "read:security",
 | |
|                 "write:security",
 | |
|                 "write:listenings",
 | |
|                 "read:plugins",
 | |
|                 "write:plugins",
 | |
|                 "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",
 | |
|                 "read:instance:notes",
 | |
|                 "write:instance:notes",
 | |
|                 "read:instance:reports",
 | |
|                 "write:instance:reports",
 | |
|                 "read:instance:requests",
 | |
|                 "write:instance:requests",
 | |
|             },
 | |
|         ),
 | |
|         (
 | |
|             {"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",
 | |
|                 "read:reports",
 | |
|                 "write:reports",
 | |
|                 "read:listenings",
 | |
|                 "write:listenings",
 | |
|                 "read:security",
 | |
|                 "write:security",
 | |
|                 "read:plugins",
 | |
|                 "write:plugins",
 | |
|                 "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:notes",
 | |
|                 "write:instance:notes",
 | |
|                 "read:instance:reports",
 | |
|                 "write:instance:reports",
 | |
|                 "read:instance:requests",
 | |
|                 "write:instance:requests",
 | |
|             },
 | |
|         ),
 | |
|         (
 | |
|             {"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",
 | |
|                 "read:reports",
 | |
|                 "write:reports",
 | |
|                 "read:listenings",
 | |
|                 "write:listenings",
 | |
|                 "read:security",
 | |
|                 "write:security",
 | |
|                 "read:plugins",
 | |
|                 "write:plugins",
 | |
|                 "read:instance:policies",
 | |
|                 "write:instance:policies",
 | |
|                 "read:instance:accounts",
 | |
|                 "write:instance:accounts",
 | |
|                 "read:instance:domains",
 | |
|                 "write:instance:domains",
 | |
|                 "read:instance:notes",
 | |
|                 "write:instance:notes",
 | |
|                 "read:instance:reports",
 | |
|                 "write:instance:reports",
 | |
|                 "read:instance:requests",
 | |
|                 "write:instance:requests",
 | |
|             },
 | |
|         ),
 | |
|         (
 | |
|             {"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",
 | |
|                 "read:reports",
 | |
|                 "write:reports",
 | |
|                 "read:listenings",
 | |
|                 "write:listenings",
 | |
|                 "read:security",
 | |
|                 "write:security",
 | |
|                 "read:plugins",
 | |
|                 "write:plugins",
 | |
|             },
 | |
|         ),
 | |
|     ],
 | |
| )
 | |
| def test_get_scopes_from_user_permissions(user_perms, expected):
 | |
|     assert scopes.get_from_permissions(**user_perms) == expected
 |