From 903e3f070fa1cb83c879b60e4e2bf7333d18a000 Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Thu, 12 Mar 2026 12:29:37 +0000 Subject: [PATCH] fix(subsonic): always return required playqueue fields (#5172) --- server/e2e/subsonic_bookmarks_test.go | 22 +++++++++++++++++++--- server/subsonic/bookmarks.go | 12 ++++++++++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/server/e2e/subsonic_bookmarks_test.go b/server/e2e/subsonic_bookmarks_test.go index d0dc06208..726b41743 100644 --- a/server/e2e/subsonic_bookmarks_test.go +++ b/server/e2e/subsonic_bookmarks_test.go @@ -77,12 +77,28 @@ var _ = Describe("Bookmark and PlayQueue Endpoints", Ordered, func() { } }) - It("getPlayQueue returns empty when nothing saved", func() { + It("getPlayQueue returns minimum required fields when nothing specified", func() { resp := doReq("getPlayQueue") Expect(resp.Status).To(Equal(responses.StatusOK)) - // When no play queue exists, PlayQueue should be nil (no entry returned) - Expect(resp.PlayQueue).To(BeNil()) + Expect(resp.PlayQueue).ToNot(BeNil()) + Expect(resp.PlayQueue.Entry).To(HaveLen(0)) + Expect(resp.PlayQueue.Current).To(BeEmpty()) + Expect(resp.PlayQueue.Position).To(Equal(int64(0))) + Expect(resp.PlayQueue.Username).To(Equal(adminUser.UserName)) + Expect(resp.PlayQueue.ChangedBy).To(BeEmpty()) + }) + + It("getPlayQueueByIndex returns minimum required fields when nothing specified", func() { + resp := doReq("getPlayQueueByIndex") + + Expect(resp.Status).To(Equal(responses.StatusOK)) + Expect(resp.PlayQueueByIndex).ToNot(BeNil()) + Expect(resp.PlayQueueByIndex.Entry).To(HaveLen(0)) + Expect(resp.PlayQueueByIndex.CurrentIndex).To(BeNil()) + Expect(resp.PlayQueueByIndex.Position).To(Equal(int64(0))) + Expect(resp.PlayQueueByIndex.Username).To(Equal(adminUser.UserName)) + Expect(resp.PlayQueueByIndex.ChangedBy).To(BeEmpty()) }) It("savePlayQueue stores current play queue", func() { diff --git a/server/subsonic/bookmarks.go b/server/subsonic/bookmarks.go index b1e71b1c7..337712750 100644 --- a/server/subsonic/bookmarks.go +++ b/server/subsonic/bookmarks.go @@ -78,7 +78,11 @@ func (api *Router) GetPlayQueue(r *http.Request) (*responses.Subsonic, error) { return nil, err } if pq == nil || len(pq.Items) == 0 { - return newResponse(), nil + response := newResponse() + response.PlayQueue = &responses.PlayQueue{ + Username: user.UserName, + } + return response, nil } response := newResponse() @@ -145,7 +149,11 @@ func (api *Router) GetPlayQueueByIndex(r *http.Request) (*responses.Subsonic, er return nil, err } if pq == nil || len(pq.Items) == 0 { - return newResponse(), nil + response := newResponse() + response.PlayQueueByIndex = &responses.PlayQueueByIndex{ + Username: user.UserName, + } + return response, nil } response := newResponse()