forked from compose/transporter
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathclient_test.go
More file actions
113 lines (104 loc) · 2.16 KB
/
client_test.go
File metadata and controls
113 lines (104 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package file
import (
"errors"
"fmt"
"io/ioutil"
"os"
"reflect"
"strings"
"testing"
"github.com/compose/transporter/log"
)
var (
defaultClient = &Client{
uri: DefaultURI,
}
errBadClient = errors.New("bad client")
clientTests = []struct {
name string
options []ClientOptionFunc // input
expected *Client // expected result
expectedErr error // expected error
}{
{
"default_client",
make([]ClientOptionFunc, 0),
defaultClient,
nil,
},
{
"with_uri_fake",
[]ClientOptionFunc{WithURI("/path/to/a/file.out")},
&Client{
uri: "/path/to/a/file.out",
},
nil,
},
{
"with_err",
[]ClientOptionFunc{WithErr()},
defaultClient,
errBadClient,
},
}
)
func WithErr() ClientOptionFunc {
return func(c *Client) error {
return errBadClient
}
}
func TestNewClient(t *testing.T) {
for _, ct := range clientTests {
actual, err := NewClient(ct.options...)
if err != ct.expectedErr {
t.Fatalf("[%s] unexpected NewClient error, expected %+v, got %+v\n", ct.name, ct.expectedErr, err)
}
if err == nil && !reflect.DeepEqual(ct.expected, actual) {
t.Errorf("[%s] Client mismatch\nexpected %+v\ngot %+v", ct.name, ct.expected, actual)
}
}
}
var (
connectTests = []struct {
name string
client *Client
expectedErr error
cleanupFunc func(dir string)
}{
{
"default connect",
defaultClient,
nil,
func(dir string) {},
},
{
"default connect",
&Client{
uri: fmt.Sprintf("file://%s/file_test.out", testTmpDir("connect_test")),
},
nil,
func(dir string) {
log.Infof("removing dir: %s", dir)
os.RemoveAll(dir)
},
},
}
)
func TestConnect(t *testing.T) {
if testing.Short() {
t.Skip("skipping Connect in short mode")
}
ioutil.TempDir("", "prefix")
for _, ct := range connectTests {
_, err := ct.client.Connect()
if err != ct.expectedErr {
t.Fatalf("[%s] unexpected Connect error, expected %+v, got %+v\n", ct.name, ct.expectedErr, err)
}
if err == nil {
ct.client.Close()
}
tDir := strings.Replace(ct.client.uri, "file://", "", 1)
tDir = strings.Replace(tDir, "file_test.out", "", 1)
ct.cleanupFunc(tDir)
}
}