2019-08-24 12:24:45 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-08-24 12:24:45 +03:00
package setting
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_parsePostgreSQLHostPort ( t * testing . T ) {
2023-11-01 21:00:20 +03:00
tests := map [ string ] struct {
2019-08-24 12:24:45 +03:00
HostPort string
Host string
Port string
} {
2023-11-01 21:00:20 +03:00
"host-port" : {
2019-08-24 12:24:45 +03:00
HostPort : "127.0.0.1:1234" ,
Host : "127.0.0.1" ,
Port : "1234" ,
} ,
2023-11-01 21:00:20 +03:00
"no-port" : {
2019-08-24 12:24:45 +03:00
HostPort : "127.0.0.1" ,
Host : "127.0.0.1" ,
Port : "5432" ,
} ,
2023-11-01 21:00:20 +03:00
"ipv6-port" : {
2019-08-24 12:24:45 +03:00
HostPort : "[::1]:1234" ,
2023-11-01 21:00:20 +03:00
Host : "::1" ,
2019-08-24 12:24:45 +03:00
Port : "1234" ,
} ,
2023-11-01 21:00:20 +03:00
"ipv6-no-port" : {
2019-08-24 12:24:45 +03:00
HostPort : "[::1]" ,
2023-11-01 21:00:20 +03:00
Host : "::1" ,
2019-08-24 12:24:45 +03:00
Port : "5432" ,
} ,
2023-11-01 21:00:20 +03:00
"unix-socket" : {
2019-08-24 12:24:45 +03:00
HostPort : "/tmp/pg.sock:1234" ,
Host : "/tmp/pg.sock" ,
Port : "1234" ,
} ,
2023-11-01 21:00:20 +03:00
"unix-socket-no-port" : {
2019-08-24 12:24:45 +03:00
HostPort : "/tmp/pg.sock" ,
Host : "/tmp/pg.sock" ,
Port : "5432" ,
} ,
}
2023-11-01 21:00:20 +03:00
for k , test := range tests {
t . Run ( k , func ( t * testing . T ) {
t . Log ( test . HostPort )
host , port := parsePostgreSQLHostPort ( test . HostPort )
assert . Equal ( t , test . Host , host )
assert . Equal ( t , test . Port , port )
} )
2019-08-24 12:24:45 +03:00
}
}
func Test_getPostgreSQLConnectionString ( t * testing . T ) {
tests := [ ] struct {
Host string
User string
Passwd string
Name string
SSLMode string
Output string
} {
2024-01-06 12:30:03 +03:00
{
Host : "" , // empty means default
Output : "postgres://:@127.0.0.1:5432?sslmode=" ,
} ,
2019-08-24 12:24:45 +03:00
{
Host : "/tmp/pg.sock" ,
User : "testuser" ,
Passwd : "space space !#$%^^%^```-=?=" ,
Name : "gitea" ,
SSLMode : "false" ,
2023-11-01 21:00:20 +03:00
Output : "postgres://testuser:space%20space%20%21%23$%25%5E%5E%25%5E%60%60%60-=%3F=@:5432/gitea?host=%2Ftmp%2Fpg.sock&sslmode=false" ,
2019-08-24 12:24:45 +03:00
} ,
{
Host : "localhost" ,
User : "pgsqlusername" ,
Passwd : "I love Gitea!" ,
Name : "gitea" ,
SSLMode : "true" ,
2023-11-01 21:00:20 +03:00
Output : "postgres://pgsqlusername:I%20love%20Gitea%21@localhost:5432/gitea?sslmode=true" ,
2019-08-24 12:24:45 +03:00
} ,
2023-11-17 05:30:57 +03:00
{
Host : "localhost:1234" ,
User : "user" ,
Passwd : "pass" ,
Name : "gitea?param=1" ,
Output : "postgres://user:pass@localhost:1234/gitea?param=1&sslmode=" ,
} ,
2019-08-24 12:24:45 +03:00
}
for _ , test := range tests {
2023-11-17 05:30:57 +03:00
connStr := getPostgreSQLConnectionString ( test . Host , test . User , test . Passwd , test . Name , test . SSLMode )
2019-08-24 12:24:45 +03:00
assert . Equal ( t , test . Output , connStr )
}
}