72 lines
2.3 KiB
Go
72 lines
2.3 KiB
Go
package api
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/ponzischeme89/memby/server/internal/emby"
|
|
"github.com/ponzischeme89/memby/server/internal/store"
|
|
)
|
|
|
|
func TestSubtitleMIME(t *testing.T) {
|
|
tests := map[string]string{
|
|
"srt": "application/x-subrip",
|
|
"subrip": "application/x-subrip",
|
|
"webvtt": "text/vtt",
|
|
"ass": "text/x-ssa",
|
|
"mov_text": "application/x-quicktime-tx3g",
|
|
"pgssub": "",
|
|
}
|
|
for codec, want := range tests {
|
|
if got := subtitleMIME(codec, ""); got != want {
|
|
t.Errorf("subtitleMIME(%q) = %q, want %q", codec, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSelectPlaybackDeliveryUsesNegotiatedDirectStream(t *testing.T) {
|
|
source := emby.MediaSourceInfo{
|
|
SupportsDirectStream: true,
|
|
DirectStreamURL: "/Videos/item/stream.mp4",
|
|
TranscodingURL: "/Videos/item/master.m3u8",
|
|
}
|
|
got, method := selectPlaybackDelivery(source, false)
|
|
if got != source.DirectStreamURL || method != "DirectStream" {
|
|
t.Fatalf("selectPlaybackDelivery() = %q, %q", got, method)
|
|
}
|
|
}
|
|
|
|
func TestSelectPlaybackDeliveryCanForceCompatibleTranscode(t *testing.T) {
|
|
source := emby.MediaSourceInfo{
|
|
SupportsDirectPlay: true,
|
|
TranscodingURL: "/Videos/item/master.m3u8",
|
|
}
|
|
got, method := selectPlaybackDelivery(source, true)
|
|
if got != source.TranscodingURL || method != "Transcode" {
|
|
t.Fatalf("selectPlaybackDelivery() = %q, %q", got, method)
|
|
}
|
|
}
|
|
|
|
func TestSessionPlaybackCapabilitiesParseDecoderDetails(t *testing.T) {
|
|
legacy := sessionPlaybackCapabilities(store.Session{})
|
|
if legacy.HEVC {
|
|
t.Fatal("legacy client must not implicitly claim HEVC")
|
|
}
|
|
got := sessionPlaybackCapabilities(store.Session{ClientCapabilities: []string{
|
|
"video_h264_profile_high", "video_h264_level_52", "video_h264_max_3840x2160",
|
|
"video_hevc_decode", "video_hevc_profile_main10", "video_hevc_main10_level_153",
|
|
"video_hevc_max_3840x2160", "video_hevc_hdr10",
|
|
}})
|
|
if !got.HEVC || !got.HEVCMain10 || !got.HEVCHDR10 || got.HEVCMain10Level != 153 {
|
|
t.Fatalf("HEVC capabilities = %+v", got)
|
|
}
|
|
if got.H264Level != 52 || got.H264MaxWidth != 3840 || got.H264MaxHeight != 2160 {
|
|
t.Fatalf("H264 capabilities = %+v", got)
|
|
}
|
|
}
|
|
|
|
func TestSubtitleMIMEFallsBackToDeliveryExtension(t *testing.T) {
|
|
if got := subtitleMIME("", "https://emby.example/subtitles/4/stream.vtt?api_key=x"); got != "text/vtt" {
|
|
t.Fatalf("subtitleMIME delivery fallback = %q", got)
|
|
}
|
|
}
|