81 lines
2.5 KiB
Go
81 lines
2.5 KiB
Go
|
|
package e2e
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/navidrome/navidrome/server/subsonic/responses"
|
||
|
|
. "github.com/onsi/ginkgo/v2"
|
||
|
|
. "github.com/onsi/gomega"
|
||
|
|
)
|
||
|
|
|
||
|
|
var _ = Describe("Internet Radio Endpoints", Ordered, func() {
|
||
|
|
var radioID string
|
||
|
|
|
||
|
|
BeforeAll(func() {
|
||
|
|
setupTestDB()
|
||
|
|
})
|
||
|
|
|
||
|
|
It("getInternetRadioStations returns empty initially", func() {
|
||
|
|
resp := doReq("getInternetRadioStations")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.InternetRadioStations).ToNot(BeNil())
|
||
|
|
Expect(resp.InternetRadioStations.Radios).To(BeEmpty())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("createInternetRadioStation adds a station", func() {
|
||
|
|
resp := doReq("createInternetRadioStation",
|
||
|
|
"streamUrl", "https://stream.example.com/radio",
|
||
|
|
"name", "Test Radio",
|
||
|
|
"homepageUrl", "https://example.com",
|
||
|
|
)
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
})
|
||
|
|
|
||
|
|
It("getInternetRadioStations returns the created station", func() {
|
||
|
|
resp := doReq("getInternetRadioStations")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.InternetRadioStations).ToNot(BeNil())
|
||
|
|
Expect(resp.InternetRadioStations.Radios).To(HaveLen(1))
|
||
|
|
|
||
|
|
radio := resp.InternetRadioStations.Radios[0]
|
||
|
|
Expect(radio.Name).To(Equal("Test Radio"))
|
||
|
|
Expect(radio.StreamUrl).To(Equal("https://stream.example.com/radio"))
|
||
|
|
Expect(radio.HomepageUrl).To(Equal("https://example.com"))
|
||
|
|
radioID = radio.ID
|
||
|
|
Expect(radioID).ToNot(BeEmpty())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("updateInternetRadioStation modifies the station", func() {
|
||
|
|
resp := doReq("updateInternetRadioStation",
|
||
|
|
"id", radioID,
|
||
|
|
"streamUrl", "https://stream.example.com/radio-v2",
|
||
|
|
"name", "Updated Radio",
|
||
|
|
"homepageUrl", "https://updated.example.com",
|
||
|
|
)
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
|
||
|
|
// Verify update
|
||
|
|
resp = doReq("getInternetRadioStations")
|
||
|
|
Expect(resp.InternetRadioStations.Radios).To(HaveLen(1))
|
||
|
|
Expect(resp.InternetRadioStations.Radios[0].Name).To(Equal("Updated Radio"))
|
||
|
|
Expect(resp.InternetRadioStations.Radios[0].StreamUrl).To(Equal("https://stream.example.com/radio-v2"))
|
||
|
|
Expect(resp.InternetRadioStations.Radios[0].HomepageUrl).To(Equal("https://updated.example.com"))
|
||
|
|
})
|
||
|
|
|
||
|
|
It("deleteInternetRadioStation removes it", func() {
|
||
|
|
resp := doReq("deleteInternetRadioStation", "id", radioID)
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
})
|
||
|
|
|
||
|
|
It("getInternetRadioStations returns empty after deletion", func() {
|
||
|
|
resp := doReq("getInternetRadioStations")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.InternetRadioStations).ToNot(BeNil())
|
||
|
|
Expect(resp.InternetRadioStations.Radios).To(BeEmpty())
|
||
|
|
})
|
||
|
|
})
|