diff --git a/server/e2e/e2e_suite_test.go b/server/e2e/e2e_suite_test.go index be8a894d..dc8b178d 100644 --- a/server/e2e/e2e_suite_test.go +++ b/server/e2e/e2e_suite_test.go @@ -71,11 +71,11 @@ const ( // Shared test state var ( - ctx context.Context - ds *tests.MockDataStore - router *subsonic.Router - spy *spyStreamer - lib model.Library + ctx context.Context + ds *tests.MockDataStore + router *subsonic.Router + streamerSpy *spyStreamer + lib model.Library // Snapshot paths for fast DB restore dbFilePath string @@ -471,15 +471,15 @@ func setupTestDB() { ds = &tests.MockDataStore{RealDS: persistence.New(db.Db())} auth.Init(ds) - // Create the Subsonic Router with real DS, spy streamer, and real Decider - spy = &spyStreamer{} + // Create the Subsonic Router with real DS, streamer spy, and real Decider + streamerSpy = &spyStreamer{} decider := stream.NewTranscodeDecider(ds, noopFFmpeg{}) s := scanner.New(ctx, ds, artwork.NoopCacheWarmer(), events.NoopBroker(), playlists.NewPlaylists(ds), metrics.NewNoopInstance()) router = subsonic.New( ds, noopArtwork{}, - spy, + streamerSpy, noopArchiver{}, core.NewPlayers(ds), noopProvider{}, diff --git a/server/e2e/subsonic_media_retrieval_test.go b/server/e2e/subsonic_media_retrieval_test.go index 465082ac..f5138667 100644 --- a/server/e2e/subsonic_media_retrieval_test.go +++ b/server/e2e/subsonic_media_retrieval_test.go @@ -38,22 +38,22 @@ var _ = Describe("Media Retrieval Endpoints", Ordered, func() { w := doRawReq("stream", "id", trackID) Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("raw")) + Expect(streamerSpy.LastRequest.Format).To(Equal("raw")) }) It("streams raw when format=raw", func() { w := doRawReq("stream", "id", trackID, "format", "raw") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("raw")) + Expect(streamerSpy.LastRequest.Format).To(Equal("raw")) }) It("transcodes to different format with bitrate", func() { w := doRawReq("stream", "id", trackID, "format", "opus", "maxBitRate", "128") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) It("downsamples when only maxBitRate is specified (lower than source)", func() { @@ -63,45 +63,45 @@ var _ = Describe("Media Retrieval Endpoints", Ordered, func() { w := doRawReq("stream", "id", trackID, "maxBitRate", "128") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) It("streams raw when maxBitRate is higher than source", func() { w := doRawReq("stream", "id", trackID, "maxBitRate", "999") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("raw")) + Expect(streamerSpy.LastRequest.Format).To(Equal("raw")) }) It("streams raw when format matches source and no bitrate reduction", func() { w := doRawReq("stream", "id", trackID, "format", "mp3", "maxBitRate", "320") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("raw")) + Expect(streamerSpy.LastRequest.Format).To(Equal("raw")) }) It("transcodes when same format but lower bitrate", func() { w := doRawReq("stream", "id", trackID, "format", "mp3", "maxBitRate", "128") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("mp3")) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.Format).To(Equal("mp3")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) It("falls back to raw for unknown format", func() { w := doRawReq("stream", "id", trackID, "format", "xyz") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("raw")) + Expect(streamerSpy.LastRequest.Format).To(Equal("raw")) }) It("passes timeOffset through", func() { w := doRawReq("stream", "id", trackID, "format", "opus", "maxBitRate", "128", "timeOffset", "30") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) - Expect(spy.LastRequest.Offset).To(Equal(30)) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.Offset).To(Equal(30)) }) }) @@ -131,7 +131,7 @@ var _ = Describe("Media Retrieval Endpoints", Ordered, func() { w := doRawReq("download", "id", trackID) Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("raw")) + Expect(streamerSpy.LastRequest.Format).To(Equal("raw")) }) It("downloads with explicit format and bitrate", func() { @@ -141,8 +141,8 @@ var _ = Describe("Media Retrieval Endpoints", Ordered, func() { w := doRawReq("download", "id", trackID, "format", "opus", "bitrate", "128") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) It("returns error when downloads are disabled", func() { diff --git a/server/e2e/subsonic_stream_test.go b/server/e2e/subsonic_stream_test.go index 1ca99510..d144dc4e 100644 --- a/server/e2e/subsonic_stream_test.go +++ b/server/e2e/subsonic_stream_test.go @@ -33,25 +33,25 @@ var _ = Describe("stream.view (legacy streaming)", Ordered, func() { It("streams raw when no format or maxBitRate is specified", func() { w := doRawReq("stream", "id", flacTrackID) Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(BeElementOf("raw", "")) + Expect(streamerSpy.LastRequest.Format).To(BeElementOf("raw", "")) }) It("streams raw when format=raw is explicitly requested", func() { w := doRawReq("stream", "id", flacTrackID, "format", "raw") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(BeElementOf("raw", "")) + Expect(streamerSpy.LastRequest.Format).To(BeElementOf("raw", "")) }) It("streams raw when maxBitRate is >= source bitrate", func() { w := doRawReq("stream", "id", flacTrackID, "maxBitRate", "1000") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(BeElementOf("raw", "")) + Expect(streamerSpy.LastRequest.Format).To(BeElementOf("raw", "")) }) It("streams raw when format matches source and bitrate is not lower", func() { w := doRawReq("stream", "id", mp3TrackID, "format", "mp3", "maxBitRate", "320") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("raw")) + Expect(streamerSpy.LastRequest.Format).To(Equal("raw")) }) }) @@ -59,44 +59,44 @@ var _ = Describe("stream.view (legacy streaming)", Ordered, func() { It("transcodes to mp3 when format=mp3 is requested", func() { w := doRawReq("stream", "id", flacTrackID, "format", "mp3") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("mp3")) + Expect(streamerSpy.LastRequest.Format).To(Equal("mp3")) // Should use the mp3 default bitrate (192kbps) - Expect(spy.LastRequest.BitRate).To(Equal(192)) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(192)) }) It("transcodes to opus when format=opus is requested (no maxBitRate)", func() { w := doRawReq("stream", "id", flacTrackID, "format", "opus") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) // Should use the opus default bitrate (128kbps) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) It("transcodes to opus with specified maxBitRate", func() { w := doRawReq("stream", "id", flacTrackID, "format", "opus", "maxBitRate", "192") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) - Expect(spy.LastRequest.BitRate).To(Equal(192)) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(192)) }) It("transcodes to mp3 with specified maxBitRate", func() { w := doRawReq("stream", "id", flacTrackID, "format", "mp3", "maxBitRate", "128") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("mp3")) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.Format).To(Equal("mp3")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) It("transcodes MP3 to opus when format=opus is requested", func() { w := doRawReq("stream", "id", mp3TrackID, "format", "opus") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) }) It("transcodes same format when maxBitRate is lower than source", func() { w := doRawReq("stream", "id", mp3TrackID, "format", "mp3", "maxBitRate", "128") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("mp3")) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.Format).To(Equal("mp3")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) }) @@ -105,15 +105,15 @@ var _ = Describe("stream.view (legacy streaming)", Ordered, func() { conf.Server.DefaultDownsamplingFormat = "opus" w := doRawReq("stream", "id", flacTrackID, "maxBitRate", "192") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("opus")) - Expect(spy.LastRequest.BitRate).To(Equal(192)) + Expect(streamerSpy.LastRequest.Format).To(Equal("opus")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(192)) }) It("streams raw when maxBitRate >= source bitrate (no downsampling needed)", func() { conf.Server.DefaultDownsamplingFormat = "opus" w := doRawReq("stream", "id", mp3TrackID, "maxBitRate", "320") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(BeElementOf("raw", "")) + Expect(streamerSpy.LastRequest.Format).To(BeElementOf("raw", "")) }) }) @@ -121,7 +121,7 @@ var _ = Describe("stream.view (legacy streaming)", Ordered, func() { It("passes timeOffset to the stream request", func() { w := doRawReq("stream", "id", flacTrackID, "format", "mp3", "timeOffset", "30") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Offset).To(Equal(30)) + Expect(streamerSpy.LastRequest.Offset).To(Equal(30)) }) }) }) diff --git a/server/e2e/subsonic_transcode_test.go b/server/e2e/subsonic_transcode_test.go index 64d788b3..a9a180dc 100644 --- a/server/e2e/subsonic_transcode_test.go +++ b/server/e2e/subsonic_transcode_test.go @@ -544,8 +544,8 @@ var _ = Describe("Transcode Endpoints", Ordered, func() { // Stream using the token w := doRawReq("getTranscodeStream", "mediaId", flacTrackID, "mediaType", "song", "transcodeParams", token) Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("mp3")) - Expect(spy.LastRequest.BitRate).To(Equal(128)) + Expect(streamerSpy.LastRequest.Format).To(Equal("mp3")) + Expect(streamerSpy.LastRequest.BitRate).To(Equal(128)) }) }) }) @@ -617,7 +617,7 @@ var _ = Describe("Transcode Endpoints", Ordered, func() { w := doRawReq("getTranscodeStream", "mediaId", mp3TrackID, "mediaType", "song", "transcodeParams", token) Expect(w.Code).To(Equal(http.StatusOK)) // Direct play: format should be "raw" or empty - Expect(spy.LastRequest.Format).To(BeElementOf("raw", "")) + Expect(streamerSpy.LastRequest.Format).To(BeElementOf("raw", "")) }) It("streams transcoded FLAC to MP3", func() { @@ -631,7 +631,7 @@ var _ = Describe("Transcode Endpoints", Ordered, func() { // Stream using the token w := doRawReq("getTranscodeStream", "mediaId", flacTrackID, "mediaType", "song", "transcodeParams", token) Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Format).To(Equal("mp3")) + Expect(streamerSpy.LastRequest.Format).To(Equal("mp3")) }) It("passes offset through to stream request", func() { @@ -645,7 +645,7 @@ var _ = Describe("Transcode Endpoints", Ordered, func() { w := doRawReq("getTranscodeStream", "mediaId", mp3TrackID, "mediaType", "song", "transcodeParams", token, "offset", "30") Expect(w.Code).To(Equal(http.StatusOK)) - Expect(spy.LastRequest.Offset).To(Equal(30)) + Expect(streamerSpy.LastRequest.Offset).To(Equal(30)) }) }) })