aboutsummaryrefslogtreecommitdiff
path: root/fs_test.go
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-08 16:21:49 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-08 16:21:49 +0200
commite72e899aa358749597d35c2391e402de91a6f9f9 (patch)
treee6930c61c294593417c8989566a77e12f4d94053 /fs_test.go
parenttypo fix after f340a2920f5ba8dea28aa4f534168441a3bf4e71 (diff)
downloadfasthttp-e72e899aa358749597d35c2391e402de91a6f9f9.tar.gz
fasthttp-e72e899aa358749597d35c2391e402de91a6f9f9.tar.bz2
fasthttp-e72e899aa358749597d35c2391e402de91a6f9f9.zip
Issue #47: allow out-of range offsets in byte range headers according to RFC 2616
Diffstat (limited to 'fs_test.go')
-rw-r--r--fs_test.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/fs_test.go b/fs_test.go
index 3aa856b..27ea0cc 100644
--- a/fs_test.go
+++ b/fs_test.go
@@ -258,6 +258,15 @@ func TestParseByteRangeSuccess(t *testing.T) {
testParseByteRangeSuccess(t, "bytes=123-", 456, 123, 455)
testParseByteRangeSuccess(t, "bytes=-1", 1, 0, 0)
testParseByteRangeSuccess(t, "bytes=-123", 456, 333, 455)
+
+ // End position exceeding content-length. It should be updated to content-length-1.
+ // See https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
+ testParseByteRangeSuccess(t, "bytes=1-2345", 234, 1, 233)
+ testParseByteRangeSuccess(t, "bytes=0-2345", 2345, 0, 2344)
+
+ // Start position overflow. Whole range must be returned.
+ // See https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
+ testParseByteRangeSuccess(t, "bytes=-567", 56, 0, 55)
}
func testParseByteRangeSuccess(t *testing.T, v string, contentLength, startPos, endPos int) {
@@ -292,10 +301,7 @@ func TestParseByteRangeError(t *testing.T) {
testParseByteRangeError(t, "bytes=1-2,4-6", 123)
// byte range exceeding contentLength
- testParseByteRangeError(t, "bytes=1-2345", 234)
- testParseByteRangeError(t, "bytes=1-2345", 2345)
testParseByteRangeError(t, "bytes=123-", 12)
- testParseByteRangeError(t, "bytes=-567", 56)
// startPos exceeding endPos
testParseByteRangeError(t, "bytes=123-34", 1234)