Fix DevAutoCreateAdminPassword
This commit is contained in:
@@ -47,12 +47,12 @@ func createInitialAdminUser(ds model.DataStore, initialPassword string) error {
|
||||
log.Warn("Creating initial admin user. This should only be used for development purposes!!",
|
||||
"user", consts.DevInitialUserName, "password", initialPassword, "id", id)
|
||||
initialUser := model.User{
|
||||
ID: id,
|
||||
UserName: consts.DevInitialUserName,
|
||||
Name: consts.DevInitialName,
|
||||
Email: "",
|
||||
Password: initialPassword,
|
||||
IsAdmin: true,
|
||||
ID: id,
|
||||
UserName: consts.DevInitialUserName,
|
||||
Name: consts.DevInitialName,
|
||||
Email: "",
|
||||
NewPassword: initialPassword,
|
||||
IsAdmin: true,
|
||||
}
|
||||
err := users.Put(&initialUser)
|
||||
if err != nil {
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/navidrome/navidrome/model"
|
||||
"github.com/navidrome/navidrome/tests"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = Describe("initial_setup", func() {
|
||||
var ds model.DataStore
|
||||
|
||||
BeforeEach(func() {
|
||||
ds = &tests.MockDataStore{}
|
||||
})
|
||||
|
||||
Describe("createInitialAdminUser", func() {
|
||||
It("creates a new admin user with specified password if User table is empty", func() {
|
||||
Expect(createInitialAdminUser(ds, "pass123")).To(BeNil())
|
||||
ur := ds.User(context.TODO())
|
||||
admin, err := ur.FindByUsername("admin")
|
||||
Expect(err).To(BeNil())
|
||||
Expect(admin.Password).To(Equal("pass123"))
|
||||
})
|
||||
|
||||
It("does not create a new admin user if User table is not empty", func() {
|
||||
Expect(createInitialAdminUser(ds, "first")).To(BeNil())
|
||||
ur := ds.User(context.TODO())
|
||||
Expect(ur.CountAll()).To(Equal(int64(1)))
|
||||
Expect(createInitialAdminUser(ds, "second")).To(BeNil())
|
||||
Expect(ur.CountAll()).To(Equal(int64(1)))
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -36,10 +36,12 @@ func newPostRequest(queryParam string, formFields ...string) *http.Request {
|
||||
var _ = Describe("Middlewares", func() {
|
||||
var next *mockHandler
|
||||
var w *httptest.ResponseRecorder
|
||||
var ds model.DataStore
|
||||
|
||||
BeforeEach(func() {
|
||||
next = &mockHandler{}
|
||||
w = httptest.NewRecorder()
|
||||
ds = &tests.MockDataStore{}
|
||||
})
|
||||
|
||||
Describe("ParsePostForm", func() {
|
||||
@@ -115,11 +117,13 @@ var _ = Describe("Middlewares", func() {
|
||||
})
|
||||
|
||||
Describe("Authenticate", func() {
|
||||
var ds model.DataStore
|
||||
BeforeEach(func() {
|
||||
ds = &tests.MockDataStore{}
|
||||
ur := ds.User(context.TODO())
|
||||
_ = ur.Put(&model.User{
|
||||
UserName: "admin",
|
||||
NewPassword: "wordpass",
|
||||
})
|
||||
})
|
||||
|
||||
It("passes authentication with correct credentials", func() {
|
||||
r := newGetRequest("u=admin", "p=wordpass")
|
||||
cp := authenticate(ds)(next)
|
||||
@@ -220,16 +224,18 @@ var _ = Describe("Middlewares", func() {
|
||||
})
|
||||
|
||||
Describe("validateUser", func() {
|
||||
var ds model.DataStore
|
||||
BeforeEach(func() {
|
||||
ds = &tests.MockDataStore{}
|
||||
ur := ds.User(context.TODO())
|
||||
_ = ur.Put(&model.User{
|
||||
UserName: "admin",
|
||||
NewPassword: "wordpass",
|
||||
})
|
||||
})
|
||||
|
||||
Context("Plaintext password", func() {
|
||||
It("authenticates with plaintext password ", func() {
|
||||
usr, err := validateUser(context.TODO(), ds, "admin", "wordpass", "", "", "")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(usr).To(Equal(&model.User{UserName: "admin", Password: "wordpass"}))
|
||||
Expect(usr.UserName).To(Equal("admin"))
|
||||
})
|
||||
|
||||
It("fails authentication with wrong password", func() {
|
||||
@@ -242,7 +248,7 @@ var _ = Describe("Middlewares", func() {
|
||||
It("authenticates with simple encoded password ", func() {
|
||||
usr, err := validateUser(context.TODO(), ds, "admin", "enc:776f726470617373", "", "", "")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(usr).To(Equal(&model.User{UserName: "admin", Password: "wordpass"}))
|
||||
Expect(usr.UserName).To(Equal("admin"))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -250,7 +256,7 @@ var _ = Describe("Middlewares", func() {
|
||||
It("authenticates with token based authentication", func() {
|
||||
usr, err := validateUser(context.TODO(), ds, "admin", "", "23b342970e25c7928831c3317edd0b67", "retnlmjetrymazgkt", "")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(usr).To(Equal(&model.User{UserName: "admin", Password: "wordpass"}))
|
||||
Expect(usr.UserName).To(Equal("admin"))
|
||||
})
|
||||
|
||||
It("fails if salt is missing", func() {
|
||||
@@ -273,7 +279,7 @@ var _ = Describe("Middlewares", func() {
|
||||
usr, err := validateUser(context.TODO(), ds, "admin", "", "", "", validToken)
|
||||
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(usr).To(Equal(&model.User{UserName: "admin", Password: "wordpass"}))
|
||||
Expect(usr.UserName).To(Equal("admin"))
|
||||
})
|
||||
|
||||
It("fails if JWT token is invalid", func() {
|
||||
|
||||
Reference in New Issue
Block a user