autobrr/internal/database/postgres_test.go
ze0s fe4f385a22
feat(database): connect postgres via socket and read config from env _FILE secrets (#2061)
* feat(database): connect postgres via socket

* feat(config): read env var secrets from file

* docs: explain env var secrets

* refactor: generate postgres dsn
2025-05-05 21:15:24 +02:00

67 lines
1.6 KiB
Go

package database
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestPostgresDSN(t *testing.T) {
type args struct {
host string
port int
user string
pass string
database string
socket string
sslMode string
extraParams string
}
tests := []struct {
name string
args args
want string
}{
{
name: "default",
args: args{
host: "localhost",
port: 5432,
user: "postgres",
pass: "PASSWORD",
database: "postgres",
sslMode: "disable",
socket: "",
},
want: "postgres://postgres:PASSWORD@localhost:5432/postgres?sslmode=disable",
},
{
name: "default",
args: args{
host: "localhost",
port: 5432,
user: "postgres",
pass: "PASSWORD",
database: "postgres",
sslMode: "disable",
extraParams: "connect_timeout=10",
socket: "",
},
want: "postgres://postgres:PASSWORD@localhost:5432/postgres?sslmode=disable&connect_timeout=10",
},
{
name: "default",
args: args{
database: "postgres",
socket: "/path/to/socket",
},
want: "postgres://postgres?host=%2Fpath%2Fto%2Fsocket",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, _ := PostgresDSN(tt.args.host, tt.args.port, tt.args.user, tt.args.pass, tt.args.database, tt.args.socket, tt.args.sslMode, tt.args.extraParams)
assert.Equalf(t, tt.want, got, "PostgresDSN(%v, %v, %v, %v, %v, %v, %v, %v)", tt.args.host, tt.args.port, tt.args.user, tt.args.pass, tt.args.database, tt.args.socket, tt.args.sslMode, tt.args.extraParams)
})
}
}