75 lines
2.1 KiB
Go
75 lines
2.1 KiB
Go
|
|
package e2e
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/navidrome/navidrome/model"
|
||
|
|
"github.com/navidrome/navidrome/server/subsonic/responses"
|
||
|
|
. "github.com/onsi/ginkgo/v2"
|
||
|
|
. "github.com/onsi/gomega"
|
||
|
|
)
|
||
|
|
|
||
|
|
var _ = Describe("Multi-User Isolation", Ordered, func() {
|
||
|
|
var regularUser model.User
|
||
|
|
|
||
|
|
BeforeAll(func() {
|
||
|
|
setupTestDB()
|
||
|
|
|
||
|
|
regularUser = createUser("regular-1", "regular", "Regular User", false)
|
||
|
|
})
|
||
|
|
|
||
|
|
Describe("Admin-only endpoint restrictions", func() {
|
||
|
|
It("startScan fails for regular user", func() {
|
||
|
|
resp := doReqWithUser(regularUser, "startScan")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusFailed))
|
||
|
|
Expect(resp.Error).ToNot(BeNil())
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
Describe("Browsing as regular user", func() {
|
||
|
|
It("regular user can browse the library", func() {
|
||
|
|
resp := doReqWithUser(regularUser, "getArtists")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.Artist).ToNot(BeNil())
|
||
|
|
Expect(resp.Artist.Index).ToNot(BeEmpty())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("regular user can search", func() {
|
||
|
|
resp := doReqWithUser(regularUser, "search3", "query", "Beatles")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.SearchResult3).ToNot(BeNil())
|
||
|
|
Expect(resp.SearchResult3.Artist).ToNot(BeEmpty())
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
Describe("getUser authorization", func() {
|
||
|
|
It("regular user can get their own info", func() {
|
||
|
|
resp := doReqWithUser(regularUser, "getUser", "username", "regular")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.User.Username).To(Equal("regular"))
|
||
|
|
Expect(resp.User.AdminRole).To(BeFalse())
|
||
|
|
})
|
||
|
|
|
||
|
|
It("regular user cannot get another user's info", func() {
|
||
|
|
resp := doReqWithUser(regularUser, "getUser", "username", "admin")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusFailed))
|
||
|
|
Expect(resp.Error).ToNot(BeNil())
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
Describe("getUsers for regular user", func() {
|
||
|
|
It("returns only the requesting user's info", func() {
|
||
|
|
resp := doReqWithUser(regularUser, "getUsers")
|
||
|
|
|
||
|
|
Expect(resp.Status).To(Equal(responses.StatusOK))
|
||
|
|
Expect(resp.Users).ToNot(BeNil())
|
||
|
|
Expect(resp.Users.User).To(HaveLen(1))
|
||
|
|
Expect(resp.Users.User[0].Username).To(Equal("regular"))
|
||
|
|
Expect(resp.Users.User[0].AdminRole).To(BeFalse())
|
||
|
|
})
|
||
|
|
})
|
||
|
|
})
|