mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Backport #28085 by @wxiaoguang Fix #28083 and fix the tests Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		@@ -109,7 +109,7 @@ func DBConnStr() (string, error) {
 | 
			
		||||
		connStr = fmt.Sprintf("%s:%s@%s(%s)/%s%scharset=%s&parseTime=true&tls=%s",
 | 
			
		||||
			Database.User, Database.Passwd, connType, Database.Host, Database.Name, paramSep, Database.MysqlCharset, tls)
 | 
			
		||||
	case "postgres":
 | 
			
		||||
		connStr = getPostgreSQLConnectionString(Database.Host, Database.User, Database.Passwd, Database.Name, paramSep, Database.SSLMode)
 | 
			
		||||
		connStr = getPostgreSQLConnectionString(Database.Host, Database.User, Database.Passwd, Database.Name, Database.SSLMode)
 | 
			
		||||
	case "mssql":
 | 
			
		||||
		host, port := ParseMSSQLHostPort(Database.Host)
 | 
			
		||||
		connStr = fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;", host, port, Database.Name, Database.User, Database.Passwd)
 | 
			
		||||
@@ -157,7 +157,8 @@ func parsePostgreSQLHostPort(info string) (host, port string) {
 | 
			
		||||
	return host, port
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getPostgreSQLConnectionString(dbHost, dbUser, dbPasswd, dbName, dbParam, dbsslMode string) (connStr string) {
 | 
			
		||||
func getPostgreSQLConnectionString(dbHost, dbUser, dbPasswd, dbName, dbsslMode string) (connStr string) {
 | 
			
		||||
	dbName, dbParam, _ := strings.Cut(dbName, "?")
 | 
			
		||||
	host, port := parsePostgreSQLHostPort(dbHost)
 | 
			
		||||
	connURL := url.URL{
 | 
			
		||||
		Scheme:   "postgres",
 | 
			
		||||
 
 | 
			
		||||
@@ -59,38 +59,39 @@ func Test_parsePostgreSQLHostPort(t *testing.T) {
 | 
			
		||||
func Test_getPostgreSQLConnectionString(t *testing.T) {
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		Host    string
 | 
			
		||||
		Port    string
 | 
			
		||||
		User    string
 | 
			
		||||
		Passwd  string
 | 
			
		||||
		Name    string
 | 
			
		||||
		Param   string
 | 
			
		||||
		SSLMode string
 | 
			
		||||
		Output  string
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			Host:    "/tmp/pg.sock",
 | 
			
		||||
			Port:    "4321",
 | 
			
		||||
			User:    "testuser",
 | 
			
		||||
			Passwd:  "space space !#$%^^%^```-=?=",
 | 
			
		||||
			Name:    "gitea",
 | 
			
		||||
			Param:   "",
 | 
			
		||||
			SSLMode: "false",
 | 
			
		||||
			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",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			Host:    "localhost",
 | 
			
		||||
			Port:    "1234",
 | 
			
		||||
			User:    "pgsqlusername",
 | 
			
		||||
			Passwd:  "I love Gitea!",
 | 
			
		||||
			Name:    "gitea",
 | 
			
		||||
			Param:   "",
 | 
			
		||||
			SSLMode: "true",
 | 
			
		||||
			Output:  "postgres://pgsqlusername:I%20love%20Gitea%21@localhost:5432/gitea?sslmode=true",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			Host:   "localhost:1234",
 | 
			
		||||
			User:   "user",
 | 
			
		||||
			Passwd: "pass",
 | 
			
		||||
			Name:   "gitea?param=1",
 | 
			
		||||
			Output: "postgres://user:pass@localhost:1234/gitea?param=1&sslmode=",
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		connStr := getPostgreSQLConnectionString(test.Host, test.User, test.Passwd, test.Name, test.Param, test.SSLMode)
 | 
			
		||||
		connStr := getPostgreSQLConnectionString(test.Host, test.User, test.Passwd, test.Name, test.SSLMode)
 | 
			
		||||
		assert.Equal(t, test.Output, connStr)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user