128 lines
3.6 KiB
Go
128 lines
3.6 KiB
Go
|
|
package e2e
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/Masterminds/squirrel"
|
||
|
|
"github.com/navidrome/navidrome/conf"
|
||
|
|
"github.com/navidrome/navidrome/model"
|
||
|
|
"github.com/navidrome/navidrome/server/subsonic/responses"
|
||
|
|
. "github.com/onsi/ginkgo/v2"
|
||
|
|
. "github.com/onsi/gomega"
|
||
|
|
)
|
||
|
|
|
||
|
|
var _ = Describe("Sharing Endpoints", Ordered, func() {
|
||
|
|
var shareID string
|
||
|
|
var albumID string
|
||
|
|
var songID string
|
||
|
|
|
||
|
|
BeforeAll(func() {
|
||
|
|
conf.Server.EnableSharing = true
|
||
|
|
setupTestDB()
|
||
|
|
|
||
|
|
albums, err := ds.Album(ctx).GetAll(model.QueryOptions{
|
||
|
|
Filters: squirrel.Eq{"album.name": "Abbey Road"},
|
||
|
|
})
|
||
|
|
Expect(err).ToNot(HaveOccurred())
|
||
|
|
Expect(albums).ToNot(BeEmpty())
|
||
|
|
albumID = albums[0].ID
|
||
|
|
|
||
|
|
songs, err := ds.MediaFile(ctx).GetAll(model.QueryOptions{
|
||
|
|
Filters: squirrel.Eq{"title": "Come Together"},
|
||
|
|
})
|
||
|
|
Expect(err).ToNot(HaveOccurred())
|
||
|
|
Expect(songs).ToNot(BeEmpty())
|
||
|
|
songID = songs[0].ID
|
||
|
|
})
|
||
|
|
|
||
|
|
It("getShares returns empty initially", func() {
|
||
|
|
resp := doReq("getShares")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.Shares).ToNot(BeNil())
|
||
|
|
Expect(resp.Shares.Share).To(BeEmpty())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("createShare creates a share for an album", func() {
|
||
|
|
resp := doReq("createShare", "id", albumID, "description", "Check out this album")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.Shares).ToNot(BeNil())
|
||
|
|
Expect(resp.Shares.Share).To(HaveLen(1))
|
||
|
|
|
||
|
|
share := resp.Shares.Share[0]
|
||
|
|
Expect(share.ID).ToNot(BeEmpty())
|
||
|
|
Expect(share.Description).To(Equal("Check out this album"))
|
||
|
|
Expect(share.Username).To(Equal(adminUser.UserName))
|
||
|
|
shareID = share.ID
|
||
|
|
})
|
||
|
|
|
||
|
|
It("getShares returns the created share", func() {
|
||
|
|
resp := doReq("getShares")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.Shares).ToNot(BeNil())
|
||
|
|
Expect(resp.Shares.Share).To(HaveLen(1))
|
||
|
|
|
||
|
|
share := resp.Shares.Share[0]
|
||
|
|
Expect(share.ID).To(Equal(shareID))
|
||
|
|
Expect(share.Description).To(Equal("Check out this album"))
|
||
|
|
Expect(share.Username).To(Equal(adminUser.UserName))
|
||
|
|
Expect(share.Entry).ToNot(BeEmpty())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("updateShare modifies the description", func() {
|
||
|
|
resp := doReq("updateShare", "id", shareID, "description", "Updated description")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
|
||
|
|
// Verify update
|
||
|
|
resp = doReq("getShares")
|
||
|
|
Expect(resp.Shares.Share).To(HaveLen(1))
|
||
|
|
Expect(resp.Shares.Share[0].Description).To(Equal("Updated description"))
|
||
|
|
})
|
||
|
|
|
||
|
|
It("deleteShare removes it", func() {
|
||
|
|
resp := doReq("deleteShare", "id", shareID)
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
})
|
||
|
|
|
||
|
|
It("getShares returns empty after deletion", func() {
|
||
|
|
resp := doReq("getShares")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.Shares).ToNot(BeNil())
|
||
|
|
Expect(resp.Shares.Share).To(BeEmpty())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("createShare works with a song ID", func() {
|
||
|
|
resp := doReq("createShare", "id", songID, "description", "Great song")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.Shares).ToNot(BeNil())
|
||
|
|
Expect(resp.Shares.Share).To(HaveLen(1))
|
||
|
|
Expect(resp.Shares.Share[0].Description).To(Equal("Great song"))
|
||
|
|
Expect(resp.Shares.Share[0].Entry).To(HaveLen(1))
|
||
|
|
})
|
||
|
|
|
||
|
|
It("createShare returns error when id parameter is missing", func() {
|
||
|
|
resp := doReq("createShare")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusFailed))
|
||
|
|
Expect(resp.Error).ToNot(BeNil())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("updateShare returns error when id parameter is missing", func() {
|
||
|
|
resp := doReq("updateShare")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusFailed))
|
||
|
|
Expect(resp.Error).ToNot(BeNil())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("deleteShare returns error when id parameter is missing", func() {
|
||
|
|
resp := doReq("deleteShare")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusFailed))
|
||
|
|
Expect(resp.Error).ToNot(BeNil())
|
||
|
|
})
|
||
|
|
})
|