# -*- coding: utf-8 -*- | |
import os | |
from unittest import mock | |
import pytest | |
from pytube import request | |
def test_streaming(mock_urlopen): | |
# Given | |
fake_stream_binary = [ | |
os.urandom(8 * 1024), | |
os.urandom(8 * 1024), | |
os.urandom(8 * 1024), | |
None, | |
] | |
response = mock.Mock() | |
response.read.side_effect = fake_stream_binary | |
response.info.return_value = {"Content-Range": "bytes 200-1000/24576"} | |
mock_urlopen.return_value = response | |
# When | |
response = request.stream("http://fakeassurl.gov") | |
# Then | |
call_count = len(list(response)) | |
assert call_count == 3 | |
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"} | |
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") | |