File size: 1,844 Bytes
328e22b 46ba6e2 328e22b a92dd5e cd0bfbf 46ba6e2 328e22b 46ba6e2 328e22b 82321d6 2fb9e79 c39cd97 328e22b f3408d8 328e22b 46ba6e2 c39cd97 46ba6e2 c39cd97 46ba6e2 328e22b 82321d6 3fe716b 328e22b 82321d6 328e22b 4068aa2 82321d6 328e22b 82321d6 328e22b 82321d6 328e22b 82321d6 f1b9623 272841b f1b9623 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# -*- coding: utf-8 -*-
import socket
import os
import pytest
from unittest import mock
from urllib.error import URLError
from pytube import request
from pytube.exceptions import MaxRetriesExceeded
@mock.patch("pytube.request.urlopen")
def test_streaming(mock_urlopen):
# Given
fake_stream_binary = [
os.urandom(8 * 1024),
os.urandom(8 * 1024),
os.urandom(8 * 1024),
None,
]
mock_response = mock.Mock()
mock_response.read.side_effect = fake_stream_binary
mock_response.info.return_value = {"Content-Range": "bytes 200-1000/24576"}
mock_urlopen.return_value = mock_response
# When
response = request.stream("http://fakeassurl.gov/streaming_test")
# Then
assert len(b''.join(response)) == 3 * 8 * 1024
assert mock_response.read.call_count == 4
@mock.patch('pytube.request.urlopen')
def test_timeout(mock_urlopen):
exc = URLError(reason=socket.timeout('timed_out'))
mock_urlopen.side_effect = exc
generator = request.stream('http://fakeassurl.gov/timeout_test', timeout=1)
with pytest.raises(MaxRetriesExceeded):
next(generator)
@mock.patch("pytube.request.urlopen")
def test_headers(mock_urlopen):
response = mock.Mock()
response.info.return_value = {"content-length": "16384"}
mock_urlopen.return_value = response
response = request.head("http://fakeassurl.gov")
assert response == {"content-length": "16384"}
@mock.patch("pytube.request.urlopen")
def test_get(mock_urlopen):
response = mock.Mock()
response.read.return_value = "<html></html>".encode("utf-8")
mock_urlopen.return_value = response
response = request.get("http://fakeassurl.gov")
assert response == "<html></html>"
def test_get_non_http():
with pytest.raises(ValueError): # noqa: PT011
request.get("file://bad")
|