Blacked the code
This commit is contained in:
parent
b6fc0051fa
commit
62ca3bd736
279 changed files with 8890 additions and 9556 deletions
|
|
@ -7,11 +7,16 @@ from funkwhale_api.common import fields
|
|||
from funkwhale_api.users.factories import UserFactory
|
||||
|
||||
|
||||
@pytest.mark.parametrize('user,expected', [
|
||||
(AnonymousUser(), Q(privacy_level='everyone')),
|
||||
(UserFactory.build(pk=1),
|
||||
Q(privacy_level__in=['followers', 'instance', 'everyone'])),
|
||||
])
|
||||
def test_privacy_level_query(user,expected):
|
||||
@pytest.mark.parametrize(
|
||||
"user,expected",
|
||||
[
|
||||
(AnonymousUser(), Q(privacy_level="everyone")),
|
||||
(
|
||||
UserFactory.build(pk=1),
|
||||
Q(privacy_level__in=["followers", "instance", "everyone"]),
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_privacy_level_query(user, expected):
|
||||
query = fields.privacy_level_query(user)
|
||||
assert query == expected
|
||||
|
|
|
|||
|
|
@ -8,36 +8,36 @@ from funkwhale_api.common import permissions
|
|||
|
||||
|
||||
def test_owner_permission_owner_field_ok(nodb_factories, api_request):
|
||||
playlist = nodb_factories['playlists.Playlist']()
|
||||
playlist = nodb_factories["playlists.Playlist"]()
|
||||
view = APIView.as_view()
|
||||
permission = permissions.OwnerPermission()
|
||||
request = api_request.get('/')
|
||||
setattr(request, 'user', playlist.user)
|
||||
request = api_request.get("/")
|
||||
setattr(request, "user", playlist.user)
|
||||
check = permission.has_object_permission(request, view, playlist)
|
||||
|
||||
assert check is True
|
||||
|
||||
|
||||
def test_owner_permission_owner_field_not_ok(
|
||||
anonymous_user, nodb_factories, api_request):
|
||||
playlist = nodb_factories['playlists.Playlist']()
|
||||
anonymous_user, nodb_factories, api_request
|
||||
):
|
||||
playlist = nodb_factories["playlists.Playlist"]()
|
||||
view = APIView.as_view()
|
||||
permission = permissions.OwnerPermission()
|
||||
request = api_request.get('/')
|
||||
setattr(request, 'user', anonymous_user)
|
||||
request = api_request.get("/")
|
||||
setattr(request, "user", anonymous_user)
|
||||
|
||||
with pytest.raises(Http404):
|
||||
permission.has_object_permission(request, view, playlist)
|
||||
|
||||
|
||||
def test_owner_permission_read_only(
|
||||
anonymous_user, nodb_factories, api_request):
|
||||
playlist = nodb_factories['playlists.Playlist']()
|
||||
def test_owner_permission_read_only(anonymous_user, nodb_factories, api_request):
|
||||
playlist = nodb_factories["playlists.Playlist"]()
|
||||
view = APIView.as_view()
|
||||
setattr(view, 'owner_checks', ['write'])
|
||||
setattr(view, "owner_checks", ["write"])
|
||||
permission = permissions.OwnerPermission()
|
||||
request = api_request.get('/')
|
||||
setattr(request, 'user', anonymous_user)
|
||||
request = api_request.get("/")
|
||||
setattr(request, "user", anonymous_user)
|
||||
check = permission.has_object_permission(request, view, playlist)
|
||||
|
||||
assert check is True
|
||||
|
|
|
|||
|
|
@ -6,39 +6,40 @@ from funkwhale_api.common import preferences as common_preferences
|
|||
|
||||
@pytest.fixture
|
||||
def string_list_pref(preferences):
|
||||
|
||||
@global_preferences_registry.register
|
||||
class P(common_preferences.StringListPreference):
|
||||
default = ['hello']
|
||||
section = 'test'
|
||||
name = 'string_list'
|
||||
default = ["hello"]
|
||||
section = "test"
|
||||
name = "string_list"
|
||||
|
||||
yield
|
||||
del global_preferences_registry['test']['string_list']
|
||||
del global_preferences_registry["test"]["string_list"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('input,output', [
|
||||
(['a', 'b', 'c'], 'a,b,c'),
|
||||
(['a', 'c', 'b'], 'a,b,c'),
|
||||
(('a', 'c', 'b'), 'a,b,c'),
|
||||
([], None),
|
||||
])
|
||||
@pytest.mark.parametrize(
|
||||
"input,output",
|
||||
[
|
||||
(["a", "b", "c"], "a,b,c"),
|
||||
(["a", "c", "b"], "a,b,c"),
|
||||
(("a", "c", "b"), "a,b,c"),
|
||||
([], None),
|
||||
],
|
||||
)
|
||||
def test_string_list_serializer_to_db(input, output):
|
||||
s = common_preferences.StringListSerializer.to_db(input) == output
|
||||
|
||||
|
||||
@pytest.mark.parametrize('input,output', [
|
||||
('a,b,c', ['a', 'b', 'c'], ),
|
||||
(None, []),
|
||||
('', []),
|
||||
])
|
||||
@pytest.mark.parametrize(
|
||||
"input,output", [("a,b,c", ["a", "b", "c"]), (None, []), ("", [])]
|
||||
)
|
||||
def test_string_list_serializer_to_python(input, output):
|
||||
s = common_preferences.StringListSerializer.to_python(input) == output
|
||||
|
||||
|
||||
def test_string_list_pref_default(string_list_pref, preferences):
|
||||
assert preferences['test__string_list'] == ['hello']
|
||||
assert preferences["test__string_list"] == ["hello"]
|
||||
|
||||
|
||||
def test_string_list_pref_set(string_list_pref, preferences):
|
||||
preferences['test__string_list'] = ['world', 'hello']
|
||||
assert preferences['test__string_list'] == ['hello', 'world']
|
||||
preferences["test__string_list"] = ["world", "hello"]
|
||||
assert preferences["test__string_list"] == ["hello", "world"]
|
||||
|
|
|
|||
|
|
@ -9,38 +9,26 @@ def command():
|
|||
return script.Command()
|
||||
|
||||
|
||||
@pytest.mark.parametrize('script_name', [
|
||||
'django_permissions_to_user_permissions',
|
||||
'test',
|
||||
])
|
||||
@pytest.mark.parametrize(
|
||||
"script_name", ["django_permissions_to_user_permissions", "test"]
|
||||
)
|
||||
def test_script_command_list(command, script_name, mocker):
|
||||
mocked = mocker.patch(
|
||||
'funkwhale_api.common.scripts.{}.main'.format(script_name))
|
||||
mocked = mocker.patch("funkwhale_api.common.scripts.{}.main".format(script_name))
|
||||
|
||||
command.handle(script_name=script_name, interactive=False)
|
||||
|
||||
mocked.assert_called_once_with(
|
||||
command, script_name=script_name, interactive=False)
|
||||
mocked.assert_called_once_with(command, script_name=script_name, interactive=False)
|
||||
|
||||
|
||||
def test_django_permissions_to_user_permissions(factories, command):
|
||||
group = factories['auth.Group'](
|
||||
group = factories["auth.Group"](perms=["federation.change_library"])
|
||||
user1 = factories["users.User"](
|
||||
perms=[
|
||||
'federation.change_library'
|
||||
"dynamic_preferences.change_globalpreferencemodel",
|
||||
"music.add_importbatch",
|
||||
]
|
||||
)
|
||||
user1 = factories['users.User'](
|
||||
perms=[
|
||||
'dynamic_preferences.change_globalpreferencemodel',
|
||||
'music.add_importbatch',
|
||||
]
|
||||
)
|
||||
user2 = factories['users.User'](
|
||||
perms=[
|
||||
'music.add_importbatch',
|
||||
],
|
||||
groups=[group]
|
||||
)
|
||||
user2 = factories["users.User"](perms=["music.add_importbatch"], groups=[group])
|
||||
|
||||
scripts.django_permissions_to_user_permissions.main(command)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,20 +7,20 @@ from funkwhale_api.users import models
|
|||
class TestActionFilterSet(django_filters.FilterSet):
|
||||
class Meta:
|
||||
model = models.User
|
||||
fields = ['is_active']
|
||||
fields = ["is_active"]
|
||||
|
||||
|
||||
class TestSerializer(serializers.ActionSerializer):
|
||||
actions = ['test']
|
||||
actions = ["test"]
|
||||
filterset_class = TestActionFilterSet
|
||||
|
||||
def handle_test(self, objects):
|
||||
return {'hello': 'world'}
|
||||
return {"hello": "world"}
|
||||
|
||||
|
||||
class TestDangerousSerializer(serializers.ActionSerializer):
|
||||
actions = ['test', 'test_dangerous']
|
||||
dangerous_actions = ['test_dangerous']
|
||||
actions = ["test", "test_dangerous"]
|
||||
dangerous_actions = ["test_dangerous"]
|
||||
|
||||
def handle_test(self, objects):
|
||||
pass
|
||||
|
|
@ -30,107 +30,88 @@ class TestDangerousSerializer(serializers.ActionSerializer):
|
|||
|
||||
|
||||
def test_action_serializer_validates_action():
|
||||
data = {'objects': 'all', 'action': 'nope'}
|
||||
data = {"objects": "all", "action": "nope"}
|
||||
serializer = TestSerializer(data, queryset=models.User.objects.none())
|
||||
|
||||
assert serializer.is_valid() is False
|
||||
assert 'action' in serializer.errors
|
||||
assert "action" in serializer.errors
|
||||
|
||||
|
||||
def test_action_serializer_validates_objects():
|
||||
data = {'objects': 'nope', 'action': 'test'}
|
||||
data = {"objects": "nope", "action": "test"}
|
||||
serializer = TestSerializer(data, queryset=models.User.objects.none())
|
||||
|
||||
assert serializer.is_valid() is False
|
||||
assert 'objects' in serializer.errors
|
||||
assert "objects" in serializer.errors
|
||||
|
||||
|
||||
def test_action_serializers_objects_clean_ids(factories):
|
||||
user1 = factories['users.User']()
|
||||
user2 = factories['users.User']()
|
||||
user1 = factories["users.User"]()
|
||||
user2 = factories["users.User"]()
|
||||
|
||||
data = {'objects': [user1.pk], 'action': 'test'}
|
||||
data = {"objects": [user1.pk], "action": "test"}
|
||||
serializer = TestSerializer(data, queryset=models.User.objects.all())
|
||||
|
||||
assert serializer.is_valid() is True
|
||||
assert list(serializer.validated_data['objects']) == [user1]
|
||||
assert list(serializer.validated_data["objects"]) == [user1]
|
||||
|
||||
|
||||
def test_action_serializers_objects_clean_all(factories):
|
||||
user1 = factories['users.User']()
|
||||
user2 = factories['users.User']()
|
||||
user1 = factories["users.User"]()
|
||||
user2 = factories["users.User"]()
|
||||
|
||||
data = {'objects': 'all', 'action': 'test'}
|
||||
data = {"objects": "all", "action": "test"}
|
||||
serializer = TestSerializer(data, queryset=models.User.objects.all())
|
||||
|
||||
assert serializer.is_valid() is True
|
||||
assert list(serializer.validated_data['objects']) == [user1, user2]
|
||||
assert list(serializer.validated_data["objects"]) == [user1, user2]
|
||||
|
||||
|
||||
def test_action_serializers_save(factories, mocker):
|
||||
handler = mocker.spy(TestSerializer, 'handle_test')
|
||||
user1 = factories['users.User']()
|
||||
user2 = factories['users.User']()
|
||||
handler = mocker.spy(TestSerializer, "handle_test")
|
||||
user1 = factories["users.User"]()
|
||||
user2 = factories["users.User"]()
|
||||
|
||||
data = {'objects': 'all', 'action': 'test'}
|
||||
data = {"objects": "all", "action": "test"}
|
||||
serializer = TestSerializer(data, queryset=models.User.objects.all())
|
||||
|
||||
assert serializer.is_valid() is True
|
||||
result = serializer.save()
|
||||
assert result == {
|
||||
'updated': 2,
|
||||
'action': 'test',
|
||||
'result': {'hello': 'world'},
|
||||
}
|
||||
assert result == {"updated": 2, "action": "test", "result": {"hello": "world"}}
|
||||
handler.assert_called_once()
|
||||
|
||||
|
||||
def test_action_serializers_filterset(factories):
|
||||
user1 = factories['users.User'](is_active=False)
|
||||
user2 = factories['users.User'](is_active=True)
|
||||
user1 = factories["users.User"](is_active=False)
|
||||
user2 = factories["users.User"](is_active=True)
|
||||
|
||||
data = {
|
||||
'objects': 'all',
|
||||
'action': 'test',
|
||||
'filters': {'is_active': True},
|
||||
}
|
||||
data = {"objects": "all", "action": "test", "filters": {"is_active": True}}
|
||||
serializer = TestSerializer(data, queryset=models.User.objects.all())
|
||||
|
||||
assert serializer.is_valid() is True
|
||||
assert list(serializer.validated_data['objects']) == [user2]
|
||||
assert list(serializer.validated_data["objects"]) == [user2]
|
||||
|
||||
|
||||
def test_action_serializers_validates_at_least_one_object():
|
||||
data = {
|
||||
'objects': 'all',
|
||||
'action': 'test',
|
||||
}
|
||||
data = {"objects": "all", "action": "test"}
|
||||
serializer = TestSerializer(data, queryset=models.User.objects.none())
|
||||
|
||||
assert serializer.is_valid() is False
|
||||
assert 'non_field_errors' in serializer.errors
|
||||
assert "non_field_errors" in serializer.errors
|
||||
|
||||
|
||||
def test_dangerous_actions_refuses_all(factories):
|
||||
factories['users.User']()
|
||||
data = {
|
||||
'objects': 'all',
|
||||
'action': 'test_dangerous',
|
||||
}
|
||||
serializer = TestDangerousSerializer(
|
||||
data, queryset=models.User.objects.all())
|
||||
factories["users.User"]()
|
||||
data = {"objects": "all", "action": "test_dangerous"}
|
||||
serializer = TestDangerousSerializer(data, queryset=models.User.objects.all())
|
||||
|
||||
assert serializer.is_valid() is False
|
||||
assert 'non_field_errors' in serializer.errors
|
||||
assert "non_field_errors" in serializer.errors
|
||||
|
||||
|
||||
def test_dangerous_actions_refuses_not_listed(factories):
|
||||
factories['users.User']()
|
||||
data = {
|
||||
'objects': 'all',
|
||||
'action': 'test',
|
||||
}
|
||||
serializer = TestDangerousSerializer(
|
||||
data, queryset=models.User.objects.all())
|
||||
factories["users.User"]()
|
||||
data = {"objects": "all", "action": "test"}
|
||||
serializer = TestDangerousSerializer(data, queryset=models.User.objects.all())
|
||||
|
||||
assert serializer.is_valid() is True
|
||||
|
|
|
|||
|
|
@ -4,15 +4,14 @@ from funkwhale_api.common import session
|
|||
|
||||
|
||||
def test_get_user_agent(settings):
|
||||
settings.FUNKWHALE_URL = 'https://test.com'
|
||||
'http.rb/3.0.0 (Mastodon/2.2.0; +https://mastodon.eliotberriot.com/)'
|
||||
expected = 'python-requests (funkwhale/{}; +{})'.format(
|
||||
funkwhale_api.__version__,
|
||||
settings.FUNKWHALE_URL
|
||||
settings.FUNKWHALE_URL = "https://test.com"
|
||||
"http.rb/3.0.0 (Mastodon/2.2.0; +https://mastodon.eliotberriot.com/)"
|
||||
expected = "python-requests (funkwhale/{}; +{})".format(
|
||||
funkwhale_api.__version__, settings.FUNKWHALE_URL
|
||||
)
|
||||
assert session.get_user_agent() == expected
|
||||
|
||||
|
||||
def test_get_session():
|
||||
expected = session.get_user_agent()
|
||||
assert session.get_session().headers['User-Agent'] == expected
|
||||
assert session.get_session().headers["User-Agent"] == expected
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue