@@ -20,49 +20,62 @@ const (
20
20
)
21
21
22
22
func TestPostgres (t * testing.T ) {
23
+ type result struct {
24
+ parseErr bool
25
+ pingOk bool
26
+ pingDeterminate bool
27
+ }
23
28
tests := []struct {
24
- input string
25
- wantErr bool
26
- wantPing bool
29
+ input string
30
+ want result
27
31
}{
28
32
{
29
- input : "//localhost:5432/foo?sslmode=disable&password=" + postgresPass ,
30
- wantPing : true ,
33
+ input : "//localhost:5432/foo?sslmode=disable&password=" + postgresPass ,
34
+ want : result {pingOk : true , pingDeterminate : true },
35
+ },
36
+ {
37
+ input : "//localhost:5432/foo?sslmode=disable&user=" + postgresUser + "&password=" + postgresPass ,
38
+ want : result {pingOk : true , pingDeterminate : true },
31
39
},
32
40
{
33
- input : "//localhost:5432 /foo?sslmode=disable&user=" + postgresUser + " &password=" + postgresPass ,
34
- wantPing : true ,
41
+ input : "//localhost/foo?sslmode=disable&port=5432 &password=" + postgresPass ,
42
+ want : result { pingOk : true , pingDeterminate : true } ,
35
43
},
36
44
{
37
- input : "//localhost/foo?sslmode=disable&port=5432& password=" + postgresPass ,
38
- wantPing : true ,
45
+ input : "//localhost:5432 /foo?password=" + postgresPass ,
46
+ want : result { pingOk : false , pingDeterminate : false } ,
39
47
},
40
48
{
41
- input : "//localhost:5432/foo?password=" + postgresPass ,
42
- wantPing : false ,
49
+ input : "//localhost:5432/foo?sslmode=disable& password=foo" ,
50
+ want : result { pingOk : false , pingDeterminate : true } ,
43
51
},
44
52
{
45
- input : "//localhost:5432/foo?sslmode=disable&password =foo" ,
46
- wantPing : false ,
53
+ input : "//localhost:5432/foo?sslmode=disable&user =foo&password=" + postgresPass ,
54
+ want : result { pingOk : false , pingDeterminate : true } ,
47
55
},
48
56
{
49
- input : "//localhost :5432/foo?sslmode=disable&user=foo&password=" + postgresPass ,
50
- wantPing : false ,
57
+ input : "//badhost :5432/foo?sslmode=disable&user=foo&password=" + postgresPass ,
58
+ want : result { pingOk : false , pingDeterminate : false } ,
51
59
},
52
60
{
53
- input : "invalid" ,
54
- wantErr : true ,
61
+ input : "invalid" ,
62
+ want : result { parseErr : true } ,
55
63
},
56
64
}
57
65
for _ , tt := range tests {
58
66
t .Run (tt .input , func (t * testing.T ) {
59
67
j , err := parsePostgres (tt .input )
60
- if tt .wantErr {
61
- assert .Error (t , err )
68
+
69
+ if err != nil {
70
+ got := result {parseErr : true }
71
+ assert .Equal (t , tt .want , got )
62
72
return
63
73
}
64
- assert .NoError (t , err )
65
- assert .Equal (t , tt .wantPing , j .ping (context .Background ()))
74
+
75
+ pr := j .ping (context .Background ())
76
+
77
+ got := result {pingOk : pr .err == nil , pingDeterminate : pr .determinate }
78
+ assert .Equal (t , tt .want , got )
66
79
})
67
80
}
68
81
}
0 commit comments