diff options
Diffstat (limited to 'cli/tests/test_range_request.py')
-rw-r--r-- | cli/tests/test_range_request.py | 41 |
1 files changed, 41 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..796bd6c3 --- /dev/null +++ b/cli/tests/test_range_request.py @@ -0,0 +1,41 @@ +import pytest +import subprocess + +from tempfile import NamedTemporaryFile +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)
\ No newline at end of file |