package models
import (
"encoding/xml"
"testing"
)
func TestListMediaServersResponse_Populated(t *testing.T) {
raw := `` +
`` +
`` +
``
var resp ListMediaServersResponse
if err := xml.Unmarshal([]byte(raw), &resp); err != nil {
t.Fatalf("unmarshal failed: %v", err)
}
if len(resp.MediaServers) != 2 {
t.Fatalf("expected 2 servers, got %d", len(resp.MediaServers))
}
first := resp.MediaServers[0]
if first.ID != "uuid:1234-5678" {
t.Errorf("server[0].ID = %q; want %q", first.ID, "uuid:1234-5678")
}
if first.MAC != "AA:BB:CC:DD:EE:FF" {
t.Errorf("server[0].MAC = %q; want %q", first.MAC, "AA:BB:CC:DD:EE:FF")
}
if first.IP != "192.0.2.5" {
t.Errorf("server[0].IP = %q; want %q", first.IP, "192.0.2.5")
}
if first.FriendlyName != "My NAS" {
t.Errorf("server[0].FriendlyName = %q; want %q", first.FriendlyName, "My NAS")
}
if first.Manufacturer != "ExampleCorp" {
t.Errorf("server[0].Manufacturer = %q; want %q", first.Manufacturer, "ExampleCorp")
}
if first.ModelName != "NAS-3000" {
t.Errorf("server[0].ModelName = %q; want %q", first.ModelName, "NAS-3000")
}
if first.ModelDescription != "Home NAS" {
t.Errorf("server[0].ModelDescription = %q; want %q", first.ModelDescription, "Home NAS")
}
if first.Location != "http://192.0.2.5:8200/rootDesc.xml" {
t.Errorf("server[0].Location = %q; want %q", first.Location, "http://192.0.2.5:8200/rootDesc.xml")
}
second := resp.MediaServers[1]
if second.ID != "uuid:AAAA-BBBB" {
t.Errorf("server[1].ID = %q; want %q", second.ID, "uuid:AAAA-BBBB")
}
if second.ModelDescription != "" {
t.Errorf("server[1].ModelDescription should be empty for omitted attr, got %q", second.ModelDescription)
}
}
func TestListMediaServersResponse_Empty(t *testing.T) {
// Speakers can return a self-closing element when no servers are visible.
for _, raw := range []string{
``,
``,
} {
var resp ListMediaServersResponse
if err := xml.Unmarshal([]byte(raw), &resp); err != nil {
t.Fatalf("unmarshal %q failed: %v", raw, err)
}
if len(resp.MediaServers) != 0 {
t.Errorf("expected 0 servers for %q, got %d", raw, len(resp.MediaServers))
}
}
}