Skip to content

Commit

Permalink
fix: session params config (#124)
Browse files Browse the repository at this point in the history
  • Loading branch information
hantmac authored May 28, 2024
1 parent be68ac3 commit 4a8e23f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
4 changes: 4 additions & 0 deletions dsn.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ func (cfg *Config) FormatDSN() string {
} else {
query.Set("empty_field_as", "string")
}
// Add Params to the query
for k, v := range cfg.Params {
query.Set(k, v)
}

u.RawQuery = query.Encode()
return u.String()
Expand Down
35 changes: 34 additions & 1 deletion dsn_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

func TestFormatDSN(t *testing.T) {
dsn := "databend+https://username:[email protected]/test?role=test_role&empty_field_as=null&timeout=1s&wait_time_secs=10&max_rows_in_buffer=5000000&max_rows_per_page=10000&tls_config=tls-settings&warehouse=wh"
dsn := "databend+https://username:[email protected]/test?role=test_role&empty_field_as=null&timeout=1s&wait_time_secs=10&max_rows_in_buffer=5000000&max_rows_per_page=10000&tls_config=tls-settings&warehouse=wh&sessionParam1=sessionValue1"
cfg, err := ParseDSN(dsn)
require.Nil(t, err)

Expand All @@ -22,13 +22,46 @@ func TestFormatDSN(t *testing.T) {
assert.Equal(t, int64(10), cfg.WaitTimeSecs)
assert.Equal(t, int64(5000000), cfg.MaxRowsInBuffer)
assert.Equal(t, "test_role", cfg.Role)
assert.Equal(t, "sessionValue1", cfg.Params["sessionParam1"])

dsn1 := cfg.FormatDSN()
cfg1, err := ParseDSN(dsn1)
require.Nil(t, err)
assert.Equal(t, cfg, cfg1)
}

func TestParseDSNWithParams(t *testing.T) {
// Create a new Config with some params
cfg := NewConfig()
cfg.Params["param1"] = "value1"
cfg.Params["param2"] = "value2"

// Generate DSN string
dsn := cfg.FormatDSN()

// Parse the DSN string
parsedCfg, err := ParseDSN(dsn)
require.NoError(t, err)

// Check that the parsed Config includes the params
assert.Equal(t, "value1", parsedCfg.Params["param1"])
assert.Equal(t, "value2", parsedCfg.Params["param2"])
}

func TestFormatDSNWithParams(t *testing.T) {
// Create a new Config with some params
cfg := NewConfig()
cfg.Params["param1"] = "value1"
cfg.Params["param2"] = "value2"

// Call FormatDSN
dsn := cfg.FormatDSN()

// Check that the DSN includes the params
assert.Contains(t, dsn, "param1=value1")
assert.Contains(t, dsn, "param2=value2")
}

func TestParseDSN(t *testing.T) {
t.Run("test simple dns parse", func(t *testing.T) {
dsn := "databend+http://app.databend.com:8000/test?tenant=tn&warehouse=wh&timeout=1s&wait_time_secs=10&max_rows_in_buffer=5000000&max_rows_per_page=10000&tls_config=tls-settings&access_token_file=/tmp/file1"
Expand Down

0 comments on commit 4a8e23f

Please sign in to comment.