From 0787e3e595c5be7406a999ef15b9d7df2fd1a7ed Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Sun, 22 Mar 2020 15:37:08 +0100 Subject: [PATCH] bolt provider: fix error handling for get users with username filter --- dataprovider/bolt.go | 7 ++++++- httpd/httpd_test.go | 17 +++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/dataprovider/bolt.go b/dataprovider/bolt.go index 47bd61c5..b9dad0ac 100644 --- a/dataprovider/bolt.go +++ b/dataprovider/bolt.go @@ -336,9 +336,14 @@ func (p BoltProvider) getUsers(limit int, offset int, order string, username str } if len(username) > 0 { if offset == 0 { - user, err := p.userExists(username) + var user User + user, err = p.userExists(username) if err == nil { users = append(users, HideUserSensitiveData(&user)) + return users, nil + } + if _, ok := err.(*RecordNotFoundError); ok { + err = nil } } return users, err diff --git a/httpd/httpd_test.go b/httpd/httpd_test.go index d90927b9..2201ded9 100644 --- a/httpd/httpd_test.go +++ b/httpd/httpd_test.go @@ -983,7 +983,7 @@ func TestUserBaseDir(t *testing.T) { providerConf.UsersBaseDir = homeBasePath err := dataprovider.Initialize(providerConf, configDir) if err != nil { - t.Errorf("error initializing data provider with users base dir") + t.Errorf("error initializing data provider with users base dir: %v", err) } httpd.SetDataProvider(dataprovider.GetProvider()) u := getTestUser() @@ -1014,9 +1014,6 @@ func TestUserBaseDir(t *testing.T) { } func TestProviderErrors(t *testing.T) { - if providerDriverName == dataprovider.BoltDataProviderName { - t.Skip("skipping test provider errors for bolt provider") - } dataProvider := dataprovider.GetProvider() dataprovider.Close(dataProvider) _, _, err := httpd.GetUserByID(0, http.StatusInternalServerError) @@ -1061,7 +1058,7 @@ func TestProviderErrors(t *testing.T) { os.RemoveAll(credentialsPath) err = dataprovider.Initialize(providerConf, configDir) if err != nil { - t.Errorf("error initializing data provider") + t.Errorf("error initializing data provider: %v", err) } httpd.SetDataProvider(dataprovider.GetProvider()) sftpd.SetDataProvider(dataprovider.GetProvider()) @@ -1074,7 +1071,7 @@ func TestDumpdata(t *testing.T) { providerConf := config.GetProviderConf() err := dataprovider.Initialize(providerConf, configDir) if err != nil { - t.Errorf("error initializing data provider") + t.Errorf("error initializing data provider:_%v", err) } httpd.SetDataProvider(dataprovider.GetProvider()) sftpd.SetDataProvider(dataprovider.GetProvider()) @@ -1107,6 +1104,9 @@ func TestDumpdata(t *testing.T) { } os.Chmod(backupsPath, 0755) } + dataProvider = dataprovider.GetProvider() + dataprovider.Close(dataProvider) + config.LoadConfig(configDir, "") providerConf = config.GetProviderConf() providerConf.CredentialsPath = credentialsPath os.RemoveAll(credentialsPath) @@ -2248,9 +2248,6 @@ func TestWebUserGCSMock(t *testing.T) { } func TestProviderClosedMock(t *testing.T) { - if providerDriverName == dataprovider.BoltDataProviderName { - t.Skip("skipping test provider errors for bolt provider") - } dataProvider := dataprovider.GetProvider() dataprovider.Close(dataProvider) req, _ := http.NewRequest(http.MethodGet, webUsersPath, nil) @@ -2270,7 +2267,7 @@ func TestProviderClosedMock(t *testing.T) { os.RemoveAll(credentialsPath) err := dataprovider.Initialize(providerConf, configDir) if err != nil { - t.Errorf("error initializing data provider") + t.Errorf("error initializing data provider: %v", err) } httpd.SetDataProvider(dataprovider.GetProvider()) sftpd.SetDataProvider(dataprovider.GetProvider())