summaryrefslogtreecommitdiff
path: root/gopher/request_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'gopher/request_test.go')
-rw-r--r--gopher/request_test.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/gopher/request_test.go b/gopher/request_test.go
index 74030c6..3488f39 100644
--- a/gopher/request_test.go
+++ b/gopher/request_test.go
@@ -2,6 +2,7 @@ package gopher_test
import (
"bytes"
+ "strings"
"testing"
"github.com/stretchr/testify/assert"
@@ -41,3 +42,28 @@ func TestParseRequest(t *testing.T) {
})
}
}
+
+func TestParseRequestLimits(t *testing.T) {
+ t.Run("max selector", func(t *testing.T) {
+ request, err := gopher.ParseRequest(bytes.NewBufferString(strings.Repeat("a", 255) + "\r\n"))
+ require.Nil(t, err)
+ assert.Equal(t, "/"+strings.Repeat("a", 255), request.Path)
+ })
+
+ t.Run("selector too long", func(t *testing.T) {
+ _, err := gopher.ParseRequest(bytes.NewBufferString(strings.Repeat("a", 256) + "\r\n"))
+ require.NotNil(t, err)
+ })
+
+ t.Run("search may extend request line", func(t *testing.T) {
+ request, err := gopher.ParseRequest(bytes.NewBufferString(strings.Repeat("a", 255) + "\t" + strings.Repeat("b", 255) + "\r\n"))
+ require.Nil(t, err)
+ assert.Equal(t, "/"+strings.Repeat("a", 255), request.Path)
+ assert.Equal(t, strings.Repeat("b", 255), request.RawQuery)
+ })
+
+ t.Run("long malformed selector does not panic", func(t *testing.T) {
+ _, err := gopher.ParseRequest(bytes.NewBufferString(strings.Repeat("a", 1487) + "\r\n"))
+ require.NotNil(t, err)
+ })
+}