diff --git a/persistence/user_repository.go b/persistence/user_repository.go index 00eebf13..ca6f9823 100644 --- a/persistence/user_repository.go +++ b/persistence/user_repository.go @@ -63,7 +63,9 @@ func (r *userRepository) Put(u *model.User) error { u.ID = uuid.NewString() } u.UpdatedAt = time.Now() - _ = r.encryptPassword(u) + if u.NewPassword != "" { + _ = r.encryptPassword(u) + } values, _ := toSqlArgs(*u) delete(values, "current_password") update := Update(r.tableName).Where(Eq{"id": u.ID}).SetMap(values) diff --git a/persistence/user_repository_test.go b/persistence/user_repository_test.go index 766f1846..9a2c3c91 100644 --- a/persistence/user_repository_test.go +++ b/persistence/user_repository_test.go @@ -48,6 +48,24 @@ var _ = Describe("UserRepository", func() { Expect(actual.Name).To(Equal("Admin")) Expect(actual.Password).To(Equal("wordpass")) }) + It("updates the name and keep the same password", func() { + usr.Name = "Jane Doe" + usr.NewPassword = "" + Expect(repo.Put(&usr)).To(BeNil()) + + actual, err := repo.FindByUsernameWithPassword("admin") + Expect(err).ToNot(HaveOccurred()) + Expect(actual.Name).To(Equal("Jane Doe")) + Expect(actual.Password).To(Equal("wordpass")) + }) + It("updates password if specified", func() { + usr.NewPassword = "newpass" + Expect(repo.Put(&usr)).To(BeNil()) + + actual, err := repo.FindByUsernameWithPassword("admin") + Expect(err).ToNot(HaveOccurred()) + Expect(actual.Password).To(Equal("newpass")) + }) }) Describe("validatePasswordChange", func() {