package config import ( "fmt" "testing" "github.com/stretchr/testify/require" ) func TestTransportConnect(t *testing.T) { tmpl := ` jobs: - name: foo type: push connect: %s filesystems: {"<": true} snapshotting: type: manual pruning: keep_sender: - type: last_n count: 10 keep_receiver: - type: last_n count: 10 ` mconf := func(s string) string { return fmt.Sprintf(tmpl, s) } type test struct { Name string ExpectError bool Connect string } testTable := []test{ { Name: "tcp_with_address_and_port", ExpectError: false, Connect: ` type: tcp address: 10.0.0.23:42 `, }, { Name: "tls_with_host_and_port", ExpectError: false, Connect: ` type: tls address: "server1.foo.bar:8888" ca: /etc/zrepl/ca.crt cert: /etc/zrepl/backupserver.fullchain key: /etc/zrepl/backupserver.key server_cn: "server1" `, }, { Name: "tcp_without_port", ExpectError: true, Connect: ` type: tcp address: 10.0.0.23 `, }, { Name: "tls_without_port", ExpectError: true, Connect: ` type: tls address: 10.0.0.23 ca: /etc/zrepl/ca.crt cert: /etc/zrepl/backupserver.fullchain key: /etc/zrepl/backupserver.key server_cn: "server1" `, }, } for _, tc := range testTable { t.Run(tc.Name, func(t *testing.T) { require.NotEmpty(t, tc.Connect) connect := trimSpaceEachLineAndPad(tc.Connect, " ") conf := mconf(connect) config, err := testConfig(t, conf) if tc.ExpectError && err == nil { t.Errorf("expected test failure, but got valid config %v", config) return } if !tc.ExpectError && err != nil { t.Errorf("not expecint test failure but got error: %s", err) return } t.Logf("error=%v", err) t.Logf("config=%v", config) }) } }