69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
package config_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"allaboutapps.dev/aw/go-starter/internal/config"
|
|
)
|
|
|
|
// via https://github.com/allaboutapps/integresql/blob/master/pkg/manager/database_config_test.go
|
|
func TestDatabaseConnectionString(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
config config.Database
|
|
want string
|
|
}{
|
|
{
|
|
name: "Simple",
|
|
config: config.Database{
|
|
Host: "localhost",
|
|
Port: 5432,
|
|
Username: "simple",
|
|
Password: "database_config",
|
|
Database: "simple_database_config",
|
|
},
|
|
want: "host=localhost port=5432 user=simple password=database_config dbname=simple_database_config sslmode=disable",
|
|
},
|
|
{
|
|
name: "SSLMode",
|
|
config: config.Database{
|
|
Host: "localhost",
|
|
Port: 5432,
|
|
Username: "simple",
|
|
Password: "database_config",
|
|
Database: "simple_database_config",
|
|
AdditionalParams: map[string]string{
|
|
"sslmode": "prefer",
|
|
},
|
|
},
|
|
want: "host=localhost port=5432 user=simple password=database_config dbname=simple_database_config sslmode=prefer",
|
|
},
|
|
{
|
|
name: "Complex",
|
|
config: config.Database{
|
|
Host: "localhost",
|
|
Port: 5432,
|
|
Username: "simple",
|
|
Password: "database_config",
|
|
Database: "simple_database_config",
|
|
AdditionalParams: map[string]string{
|
|
"connect_timeout": "10",
|
|
"sslmode": "verify-full",
|
|
"sslcert": "/app/certs/pg.pem",
|
|
"sslkey": "/app/certs/pg.key",
|
|
"sslrootcert": "/app/certs/pg_root.pem",
|
|
},
|
|
},
|
|
want: "host=localhost port=5432 user=simple password=database_config dbname=simple_database_config connect_timeout=10 sslcert=/app/certs/pg.pem sslkey=/app/certs/pg.key sslmode=verify-full sslrootcert=/app/certs/pg_root.pem",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := tt.config.ConnectionString(); got != tt.want {
|
|
t.Errorf("invalid connection string, got %q, want %q", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|