mirror of
https://gitlab.bertha.cloud/partitio/Nextcloud-Partitio/gonextcloud
synced 2024-11-22 05:56:25 +00:00
Fix User UpdateError
This commit is contained in:
parent
4925b52a0e
commit
3e33481fb4
15
shares.go
15
shares.go
@ -95,13 +95,13 @@ func (s *Shares) Delete(shareID int) error {
|
|||||||
// Update update share details
|
// Update update share details
|
||||||
// expireDate expireDate expects a well formatted date string, e.g. ‘YYYY-MM-DD’
|
// expireDate expireDate expects a well formatted date string, e.g. ‘YYYY-MM-DD’
|
||||||
func (s *Shares) Update(shareUpdate types.ShareUpdate) error {
|
func (s *Shares) Update(shareUpdate types.ShareUpdate) error {
|
||||||
errs := make(chan types.UpdateError)
|
errs := make(chan *types.UpdateError)
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(4)
|
wg.Add(4)
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := s.UpdatePassword(shareUpdate.ShareID, shareUpdate.Password); err != nil {
|
if err := s.UpdatePassword(shareUpdate.ShareID, shareUpdate.Password); err != nil {
|
||||||
errs <- types.UpdateError{
|
errs <- &types.UpdateError{
|
||||||
Field: "password",
|
Field: "password",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ func (s *Shares) Update(shareUpdate types.ShareUpdate) error {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := s.UpdateExpireDate(shareUpdate.ShareID, shareUpdate.ExpireDate); err != nil {
|
if err := s.UpdateExpireDate(shareUpdate.ShareID, shareUpdate.ExpireDate); err != nil {
|
||||||
errs <- types.UpdateError{
|
errs <- &types.UpdateError{
|
||||||
Field: "expireDate",
|
Field: "expireDate",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
@ -119,7 +119,7 @@ func (s *Shares) Update(shareUpdate types.ShareUpdate) error {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := s.UpdatePermissions(shareUpdate.ShareID, shareUpdate.Permissions); err != nil {
|
if err := s.UpdatePermissions(shareUpdate.ShareID, shareUpdate.Permissions); err != nil {
|
||||||
errs <- types.UpdateError{
|
errs <- &types.UpdateError{
|
||||||
Field: "permissions",
|
Field: "permissions",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
@ -128,7 +128,7 @@ func (s *Shares) Update(shareUpdate types.ShareUpdate) error {
|
|||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := s.UpdatePublicUpload(shareUpdate.ShareID, shareUpdate.PublicUpload); err != nil {
|
if err := s.UpdatePublicUpload(shareUpdate.ShareID, shareUpdate.PublicUpload); err != nil {
|
||||||
errs <- types.UpdateError{
|
errs <- &types.UpdateError{
|
||||||
Field: "publicUpload",
|
Field: "publicUpload",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
@ -138,7 +138,10 @@ func (s *Shares) Update(shareUpdate types.ShareUpdate) error {
|
|||||||
wg.Wait()
|
wg.Wait()
|
||||||
close(errs)
|
close(errs)
|
||||||
}()
|
}()
|
||||||
return types.NewUpdateError(errs)
|
if err := types.NewUpdateError(errs); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//UpdateExpireDate updates the share's expire date
|
//UpdateExpireDate updates the share's expire date
|
||||||
|
@ -40,18 +40,17 @@ func (e *UserUpdateError) Error() string {
|
|||||||
for k, e := range e.Errors {
|
for k, e := range e.Errors {
|
||||||
errors = append(errors, fmt.Sprintf("%s: %v", k, e))
|
errors = append(errors, fmt.Sprintf("%s: %v", k, e))
|
||||||
}
|
}
|
||||||
return strings.Join(errors, ",")
|
return strings.Join(errors, ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
//NewUpdateError returns an UpdateError based on an UpdateError channel
|
//NewUpdateError returns an UpdateError based on an UpdateError channel
|
||||||
func NewUpdateError(errors chan UpdateError) *UserUpdateError {
|
func NewUpdateError(errors chan *UpdateError) *UserUpdateError {
|
||||||
var ue UserUpdateError
|
ue := UserUpdateError{map[string]error{}}
|
||||||
for e := range errors {
|
for e := range errors {
|
||||||
if ue.Errors == nil {
|
if e != nil {
|
||||||
ue.Errors = map[string]error{e.Field: e.Error}
|
|
||||||
}
|
|
||||||
ue.Errors[e.Field] = e.Error
|
ue.Errors[e.Field] = e.Error
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if len(ue.Errors) > 0 {
|
if len(ue.Errors) > 0 {
|
||||||
return &ue
|
return &ue
|
||||||
}
|
}
|
||||||
|
46
types/errors_test.go
Normal file
46
types/errors_test.go
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"strconv"
|
||||||
|
"sync"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestUserUpdateErrors(t *testing.T) {
|
||||||
|
exp := map[string]error{}
|
||||||
|
errs := make(chan *UpdateError)
|
||||||
|
go func() {
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
f := strconv.Itoa(i)
|
||||||
|
e := errors.New(f)
|
||||||
|
err := UpdateError{
|
||||||
|
Field: f,
|
||||||
|
Error: e,
|
||||||
|
}
|
||||||
|
exp[f] = e
|
||||||
|
errs <- &err
|
||||||
|
}
|
||||||
|
close(errs)
|
||||||
|
}()
|
||||||
|
uerrs := NewUpdateError(errs)
|
||||||
|
assert.Equal(t, exp, uerrs.Errors)
|
||||||
|
assert.NotEmpty(t, uerrs.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUserUpdateErrorsNil(t *testing.T) {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
errs := make(chan *UpdateError)
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
errs <- nil
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
go func() {
|
||||||
|
wg.Wait()
|
||||||
|
close(errs)
|
||||||
|
}()
|
||||||
|
uerrs := NewUpdateError(errs)
|
||||||
|
assert.Nil(t, uerrs)
|
||||||
|
}
|
12
users.go
12
users.go
@ -191,7 +191,7 @@ func (u *Users) SendWelcomeEmail(name string) error {
|
|||||||
//Update takes a *types.Users struct to update the user's information
|
//Update takes a *types.Users struct to update the user's information
|
||||||
func (u *Users) Update(user *types.UserDetails) error {
|
func (u *Users) Update(user *types.UserDetails) error {
|
||||||
m := structs.Map(user)
|
m := structs.Map(user)
|
||||||
errs := make(chan types.UpdateError)
|
errs := make(chan *types.UpdateError)
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
for k := range m {
|
for k := range m {
|
||||||
// Filter updatable fields
|
// Filter updatable fields
|
||||||
@ -216,7 +216,7 @@ func (u *Users) Update(user *types.UserDetails) error {
|
|||||||
go func(key string, value string) {
|
go func(key string, value string) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err := u.updateAttribute(user.ID, strings.ToLower(key), value); err != nil {
|
if err := u.updateAttribute(user.ID, strings.ToLower(key), value); err != nil {
|
||||||
errs <- types.UpdateError{
|
errs <- &types.UpdateError{
|
||||||
Field: key,
|
Field: key,
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
@ -228,7 +228,11 @@ func (u *Users) Update(user *types.UserDetails) error {
|
|||||||
wg.Wait()
|
wg.Wait()
|
||||||
close(errs)
|
close(errs)
|
||||||
}()
|
}()
|
||||||
return types.NewUpdateError(errs)
|
// Warning : we actually need to check the *err
|
||||||
|
if err := types.NewUpdateError(errs); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//UpdateEmail update the user's email
|
//UpdateEmail update the user's email
|
||||||
@ -355,7 +359,7 @@ func (u *Users) baseRequest(method string, ro *req.RequestOptions, subRoutes ...
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ignoredUserField(key string) bool {
|
func ignoredUserField(key string) bool {
|
||||||
keys := []string{"Email", "DisplayName", "Phone", "Address", "Website", "Twitter", "Quota"}
|
keys := []string{"Email", "Displayname", "Phone", "Address", "Website", "Twitter", "Quota"}
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
if key == k {
|
if key == k {
|
||||||
return false
|
return false
|
||||||
|
Loading…
Reference in New Issue
Block a user