130 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
import pytest
 | 
						|
 | 
						|
from click.testing import CliRunner
 | 
						|
 | 
						|
from funkwhale_api.cli import main
 | 
						|
from funkwhale_api.cli import library
 | 
						|
from funkwhale_api.cli import users
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "cmd, args, handlers",
 | 
						|
    [
 | 
						|
        (
 | 
						|
            ("users", "create"),
 | 
						|
            (
 | 
						|
                "--username",
 | 
						|
                "testuser",
 | 
						|
                "--password",
 | 
						|
                "testpassword",
 | 
						|
                "--email",
 | 
						|
                "test@hello.com",
 | 
						|
                "--upload-quota",
 | 
						|
                "35",
 | 
						|
                "--permission",
 | 
						|
                "library",
 | 
						|
                "--permission",
 | 
						|
                "moderation",
 | 
						|
                "--staff",
 | 
						|
                "--superuser",
 | 
						|
            ),
 | 
						|
            [
 | 
						|
                (
 | 
						|
                    users,
 | 
						|
                    "handler_create_user",
 | 
						|
                    {
 | 
						|
                        "username": "testuser",
 | 
						|
                        "password": "testpassword",
 | 
						|
                        "email": "test@hello.com",
 | 
						|
                        "upload_quota": 35,
 | 
						|
                        "permissions": ("library", "moderation"),
 | 
						|
                        "is_staff": True,
 | 
						|
                        "is_superuser": True,
 | 
						|
                    },
 | 
						|
                )
 | 
						|
            ],
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            ("users", "rm"),
 | 
						|
            ("testuser1", "testuser2", "--no-input"),
 | 
						|
            [
 | 
						|
                (
 | 
						|
                    users,
 | 
						|
                    "handler_delete_user",
 | 
						|
                    {"usernames": ("testuser1", "testuser2"), "soft": True},
 | 
						|
                )
 | 
						|
            ],
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            ("users", "rm"),
 | 
						|
            ("testuser1", "testuser2", "--no-input", "--hard",),
 | 
						|
            [
 | 
						|
                (
 | 
						|
                    users,
 | 
						|
                    "handler_delete_user",
 | 
						|
                    {"usernames": ("testuser1", "testuser2"), "soft": False},
 | 
						|
                )
 | 
						|
            ],
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            ("users", "set"),
 | 
						|
            (
 | 
						|
                "testuser1",
 | 
						|
                "testuser2",
 | 
						|
                "--no-input",
 | 
						|
                "--inactive",
 | 
						|
                "--upload-quota",
 | 
						|
                "35",
 | 
						|
                "--no-staff",
 | 
						|
                "--superuser",
 | 
						|
                "--permission-library",
 | 
						|
                "--no-permission-moderation",
 | 
						|
                "--no-permission-settings",
 | 
						|
                "--password",
 | 
						|
                "newpassword",
 | 
						|
            ),
 | 
						|
            [
 | 
						|
                (
 | 
						|
                    users,
 | 
						|
                    "handler_update_user",
 | 
						|
                    {
 | 
						|
                        "usernames": ("testuser1", "testuser2"),
 | 
						|
                        "kwargs": {
 | 
						|
                            "is_active": False,
 | 
						|
                            "upload_quota": 35,
 | 
						|
                            "is_staff": False,
 | 
						|
                            "is_superuser": True,
 | 
						|
                            "permission_library": True,
 | 
						|
                            "permission_moderation": False,
 | 
						|
                            "permission_settings": False,
 | 
						|
                            "password": "newpassword",
 | 
						|
                        },
 | 
						|
                    },
 | 
						|
                )
 | 
						|
            ],
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            ("albums", "add-tags-from-tracks"),
 | 
						|
            tuple(),
 | 
						|
            [(library, "handler_add_tags_from_tracks", {"albums": True})],
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            ("artists", "add-tags-from-tracks"),
 | 
						|
            tuple(),
 | 
						|
            [(library, "handler_add_tags_from_tracks", {"artists": True})],
 | 
						|
        ),
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_cli(cmd, args, handlers, mocker):
 | 
						|
    patched_handlers = {}
 | 
						|
    for module, path, _ in handlers:
 | 
						|
        patched_handlers[(module, path)] = mocker.spy(module, path)
 | 
						|
 | 
						|
    runner = CliRunner()
 | 
						|
    result = runner.invoke(main.base.cli, cmd + args)
 | 
						|
 | 
						|
    assert result.exit_code == 0, result.output
 | 
						|
 | 
						|
    for module, path, expected_call in handlers:
 | 
						|
        patched_handlers[(module, path)].assert_called_once_with(**expected_call)
 |