12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package pgpassfile
- import (
- "bytes"
- "strings"
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- func unescape(s string) string {
- s = strings.Replace(s, `\:`, `:`, -1)
- s = strings.Replace(s, `\\`, `\`, -1)
- return s
- }
- var passfile = [][]string{
- {"test1", "5432", "larrydb", "larry", "whatstheidea"},
- {"test1", "5432", "moedb", "moe", "imbecile"},
- {"test1", "5432", "curlydb", "curly", "nyuknyuknyuk"},
- {"test2", "5432", "*", "shemp", "heymoe"},
- {"test2", "5432", "*", "*", `test\\ing\:`},
- {"localhost", "*", "*", "*", "sesam"},
- {"test3", "*", "", "", "swordfish"}, // user will be filled later
- }
- func TestParsePassFile(t *testing.T) {
- buf := bytes.NewBufferString(`# A comment
- test1:5432:larrydb:larry:whatstheidea
- test1:5432:moedb:moe:imbecile
- test1:5432:curlydb:curly:nyuknyuknyuk
- test2:5432:*:shemp:heymoe
- test2:5432:*:*:test\\ing\:
- localhost:*:*:*:sesam
- `)
- passfile, err := ParsePassfile(buf)
- require.Nil(t, err)
- assert.Len(t, passfile.Entries, 6)
- assert.Equal(t, "whatstheidea", passfile.FindPassword("test1", "5432", "larrydb", "larry"))
- assert.Equal(t, "imbecile", passfile.FindPassword("test1", "5432", "moedb", "moe"))
- assert.Equal(t, `test\ing:`, passfile.FindPassword("test2", "5432", "something", "else"))
- assert.Equal(t, "sesam", passfile.FindPassword("localhost", "9999", "foo", "bare"))
- assert.Equal(t, "", passfile.FindPassword("wrong", "5432", "larrydb", "larry"))
- assert.Equal(t, "", passfile.FindPassword("test1", "wrong", "larrydb", "larry"))
- assert.Equal(t, "", passfile.FindPassword("test1", "5432", "wrong", "larry"))
- assert.Equal(t, "", passfile.FindPassword("test1", "5432", "larrydb", "wrong"))
- }
|