# -*- coding: utf-8 -*- import os from unittest import mock import pytest from pytube import request @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, ] 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 @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 = "".encode("utf-8") mock_urlopen.return_value = response response = request.get("http://fakeassurl.gov") assert response == "" def test_get_non_http(): with pytest.raises(ValueError): # noqa: PT011 request.get("file://bad")