Files
gronod 7bcf5322e1 feat: emby-mcp 1.0.16 player owner filter and HA links
Expose session/last-used user and device IP on player rows. Filter
retrieve_player_list by users, merge GET /Devices when include_offline
is set, and resolve spoken names to HA media_player entities via
player_links (device_id or IP). PlayNow still requires a live session.
2026-09-25 19:58:58 +00:00

42 lines
1.1 KiB
Go

package server
import (
"testing"
"git.i3omb.com/gronod/emby-mcp/internal/config"
"git.i3omb.com/gronod/emby-mcp/internal/emby"
)
func TestResolvePlayerByAliasAndIP(t *testing.T) {
links := []config.PlayerLink{{
Names: []string{"lounge", "living room"},
HAEntity: "media_player.lounge_tv",
HASource: "Emby",
DeviceIP: "192.168.0.20",
EmbyDeviceID: "dev-lounge",
}}
live := []emby.PlayerSession{{
SessionID: "sess-1",
DeviceID: "dev-lounge",
DeviceName: "Lounge Shield",
DeviceIPAddress: "192.168.0.20",
UserName: "Gordon",
Online: true,
}}
got, ok := resolvePlayer("lounge", links, live)
if !ok || got.SessionID != "sess-1" || got.HAEntity != "media_player.lounge_tv" || got.WakeRequired {
t.Fatalf("%+v ok=%v", got, ok)
}
offline, ok := resolvePlayer("living room", links, nil)
if !ok || !offline.WakeRequired || offline.SessionID != "" {
t.Fatalf("offline %+v ok=%v", offline, ok)
}
}
func TestResolvePlayerUnknown(t *testing.T) {
_, ok := resolvePlayer("attic", nil, nil)
if ok {
t.Fatal("expected miss")
}
}