mirror of
https://github.com/navidrome/navidrome.git
synced 2026-11-08 11:18:41 +01:00
Resolve conflicts with the stateless-repositories refactor (#6149): - port podcast repositories, model interfaces, mocks, service and handlers to per-call ctx - podcast channel repo now implements generic rest.Repository/Persistable - register podcast repos in SQLStore and MockDataStore - merge OpenSubsonic extensions (apiKeyAuthentication + podcast extensions) - renumber podcast migrations after upstream's latest (20260930...)
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package subsonic
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/navidrome/navidrome/model"
|
|
"github.com/navidrome/navidrome/model/request"
|
|
"github.com/navidrome/navidrome/server/subsonic/responses"
|
|
"github.com/navidrome/navidrome/tests"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Bookmarks", func() {
|
|
var router *Router
|
|
var ds *tests.MockDataStore
|
|
var mfRepo *tests.MockMediaFileRepo
|
|
var ctx context.Context
|
|
|
|
BeforeEach(func() {
|
|
ds = &tests.MockDataStore{}
|
|
router = New(ds, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
|
|
ctx = request.WithUser(context.Background(), model.User{ID: "u1", UserName: "u1"})
|
|
mfRepo = ds.MediaFile().(*tests.MockMediaFileRepo)
|
|
mfRepo.SetData(model.MediaFiles{{ID: "visible"}})
|
|
})
|
|
|
|
Describe("CreateBookmark", func() {
|
|
It("rejects an id the user cannot read", func() {
|
|
r := newGetRequest("id=hidden", "position=1").WithContext(ctx)
|
|
|
|
_, err := router.CreateBookmark(r)
|
|
|
|
Expect(err).To(HaveOccurred())
|
|
Expect(mapToSubsonicError(err).code).To(Equal(responses.ErrorDataNotFound))
|
|
Expect(mfRepo.BookmarksAdded).To(BeEmpty())
|
|
})
|
|
|
|
It("accepts an id the user can read", func() {
|
|
r := newGetRequest("id=visible", "position=1").WithContext(ctx)
|
|
|
|
_, err := router.CreateBookmark(r)
|
|
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(mfRepo.BookmarksAdded).To(ConsistOf("visible"))
|
|
})
|
|
})
|
|
})
|