132 lines
4.0 KiB
Python
132 lines
4.0 KiB
Python
import pytest
|
|
from click.testing import CliRunner
|
|
|
|
from funkwhale_api.cli import library, main
|
|
|
|
|
|
@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)
|