From 2a3f43ecb14ac90b0b58a6bcde70de94664b41e6 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Fri, 16 Mar 2018 23:31:08 +0100 Subject: [PATCH] Ensure privacy_level is settable/inherited properly --- api/funkwhale_api/playlists/views.py | 7 ++++++- api/tests/playlists/test_views.py | 31 +++++++++++++++++++++------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index 1a88d231e4..f78b5b8016 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -32,7 +32,12 @@ class PlaylistViewSet( return self.queryset.filter(user=self.request.user) def perform_create(self, serializer): - return serializer.save(user=self.request.user) + return serializer.save( + user=self.request.user, + privacy_level=serializer.validated_data.get( + 'privacy_level', self.request.user.privacy_level) + + ) class PlaylistTrackViewSet( diff --git a/api/tests/playlists/test_views.py b/api/tests/playlists/test_views.py index 943de03e11..f3084e6a06 100644 --- a/api/tests/playlists/test_views.py +++ b/api/tests/playlists/test_views.py @@ -7,27 +7,44 @@ from funkwhale_api.playlists import models from funkwhale_api.playlists.serializers import PlaylistSerializer -def test_can_create_playlist_via_api(logged_in_client): +def test_can_create_playlist_via_api(logged_in_api_client): url = reverse('api:v1:playlists-list') data = { 'name': 'test', + 'privacy_level': 'everyone' } - response = logged_in_client.post(url, data) + response = logged_in_api_client.post(url, data) - playlist = logged_in_client.user.playlists.latest('id') + playlist = logged_in_api_client.user.playlists.latest('id') assert playlist.name == 'test' + assert playlist.privacy_level == 'everyone' -def test_can_add_playlist_track_via_api(factories, logged_in_client): +def test_playlist_inherits_user_privacy(logged_in_api_client): + url = reverse('api:v1:playlists-list') + user = logged_in_api_client.user + user.privacy_level = 'me' + user.save() + + data = { + 'name': 'test', + } + + response = logged_in_api_client.post(url, data) + playlist = user.playlists.latest('id') + assert playlist.privacy_level == user.privacy_level + + +def test_can_add_playlist_track_via_api(factories, logged_in_api_client): tracks = factories['music.Track'].create_batch(5) - playlist = factories['playlists.Playlist'](user=logged_in_client.user) + playlist = factories['playlists.Playlist'](user=logged_in_api_client.user) url = reverse('api:v1:playlist-tracks-list') data = { 'playlist': playlist.pk, 'track': tracks[0].pk } - response = logged_in_client.post(url, data) - plts = logged_in_client.user.playlists.latest('id').playlist_tracks.all() + response = logged_in_api_client.post(url, data) + plts = logged_in_api_client.user.playlists.latest('id').playlist_tracks.all() assert plts.first().track == tracks[0] -- GitLab