diff --git a/sftpd/sftpd_test.go b/sftpd/sftpd_test.go index bc095cbc..89ab950d 100644 --- a/sftpd/sftpd_test.go +++ b/sftpd/sftpd_test.go @@ -156,7 +156,7 @@ func TestMain(m *testing.M) { scriptArgs = "%*" } else { sftpdConf.Actions.ExecuteOn = []string{"download", "upload", "rename", "delete", "ssh_cmd"} - sftpdConf.Actions.Command = "/usr/bin/true" + sftpdConf.Actions.Command = "/bin/true" sftpdConf.Actions.HTTPNotificationURL = "http://127.0.0.1:8083/" scriptArgs = "$@" scpPath, err = exec.LookPath("scp") @@ -691,7 +691,7 @@ func TestHomeSpecialChars(t *testing.T) { assert.NoError(t, err) files, err := client.ReadDir(".") assert.NoError(t, err) - assert.GreaterOrEqual(t, len(files), 1) + assert.Equal(t, 1, len(files)) err = client.Remove(testFileName) assert.NoError(t, err) err = os.Remove(testFilePath) @@ -762,16 +762,20 @@ func TestMultiStepLoginKeyAndPwd(t *testing.T) { }...) user, _, err := httpd.AddUser(u, http.StatusOK) assert.NoError(t, err) - _, err = getSftpClient(user, true) - assert.Error(t, err, "login with public key is disallowed and must fail") - _, err = getSftpClient(user, true) - assert.Error(t, err, "login with password is disallowed and must fail") + client, err := getSftpClient(user, true) + if !assert.Error(t, err, "login with public key is disallowed and must fail") { + client.Close() + } + client, err = getSftpClient(user, true) + if !assert.Error(t, err, "login with password is disallowed and must fail") { + client.Close() + } key, _ := ssh.ParsePrivateKey([]byte(testPrivateKey)) authMethods := []ssh.AuthMethod{ ssh.PublicKeys(key), ssh.Password(defaultPassword), } - client, err := getCustomAuthSftpClient(user, authMethods) + client, err = getCustomAuthSftpClient(user, authMethods) if assert.NoError(t, err) { defer client.Close() assert.NoError(t, checkBasicSFTP(client)) @@ -804,8 +808,10 @@ func TestMultiStepLoginKeyAndKeyInt(t *testing.T) { assert.NoError(t, err) err = ioutil.WriteFile(keyIntAuthPath, getKeyboardInteractiveScriptContent([]string{"1", "2"}, 0, false, 1), 0755) assert.NoError(t, err) - _, err = getSftpClient(user, true) - assert.Error(t, err, "login with public key is disallowed and must fail") + client, err := getSftpClient(user, true) + if !assert.Error(t, err, "login with public key is disallowed and must fail") { + client.Close() + } key, _ := ssh.ParsePrivateKey([]byte(testPrivateKey)) authMethods := []ssh.AuthMethod{ @@ -814,7 +820,7 @@ func TestMultiStepLoginKeyAndKeyInt(t *testing.T) { return []string{"1", "2"}, nil }), } - client, err := getCustomAuthSftpClient(user, authMethods) + client, err = getCustomAuthSftpClient(user, authMethods) if assert.NoError(t, err) { defer client.Close() assert.NoError(t, checkBasicSFTP(client)) @@ -941,7 +947,8 @@ func TestDeniedLoginMethods(t *testing.T) { assert.NoError(t, err) client, err = getSftpClient(user, true) if assert.NoError(t, err) { - client.Close() + defer client.Close() + assert.NoError(t, checkBasicSFTP(client)) } user.Password = defaultPassword user, _, err = httpd.UpdateUser(user, http.StatusOK) @@ -956,7 +963,8 @@ func TestDeniedLoginMethods(t *testing.T) { assert.NoError(t, err) client, err = getSftpClient(user, false) if assert.NoError(t, err) { - client.Close() + defer client.Close() + assert.NoError(t, checkBasicSFTP(client)) } _, err = httpd.RemoveUser(user, http.StatusOK) assert.NoError(t, err) @@ -1215,12 +1223,12 @@ func TestLoginExternalAuthPwdAndPubKey(t *testing.T) { httpd.SetDataProvider(dataprovider.GetProvider()) sftpd.SetDataProvider(dataprovider.GetProvider()) + testFileSize := int64(65535) client, err := getSftpClient(u, usePubKey) if assert.NoError(t, err) { defer client.Close() testFileName := "test_file.dat" testFilePath := filepath.Join(homeBasePath, testFileName) - testFileSize := int64(65535) err = createTestFile(testFilePath, testFileSize) assert.NoError(t, err) err = sftpUploadFile(testFilePath, testFileName, testFileSize, client) @@ -1248,7 +1256,8 @@ func TestLoginExternalAuthPwdAndPubKey(t *testing.T) { assert.Equal(t, 1, len(users)) user := users[0] assert.Equal(t, 0, len(user.PublicKeys)) - assert.Greater(t, user.UsedQuotaSize, int64(0)) + assert.Equal(t, testFileSize, user.UsedQuotaSize) + assert.Equal(t, 1, user.UsedQuotaFiles) _, err = httpd.RemoveUser(user, http.StatusOK) assert.NoError(t, err) @@ -1508,8 +1517,10 @@ func TestMaxSessions(t *testing.T) { if assert.NoError(t, err) { defer client.Close() assert.NoError(t, checkBasicSFTP(client)) - _, err = getSftpClient(user, usePubKey) - assert.Error(t, err, "max sessions exceeded, new login should not succeed") + c, err := getSftpClient(user, usePubKey) + if !assert.Error(t, err, "max sessions exceeded, new login should not succeed") { + c.Close() + } } _, err = httpd.RemoveUser(user, http.StatusOK) assert.NoError(t, err) @@ -3134,7 +3145,7 @@ func TestBasicGitCommands(t *testing.T) { assert.NoError(t, err) out, err = pushToGitRepo(clonePath) - if assert.NoError(t, err, "unexpected error, out: %v", string(out)) { + if !assert.NoError(t, err, "unexpected error, out: %v", string(out)) { printLatestLogs(10) }