package sftp

import "testing"

var configTests = []struct {
	s   string
	cfg Config
}{
	// first form, user specified sftp://user@host/dir
	{
		"sftp://user@host/dir/subdir",
		Config{User: "user", Host: "host", Dir: "dir/subdir"},
	},
	{
		"sftp://host/dir/subdir",
		Config{Host: "host", Dir: "dir/subdir"},
	},
	{
		"sftp://host//dir/subdir",
		Config{Host: "host", Dir: "/dir/subdir"},
	},

	// second form, user specified sftp:user@host:/dir
	{
		"sftp:foo@bar:/baz/quux",
		Config{User: "foo", Host: "bar", Dir: "/baz/quux"},
	},
	{
		"sftp:bar:../baz/quux",
		Config{Host: "bar", Dir: "../baz/quux"},
	},
	{
		"sftp:fux@bar:baz/qu:ux",
		Config{User: "fux", Host: "bar", Dir: "baz/qu:ux"},
	},
}

func TestParseConfig(t *testing.T) {
	for i, test := range configTests {
		cfg, err := ParseConfig(test.s)
		if err != nil {
			t.Errorf("test %d failed: %v", i, err)
			continue
		}

		if cfg != test.cfg {
			t.Errorf("test %d: wrong config, want:\n  %v\ngot:\n  %v",
				i, test.cfg, cfg)
			continue
		}
	}
}