mirror of
https://github.com/onionshare/onionshare.git
synced 2024-10-01 01:35:40 -04:00
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
|
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)
|