update
Some checks failed
Pipeline: Test, Lint, Build / Get version info (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test JS code (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint i18n files (push) Has been cancelled
Pipeline: Test, Lint, Build / Check Docker configuration (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v5) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v6) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v7) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to GHCR (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to Docker Hub (push) Has been cancelled
Pipeline: Test, Lint, Build / Cleanup digest artifacts (push) Has been cancelled
Pipeline: Test, Lint, Build / Build Windows installers (push) Has been cancelled
Pipeline: Test, Lint, Build / Package/Release (push) Has been cancelled
Pipeline: Test, Lint, Build / Upload Linux PKG (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
POEditor import / update-translations (push) Has been cancelled
Some checks failed
Pipeline: Test, Lint, Build / Get version info (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test JS code (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint i18n files (push) Has been cancelled
Pipeline: Test, Lint, Build / Check Docker configuration (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v5) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v6) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v7) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to GHCR (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to Docker Hub (push) Has been cancelled
Pipeline: Test, Lint, Build / Cleanup digest artifacts (push) Has been cancelled
Pipeline: Test, Lint, Build / Build Windows installers (push) Has been cancelled
Pipeline: Test, Lint, Build / Package/Release (push) Has been cancelled
Pipeline: Test, Lint, Build / Upload Linux PKG (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
POEditor import / update-translations (push) Has been cancelled
This commit is contained in:
83
model/user_test.go
Normal file
83
model/user_test.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package model_test
|
||||
|
||||
import (
|
||||
"github.com/navidrome/navidrome/model"
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = Describe("User", func() {
|
||||
var user model.User
|
||||
var libraries model.Libraries
|
||||
|
||||
BeforeEach(func() {
|
||||
libraries = model.Libraries{
|
||||
{ID: 1, Name: "Rock Library", Path: "/music/rock"},
|
||||
{ID: 2, Name: "Jazz Library", Path: "/music/jazz"},
|
||||
{ID: 3, Name: "Classical Library", Path: "/music/classical"},
|
||||
}
|
||||
|
||||
user = model.User{
|
||||
ID: "user1",
|
||||
UserName: "testuser",
|
||||
Name: "Test User",
|
||||
Email: "test@example.com",
|
||||
IsAdmin: false,
|
||||
Libraries: libraries,
|
||||
}
|
||||
})
|
||||
|
||||
Describe("HasLibraryAccess", func() {
|
||||
Context("when user is admin", func() {
|
||||
BeforeEach(func() {
|
||||
user.IsAdmin = true
|
||||
})
|
||||
|
||||
It("returns true for any library ID", func() {
|
||||
Expect(user.HasLibraryAccess(1)).To(BeTrue())
|
||||
Expect(user.HasLibraryAccess(99)).To(BeTrue())
|
||||
Expect(user.HasLibraryAccess(-1)).To(BeTrue())
|
||||
})
|
||||
|
||||
It("returns true even when user has no libraries assigned", func() {
|
||||
user.Libraries = nil
|
||||
Expect(user.HasLibraryAccess(1)).To(BeTrue())
|
||||
})
|
||||
})
|
||||
|
||||
Context("when user is not admin", func() {
|
||||
BeforeEach(func() {
|
||||
user.IsAdmin = false
|
||||
})
|
||||
|
||||
It("returns true for libraries the user has access to", func() {
|
||||
Expect(user.HasLibraryAccess(1)).To(BeTrue())
|
||||
Expect(user.HasLibraryAccess(2)).To(BeTrue())
|
||||
Expect(user.HasLibraryAccess(3)).To(BeTrue())
|
||||
})
|
||||
|
||||
It("returns false for libraries the user does not have access to", func() {
|
||||
Expect(user.HasLibraryAccess(4)).To(BeFalse())
|
||||
Expect(user.HasLibraryAccess(99)).To(BeFalse())
|
||||
Expect(user.HasLibraryAccess(-1)).To(BeFalse())
|
||||
Expect(user.HasLibraryAccess(0)).To(BeFalse())
|
||||
})
|
||||
|
||||
It("returns false when user has no libraries assigned", func() {
|
||||
user.Libraries = nil
|
||||
Expect(user.HasLibraryAccess(1)).To(BeFalse())
|
||||
})
|
||||
|
||||
It("handles duplicate library IDs correctly", func() {
|
||||
user.Libraries = model.Libraries{
|
||||
{ID: 1, Name: "Library 1", Path: "/music1"},
|
||||
{ID: 1, Name: "Library 1 Duplicate", Path: "/music1-dup"},
|
||||
{ID: 2, Name: "Library 2", Path: "/music2"},
|
||||
}
|
||||
Expect(user.HasLibraryAccess(1)).To(BeTrue())
|
||||
Expect(user.HasLibraryAccess(2)).To(BeTrue())
|
||||
Expect(user.HasLibraryAccess(3)).To(BeFalse())
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user