package e2e
import (
"net/http"
"github.com/navidrome/navidrome/server/jellyfin/dto"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("Smoke", func() {
BeforeEach(func() { setupTestDB() })
It("serves public system info without auth", func() {
w := rawReq("GET", "/System/Info/Public", "")
Expect(w.Code).To(Equal(http.StatusOK))
var info map[string]any
parseInto(w, &info)
Expect(info).To(HaveKey("ServerName"))
Expect(info).To(HaveKey("Version"))
})
It("rejects an authenticated endpoint without a token", func() {
w := rawReq("GET", "/Items?IncludeItemTypes=MusicAlbum&Recursive=true", "")
Expect(w.Code).To(Equal(http.StatusUnauthorized))
})
It("lists the seeded albums for an authenticated user", func() {
q := queryResult(get("/Items?IncludeItemTypes=MusicAlbum&Recursive=true"))
Expect(q.TotalRecordCount).To(Equal(5))
names := make([]string, 0, len(q.Items))
for _, it := range q.Items {
Expect(it.Type).To(Equal("MusicAlbum"))
names = append(names, it.Name)
}
Expect(names).To(ConsistOf("Abbey Road", "Help!", "IV", "Kind of Blue", "Singles"))
})
It("resolves a seeded album id round-trip (encoded in the URL)", func() {
id := albumID("Abbey Road")
var item dto.BaseItemDto
parseInto(get("/Items/"+enc(id)), &item)
Expect(item.Id).To(Equal(enc(id)))
Expect(item.Name).To(Equal("Abbey Road"))
Expect(item.Type).To(Equal("MusicAlbum"))
})
})