From 2a3f43ecb14ac90b0b58a6bcde70de94664b41e6 Mon Sep 17 00:00:00 2001 From: Eliot Berriot 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 | 35 +++++++++++++++++++++------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index 1a88d231e..f78b5b801 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 943de03e1..f3084e6a0 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_api_client.post(url, data) + + playlist = logged_in_api_client.user.playlists.latest('id') + assert playlist.name == 'test' + assert playlist.privacy_level == 'everyone' + + +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_client.post(url, data) - - playlist = logged_in_client.user.playlists.latest('id') - assert playlist.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_client): +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]