forked from fergusstrange/embedded-postgres
-
Notifications
You must be signed in to change notification settings - Fork 0
/
prepare_database_test.go
88 lines (68 loc) · 2.42 KB
/
prepare_database_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package embeddedpostgres
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
)
func Test_defaultInitDatabase_ErrorWhenCannotCreatePasswordFile(t *testing.T) {
err := defaultInitDatabase("path_not_exists", "Tom", "Beer", "")
assert.EqualError(t, err, "unable to write password file to path_not_exists/pwfile")
}
func Test_defaultInitDatabase_ErrorWhenCannotStartInitDBProcess(t *testing.T) {
tempDir, err := ioutil.TempDir("", "prepare_database_test")
if err != nil {
panic(err)
}
defer func() {
if err := os.RemoveAll(tempDir); err != nil {
panic(err)
}
}()
err = defaultInitDatabase(tempDir, "Tom", "Beer", "")
assert.EqualError(t, err, fmt.Sprintf("unable to init database using: %s/bin/initdb -A password -U Tom -D %s/data --pwfile=%s/pwfile",
tempDir,
tempDir,
tempDir))
assert.FileExists(t, filepath.Join(tempDir, "pwfile"))
}
func Test_defaultInitDatabase_ErrorInvalidLocaleSetting(t *testing.T) {
tempDir, err := ioutil.TempDir("", "prepare_database_test")
if err != nil {
panic(err)
}
defer func() {
if err := os.RemoveAll(tempDir); err != nil {
panic(err)
}
}()
err = defaultInitDatabase(tempDir, "postgres", "postgres", "en_XY")
assert.EqualError(t, err, fmt.Sprintf("unable to init database using: %s/bin/initdb -A password -U postgres -D %s/data --pwfile=%s/pwfile --locale=en_XY",
tempDir,
tempDir,
tempDir))
}
func Test_defaultCreateDatabase_ErrorWhenSQLOpenError(t *testing.T) {
err := defaultCreateDatabase(1234, "user client_encoding=lol", "password", "database")
assert.EqualError(t, err, "unable to connect to create database with custom name database with the following error: client_encoding must be absent or 'UTF8'")
}
func Test_defaultCreateDatabase_ErrorWhenQueryError(t *testing.T) {
database := NewDatabase(DefaultConfig().
Database("b33r"))
if err := database.Start(); err != nil {
t.Fatal(err)
}
defer func() {
if err := database.Stop(); err != nil {
t.Fatal(err)
}
}()
err := defaultCreateDatabase(5432, "postgres", "postgres", "b33r")
assert.EqualError(t, err, `unable to connect to create database with custom name b33r with the following error: pq: database "b33r" already exists`)
}
func Test_healthCheckDatabase_ErrorWhenSQLConnectingError(t *testing.T) {
err := healthCheckDatabase(1234, "tom client_encoding=lol", "more", "b33r")
assert.EqualError(t, err, "client_encoding must be absent or 'UTF8'")
}