2016-08-12 12:56:50 +03:00
// Copyright 2016 The Gogs Authors. All rights reserved.
2018-06-20 08:06:01 +03:00
// Copyright 2018 The Gitea Authors. All rights reserved.
2016-08-12 12:56:50 +03:00
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package models
import (
2019-03-21 04:38:54 +03:00
"io/ioutil"
"os"
"path/filepath"
2016-08-12 12:56:50 +03:00
"testing"
2017-02-08 09:29:07 +03:00
"github.com/stretchr/testify/assert"
2016-08-12 12:56:50 +03:00
)
func Test_parsePostgreSQLHostPort ( t * testing . T ) {
2017-03-22 17:30:40 +03:00
tests := [ ] struct {
HostPort string
Host string
Port string
} {
{
HostPort : "127.0.0.1:1234" ,
Host : "127.0.0.1" ,
Port : "1234" ,
} ,
{
HostPort : "127.0.0.1" ,
Host : "127.0.0.1" ,
Port : "5432" ,
} ,
{
HostPort : "[::1]:1234" ,
Host : "[::1]" ,
Port : "1234" ,
} ,
{
HostPort : "[::1]" ,
Host : "[::1]" ,
Port : "5432" ,
} ,
{
HostPort : "/tmp/pg.sock:1234" ,
Host : "/tmp/pg.sock" ,
Port : "1234" ,
} ,
{
HostPort : "/tmp/pg.sock" ,
Host : "/tmp/pg.sock" ,
Port : "5432" ,
} ,
}
for _ , test := range tests {
host , port := parsePostgreSQLHostPort ( test . HostPort )
assert . Equal ( t , test . Host , host )
assert . Equal ( t , test . Port , port )
2016-08-12 12:56:50 +03:00
}
}
2018-06-20 08:06:01 +03:00
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/giteasslmode=false&host=/tmp/pg.sock" ,
} ,
{
Host : "localhost" ,
Port : "1234" ,
User : "pgsqlusername" ,
Passwd : "I love Gitea!" ,
Name : "gitea" ,
Param : "" ,
SSLMode : "true" ,
Output : "postgres://pgsqlusername:I%20love%20Gitea%21@localhost:5432/giteasslmode=true" ,
} ,
}
for _ , test := range tests {
connStr := getPostgreSQLConnectionString ( test . Host , test . User , test . Passwd , test . Name , test . Param , test . SSLMode )
assert . Equal ( t , test . Output , connStr )
}
}
2019-03-21 04:38:54 +03:00
func TestDumpDatabase ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
dir , err := ioutil . TempDir ( os . TempDir ( ) , "dump" )
assert . NoError ( t , err )
for _ , dbType := range supportedDatabases {
assert . NoError ( t , DumpDatabase ( filepath . Join ( dir , dbType + ".sql" ) , dbType ) )
}
}