restic/internal/backend/sftp/config_test.go

91 lines
2 KiB
Go
Raw Normal View History

2015-12-28 14:51:24 +00:00
package sftp
import "testing"
2015-12-28 14:57:20 +00:00
var configTests = []struct {
in string
2015-12-28 14:51:24 +00:00
cfg Config
}{
// first form, user specified sftp://user@host/dir
{
"sftp://user@host/dir/subdir",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host", Path: "dir/subdir"},
2015-12-28 14:51:24 +00:00
},
{
"sftp://host/dir/subdir",
2017-04-10 20:41:06 +00:00
Config{Host: "host", Path: "dir/subdir"},
2015-12-28 14:51:24 +00:00
},
{
"sftp://host//dir/subdir",
2017-04-10 20:41:06 +00:00
Config{Host: "host", Path: "/dir/subdir"},
2015-12-28 14:51:24 +00:00
},
{
"sftp://host:10022//dir/subdir",
2017-04-10 20:41:06 +00:00
Config{Host: "host:10022", Path: "/dir/subdir"},
},
{
"sftp://user@host:10022//dir/subdir",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host:10022", Path: "/dir/subdir"},
},
{
"sftp://user@host/dir/subdir/../other",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host", Path: "dir/other"},
},
{
"sftp://user@host/dir///subdir",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host", Path: "dir/subdir"},
},
2015-12-28 14:51:24 +00:00
// second form, user specified sftp:user@host:/dir
{
"sftp:user@host:/dir/subdir",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host", Path: "/dir/subdir"},
2015-12-28 14:51:24 +00:00
},
{
"sftp:host:../dir/subdir",
2017-04-10 20:41:06 +00:00
Config{Host: "host", Path: "../dir/subdir"},
2015-12-28 14:51:24 +00:00
},
{
"sftp:user@host:dir/subdir:suffix",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host", Path: "dir/subdir:suffix"},
},
{
"sftp:user@host:dir/subdir/../other",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host", Path: "dir/other"},
},
{
"sftp:user@host:dir///subdir",
2017-04-10 20:41:06 +00:00
Config{User: "user", Host: "host", Path: "dir/subdir"},
2015-12-28 14:51:24 +00:00
},
}
func TestParseConfig(t *testing.T) {
2015-12-28 14:57:20 +00:00
for i, test := range configTests {
cfg, err := ParseConfig(test.in)
2015-12-28 14:51:24 +00:00
if err != nil {
t.Errorf("test %d:%s failed: %v", i, test.in, err)
2015-12-28 14:51:24 +00:00
continue
}
if cfg != test.cfg {
t.Errorf("test %d:\ninput:\n %s\n wrong config, want:\n %v\ngot:\n %v",
i, test.in, test.cfg, cfg)
2015-12-28 14:51:24 +00:00
continue
}
}
}
var configTestsInvalid = []string{
"sftp://host:dir",
}
func TestParseConfigInvalid(t *testing.T) {
for i, test := range configTestsInvalid {
_, err := ParseConfig(test)
if err == nil {
t.Errorf("test %d: invalid config %s did not return an error", i, test)
continue
}
}
}