package e2eimport ("context""encoding/json""net""time""github.com/navidrome/navidrome/server/jellyfin". "github.com/onsi/ginkgo/v2". "github.com/onsi/gomega")var _ = Describe("Auto discovery", func() {BeforeEach(func() { setupTestDB() })It("advertises the same Id and Name as /System/Info/Public", func() {server, err := net.ListenPacket("udp4", "127.0.0.1:0")Expect(err).ToNot(HaveOccurred())client, err := net.ListenPacket("udp4", "127.0.0.1:0")Expect(err).ToNot(HaveOccurred())DeferCleanup(client.Close)ctx, cancel := context.WithCancel(context.Background())done := make(chan struct{})go func() {defer close(done)jellyfin.NewDiscovery(ds).ServeOn(ctx, server)}()DeferCleanup(func() {cancel()Eventually(done).Should(BeClosed())})_, err = client.WriteTo([]byte("who is JellyfinServer?"), server.LocalAddr())Expect(err).ToNot(HaveOccurred())Expect(client.SetReadDeadline(time.Now().Add(time.Second))).To(Succeed())buf := make([]byte, 1024)n, _, err := client.ReadFrom(buf)Expect(err).ToNot(HaveOccurred())var reply map[string]anyExpect(json.Unmarshal(buf[:n], &reply)).To(Succeed())var pub map[string]anyparseInto(rawReq("GET", "/System/Info/Public", ""), &pub)Expect(reply["Id"]).To(Equal(pub["Id"]))Expect(reply["Name"]).To(Equal(pub["ServerName"]))Expect(reply["Address"]).To(HaveSuffix("/jellyfin"))})})