package finger_test import ( "bytes" "io" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "tildegit.org/tjp/gus/finger" ) func TestParseRequest(t *testing.T) { tests := []struct { source string host string path string err error }{ { source: "/W tjp\r\n", host: "", path: "/tjp", }, { source: "tjp@host.com\r\n", host: "host.com", path: "/tjp", }, { source: "tjp@forwarder.com@host.com\r\n", err: finger.ForwardingDenied, }, { source: "tjp\r\n", host: "", path: "/tjp", }, { source: "\r\n", host: "", path: "/", }, { source: "/W\r\n", host: "", path: "/", }, { source: "tjp", err: io.EOF, }, } for _, test := range tests { t.Run(test.source, func(t *testing.T) { request, err := finger.ParseRequest(bytes.NewBufferString(test.source)) require.Equal(t, test.err, err) if err == nil { assert.Equal(t, "finger", request.Scheme) assert.Equal(t, test.host, request.Host) assert.Equal(t, test.path, request.Path) } }) } }