Skip to content

Commit

Permalink
Clean up client options pg tests
Browse files Browse the repository at this point in the history
  • Loading branch information
doodlesbykumbi authored Jan 21, 2022
1 parent 1ffecb0 commit a173adb
Showing 1 changed file with 19 additions and 16 deletions.
35 changes: 19 additions & 16 deletions test/connector/tcp/pg/tests/client_options_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,18 @@ func TestClientOptions(t *testing.T) {
l := testutil.FindLiveConfiguration(ac)

options := []string{"dbname=postgres"}
runQuery := genQueryRunner(l.Host(), l.ToPortString())

t.Run("dbname", func(t *testing.T) {
t.Run("exisiting", func(t *testing.T) {
output, err := runQuery(l.Host(), l.ToPortString(), nil, options, "SELECT current_database();")
output, err := runQuery(nil, options, "SELECT current_database();")

assert.NoError(t, err)
assert.Contains(t, output, "postgres")
})

t.Run("not found", func(t *testing.T) {
output, err := runQuery(l.Host(), l.ToPortString(), nil, []string{"dbname=notfound"}, "SELECT current_database();")
output, err := runQuery(nil, []string{"dbname=notfound"}, "SELECT current_database();")

assert.Error(t, err)
assert.Contains(t, output, `database "notfound" does not exist`)
Expand All @@ -48,39 +49,41 @@ func TestClientOptions(t *testing.T) {
encoding := "latin1"
query := fmt.Sprintf("select value from test.encodings where encoding='%s'", encoding)

output, err := runQuery(l.Host(), l.ToPortString(), genEnvs(encoding), options, query)
output, err := runQuery(genEnvs(encoding), options, query)

assert.NoError(t, err)
assert.Contains(t, output, "tést")
})

t.Run("defaults to utf8 when not set", func(t *testing.T) {
output, err := runQuery(l.Host(), l.ToPortString(), nil, options, "SHOW client_encoding;")
output, err := runQuery(nil, options, "SHOW client_encoding;")

assert.NoError(t, err)
assert.Contains(t, output, "UTF8")
})

t.Run("propagates to target server", func(t *testing.T) {
output, err := runQuery(l.Host(), l.ToPortString(), genEnvs("euc-jp"), options, "SHOW client_encoding;")
output, err := runQuery(genEnvs("euc-jp"), options, "SHOW client_encoding;")

assert.NoError(t, err)
assert.Contains(t, output, "EUC_JP")
})
})
}

func runQuery(host string, port string, envs []string, options []string, query string) (string, error) {
args := []string{
fmt.Sprintf("--host=%s", host),
fmt.Sprintf("--port=%s", port),
"-c", query,
strings.Join(append([]string{"sslmode=disable"}, options...), " "),
}
func genQueryRunner(host string, port string) func(envs []string, options []string, query string) (string, error) {
return func(envs, options []string, query string) (string, error) {
args := []string{
fmt.Sprintf("--host=%s", host),
fmt.Sprintf("--port=%s", port),
"-c", query,
strings.Join(append([]string{"sslmode=disable"}, options...), " "),
}

c := exec.Command("psql", args...)
c.Env = append(c.Env, envs...)
cmdOut, err := c.CombinedOutput()
c := exec.Command("psql", args...)
c.Env = append(c.Env, envs...)
cmdOut, err := c.CombinedOutput()

return string(cmdOut), err
return string(cmdOut), err
}
}

0 comments on commit a173adb

Please sign in to comment.