...
1 package pgservicefile_test
2
3 import (
4 "bytes"
5 "testing"
6
7 "github.com/jackc/pgservicefile"
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10 )
11
12 func TestParseServicefile(t *testing.T) {
13 buf := bytes.NewBufferString(`# A comment
14 [abc]
15 host=abc.example.com
16 port=9999
17 dbname=abcdb
18 user=abcuser
19 # Another comment
20
21 [def]
22 host = def.example.com
23 dbname = defdb
24 user = defuser
25 application_name = has space
26 `)
27
28 servicefile, err := pgservicefile.ParseServicefile(buf)
29 require.NoError(t, err)
30 require.NotNil(t, servicefile)
31
32 assert.Len(t, servicefile.Services, 2)
33 assert.Equal(t, "abc", servicefile.Services[0].Name)
34 assert.Equal(t, "def", servicefile.Services[1].Name)
35
36 abc, err := servicefile.GetService("abc")
37 require.NoError(t, err)
38 assert.Equal(t, servicefile.Services[0], abc)
39 assert.Len(t, abc.Settings, 4)
40 assert.Equal(t, "abc.example.com", abc.Settings["host"])
41 assert.Equal(t, "9999", abc.Settings["port"])
42 assert.Equal(t, "abcdb", abc.Settings["dbname"])
43 assert.Equal(t, "abcuser", abc.Settings["user"])
44
45 def, err := servicefile.GetService("def")
46 require.NoError(t, err)
47 assert.Equal(t, servicefile.Services[1], def)
48 assert.Len(t, def.Settings, 4)
49 assert.Equal(t, "def.example.com", def.Settings["host"])
50 assert.Equal(t, "defdb", def.Settings["dbname"])
51 assert.Equal(t, "defuser", def.Settings["user"])
52 assert.Equal(t, "has space", def.Settings["application_name"])
53 }
54
55 func TestParseServicefileWithInvalidFile(t *testing.T) {
56 buf := bytes.NewBufferString("Invalid syntax\n")
57
58 servicefile, err := pgservicefile.ParseServicefile(buf)
59 assert.Error(t, err)
60 assert.Nil(t, servicefile)
61 }
62
View as plain text