2017-09-07 12:44:52 -04:00
|
|
|
package logs
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2018-03-05 18:53:52 -05:00
|
|
|
"github.com/gotestyourself/gotestyourself/assert"
|
|
|
|
is "github.com/gotestyourself/gotestyourself/assert/cmp"
|
2017-09-07 12:44:52 -04:00
|
|
|
"github.com/pkg/errors"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestParseLogDetails(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
line string
|
|
|
|
expected map[string]string
|
|
|
|
err error
|
|
|
|
}{
|
|
|
|
{"key=value", map[string]string{"key": "value"}, nil},
|
|
|
|
{"key1=value1,key2=value2", map[string]string{"key1": "value1", "key2": "value2"}, nil},
|
|
|
|
{"key+with+spaces=value%3Dequals,asdf%2C=", map[string]string{"key with spaces": "value=equals", "asdf,": ""}, nil},
|
|
|
|
{"key=,=nothing", map[string]string{"key": "", "": "nothing"}, nil},
|
|
|
|
{"=", map[string]string{"": ""}, nil},
|
|
|
|
{"errors", nil, errors.New("invalid details format")},
|
|
|
|
}
|
|
|
|
for _, testcase := range testCases {
|
|
|
|
t.Run(testcase.line, func(t *testing.T) {
|
|
|
|
actual, err := ParseLogDetails(testcase.line)
|
|
|
|
if testcase.err != nil {
|
2018-03-06 15:54:24 -05:00
|
|
|
assert.Error(t, err, testcase.err.Error())
|
2017-09-07 12:44:52 -04:00
|
|
|
return
|
|
|
|
}
|
2018-03-05 18:53:52 -05:00
|
|
|
assert.Check(t, is.DeepEqual(testcase.expected, actual))
|
2017-09-07 12:44:52 -04:00
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|