mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-11-23 22:04:50 +02:00
Added a compatibility layer that will convert newline delimited keys to array when the user is fetched from the database. This code will be removed in future versions please update your public keys, you only need to resave the users using the REST API.
139 lines
3.6 KiB
Go
139 lines
3.6 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/drakkan/sftpgo/dataprovider"
|
|
)
|
|
|
|
func TestGetRespStatus(t *testing.T) {
|
|
var err error
|
|
err = &dataprovider.MethodDisabledError{}
|
|
respStatus := getRespStatus(err)
|
|
if respStatus != http.StatusForbidden {
|
|
t.Errorf("wrong resp status extected: %d got: %d", http.StatusForbidden, respStatus)
|
|
}
|
|
err = fmt.Errorf("generic error")
|
|
respStatus = getRespStatus(err)
|
|
if respStatus != http.StatusInternalServerError {
|
|
t.Errorf("wrong resp status extected: %d got: %d", http.StatusInternalServerError, respStatus)
|
|
}
|
|
}
|
|
|
|
func TestCheckResponse(t *testing.T) {
|
|
err := checkResponse(200, 201, nil)
|
|
if err == nil {
|
|
t.Errorf("check must fail")
|
|
}
|
|
err = checkResponse(400, 400, nil)
|
|
if err != nil {
|
|
t.Errorf("test must succeed, error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestCheckUser(t *testing.T) {
|
|
expected := dataprovider.User{}
|
|
actual := dataprovider.User{}
|
|
actual.Password = "password"
|
|
err := checkUser(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("actual password must be nil")
|
|
}
|
|
actual.Password = ""
|
|
actual.PublicKey = []string{"pub key"}
|
|
err = checkUser(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("actual public key must be nil")
|
|
}
|
|
actual.PublicKey = []string{}
|
|
err = checkUser(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("actual ID must be > 0")
|
|
}
|
|
expected.ID = 1
|
|
actual.ID = 2
|
|
err = checkUser(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("actual ID must be equal to expected ID")
|
|
}
|
|
expected.ID = 2
|
|
actual.ID = 2
|
|
expected.Permissions = []string{dataprovider.PermCreateDirs, dataprovider.PermDelete, dataprovider.PermDownload}
|
|
actual.Permissions = []string{dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks}
|
|
err = checkUser(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("Permissions are not equal")
|
|
}
|
|
expected.Permissions = append(expected.Permissions, dataprovider.PermRename)
|
|
err = checkUser(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("Permissions are not equal")
|
|
}
|
|
}
|
|
|
|
func TestCompareUserFields(t *testing.T) {
|
|
expected := dataprovider.User{}
|
|
actual := dataprovider.User{}
|
|
expected.Username = "test"
|
|
err := compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("Username does not match")
|
|
}
|
|
expected.Username = ""
|
|
expected.HomeDir = "homedir"
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("HomeDir does not match")
|
|
}
|
|
expected.HomeDir = ""
|
|
expected.UID = 1
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("UID does not match")
|
|
}
|
|
expected.UID = 0
|
|
expected.GID = 1
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("GID does not match")
|
|
}
|
|
expected.GID = 0
|
|
expected.MaxSessions = 2
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("MaxSessions do not match")
|
|
}
|
|
expected.MaxSessions = 0
|
|
expected.QuotaSize = 4096
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("QuotaSize does not match")
|
|
}
|
|
expected.QuotaSize = 0
|
|
expected.QuotaFiles = 2
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("QuotaFiles do not match")
|
|
}
|
|
expected.QuotaFiles = 0
|
|
expected.Permissions = []string{dataprovider.PermCreateDirs}
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("Permissions are not equal")
|
|
}
|
|
expected.Permissions = nil
|
|
expected.UploadBandwidth = 64
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("UploadBandwidth does not match")
|
|
}
|
|
expected.UploadBandwidth = 0
|
|
expected.DownloadBandwidth = 128
|
|
err = compareEqualsUserFields(expected, actual)
|
|
if err == nil {
|
|
t.Errorf("DownloadBandwidth does not match")
|
|
}
|
|
}
|