Browse Source

bolt provider: fix error handling for get users with username filter

Nicola Murino 5 years ago
parent
commit
0787e3e595
2 changed files with 13 additions and 11 deletions
  1. 6 1
      dataprovider/bolt.go
  2. 7 10
      httpd/httpd_test.go

+ 6 - 1
dataprovider/bolt.go

@@ -336,9 +336,14 @@ func (p BoltProvider) getUsers(limit int, offset int, order string, username str
 	}
 	}
 	if len(username) > 0 {
 	if len(username) > 0 {
 		if offset == 0 {
 		if offset == 0 {
-			user, err := p.userExists(username)
+			var user User
+			user, err = p.userExists(username)
 			if err == nil {
 			if err == nil {
 				users = append(users, HideUserSensitiveData(&user))
 				users = append(users, HideUserSensitiveData(&user))
+				return users, nil
+			}
+			if _, ok := err.(*RecordNotFoundError); ok {
+				err = nil
 			}
 			}
 		}
 		}
 		return users, err
 		return users, err

+ 7 - 10
httpd/httpd_test.go

@@ -983,7 +983,7 @@ func TestUserBaseDir(t *testing.T) {
 	providerConf.UsersBaseDir = homeBasePath
 	providerConf.UsersBaseDir = homeBasePath
 	err := dataprovider.Initialize(providerConf, configDir)
 	err := dataprovider.Initialize(providerConf, configDir)
 	if err != nil {
 	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())
 	httpd.SetDataProvider(dataprovider.GetProvider())
 	u := getTestUser()
 	u := getTestUser()
@@ -1014,9 +1014,6 @@ func TestUserBaseDir(t *testing.T) {
 }
 }
 
 
 func TestProviderErrors(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 := dataprovider.GetProvider()
 	dataprovider.Close(dataProvider)
 	dataprovider.Close(dataProvider)
 	_, _, err := httpd.GetUserByID(0, http.StatusInternalServerError)
 	_, _, err := httpd.GetUserByID(0, http.StatusInternalServerError)
@@ -1061,7 +1058,7 @@ func TestProviderErrors(t *testing.T) {
 	os.RemoveAll(credentialsPath)
 	os.RemoveAll(credentialsPath)
 	err = dataprovider.Initialize(providerConf, configDir)
 	err = dataprovider.Initialize(providerConf, configDir)
 	if err != nil {
 	if err != nil {
-		t.Errorf("error initializing data provider")
+		t.Errorf("error initializing data provider: %v", err)
 	}
 	}
 	httpd.SetDataProvider(dataprovider.GetProvider())
 	httpd.SetDataProvider(dataprovider.GetProvider())
 	sftpd.SetDataProvider(dataprovider.GetProvider())
 	sftpd.SetDataProvider(dataprovider.GetProvider())
@@ -1074,7 +1071,7 @@ func TestDumpdata(t *testing.T) {
 	providerConf := config.GetProviderConf()
 	providerConf := config.GetProviderConf()
 	err := dataprovider.Initialize(providerConf, configDir)
 	err := dataprovider.Initialize(providerConf, configDir)
 	if err != nil {
 	if err != nil {
-		t.Errorf("error initializing data provider")
+		t.Errorf("error initializing data provider:_%v", err)
 	}
 	}
 	httpd.SetDataProvider(dataprovider.GetProvider())
 	httpd.SetDataProvider(dataprovider.GetProvider())
 	sftpd.SetDataProvider(dataprovider.GetProvider())
 	sftpd.SetDataProvider(dataprovider.GetProvider())
@@ -1107,6 +1104,9 @@ func TestDumpdata(t *testing.T) {
 		}
 		}
 		os.Chmod(backupsPath, 0755)
 		os.Chmod(backupsPath, 0755)
 	}
 	}
+	dataProvider = dataprovider.GetProvider()
+	dataprovider.Close(dataProvider)
+	config.LoadConfig(configDir, "")
 	providerConf = config.GetProviderConf()
 	providerConf = config.GetProviderConf()
 	providerConf.CredentialsPath = credentialsPath
 	providerConf.CredentialsPath = credentialsPath
 	os.RemoveAll(credentialsPath)
 	os.RemoveAll(credentialsPath)
@@ -2248,9 +2248,6 @@ func TestWebUserGCSMock(t *testing.T) {
 }
 }
 
 
 func TestProviderClosedMock(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 := dataprovider.GetProvider()
 	dataprovider.Close(dataProvider)
 	dataprovider.Close(dataProvider)
 	req, _ := http.NewRequest(http.MethodGet, webUsersPath, nil)
 	req, _ := http.NewRequest(http.MethodGet, webUsersPath, nil)
@@ -2270,7 +2267,7 @@ func TestProviderClosedMock(t *testing.T) {
 	os.RemoveAll(credentialsPath)
 	os.RemoveAll(credentialsPath)
 	err := dataprovider.Initialize(providerConf, configDir)
 	err := dataprovider.Initialize(providerConf, configDir)
 	if err != nil {
 	if err != nil {
-		t.Errorf("error initializing data provider")
+		t.Errorf("error initializing data provider: %v", err)
 	}
 	}
 	httpd.SetDataProvider(dataprovider.GetProvider())
 	httpd.SetDataProvider(dataprovider.GetProvider())
 	sftpd.SetDataProvider(dataprovider.GetProvider())
 	sftpd.SetDataProvider(dataprovider.GetProvider())