From a2d16caea048056c48cfa5a4798f69670e782372 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Tue, 16 Jun 2026 01:18:49 +0200 Subject: [PATCH] test: cover hls playlist response --- .../playback/handler/playlist_rewrite_test.go | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/internal/playback/handler/playlist_rewrite_test.go b/internal/playback/handler/playlist_rewrite_test.go index 91442bd..73a6c20 100644 --- a/internal/playback/handler/playlist_rewrite_test.go +++ b/internal/playback/handler/playlist_rewrite_test.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "mal/internal/domain" + "net/http" "strings" "testing" ) @@ -77,7 +78,45 @@ func TestRewriteHLSPlaylistProxiesSegmentAndKeyURIs(t *testing.T) { } func TestIsHLSPlaylistResponse(t *testing.T) { - if !isHLSPlaylistResponse("https://example.test/master.m3u8?token=abc", nil) { - t.Fatal("expected .m3u8 URL to be treated as playlist") + tests := []struct { + name string + target string + headers map[string]string + want bool + }{ + { + name: "playlist url", + target: "https://example.test/master.m3u8?token=abc", + want: true, + }, + { + name: "playlist content type", + target: "https://example.test/video.bin", + headers: map[string]string{ + "Content-Type": "application/x-mpegurl; charset=utf-8", + }, + want: true, + }, + { + name: "non playlist", + target: "https://example.test/video.bin", + want: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var headers http.Header + if len(tt.headers) > 0 { + headers = make(http.Header) + for key, value := range tt.headers { + headers.Set(key, value) + } + } + + if got := isHLSPlaylistResponse(tt.target, headers); got != tt.want { + t.Fatalf("isHLSPlaylistResponse() = %v, want %v", got, tt.want) + } + }) } }