diff options
Diffstat (limited to 'cli/tests/test_range_request.py')
-rw-r--r-- | cli/tests/test_range_request.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/cli/tests/test_range_request.py b/cli/tests/test_range_request.py new file mode 100644 index 00000000..83bc9c9f --- /dev/null +++ b/cli/tests/test_range_request.py @@ -0,0 +1,38 @@ +import pytest +from werkzeug.exceptions import RequestedRangeNotSatisfiable + +from onionshare_cli.web.share_mode import parse_range_header + + +VALID_RANGES = [ + (None, 500, [(0, 499)]), + ("bytes=0", 500, [(0, 499)]), + ("bytes=100", 500, [(100, 499)]), + ("bytes=100-", 500, [(100, 499)]), # not in the RFC, but how curl sends + ("bytes=0-99", 500, [(0, 99)]), + ("bytes=0-599", 500, [(0, 499)]), + ("bytes=0-0", 500, [(0, 0)]), + ("bytes=-100", 500, [(400, 499)]), + ("bytes=0-99,100-199", 500, [(0, 199)]), + ("bytes=0-100,100-199", 500, [(0, 199)]), + ("bytes=0-99,101-199", 500, [(0, 99), (101, 199)]), + ("bytes=0-199,100-299", 500, [(0, 299)]), + ("bytes=0-99,200-299", 500, [(0, 99), (200, 299)]), +] + + +INVALID_RANGES = [ + "bytes=200-100", + "bytes=0-100,300-200", +] + + +def test_parse_ranges(): + for case in VALID_RANGES: + (header, target_size, expected) = case + parsed = parse_range_header(header, target_size) + assert parsed == expected, case + + for invalid in INVALID_RANGES: + with pytest.raises(RequestedRangeNotSatisfiable): + parse_range_header(invalid, 500) |