File size: 1,355 Bytes
328e22b
 
cd0bfbf
328e22b
f1b9623
 
328e22b
 
 
82321d6
2fb9e79
c39cd97
328e22b
f3408d8
 
 
328e22b
 
 
 
2fb9e79
328e22b
c39cd97
3fe716b
c39cd97
8d2dc0d
328e22b
 
 
82321d6
3fe716b
328e22b
82321d6
328e22b
4068aa2
82321d6
328e22b
 
82321d6
328e22b
 
82321d6
328e22b
82321d6
 
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
# -*- 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 = "<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):
        request.get("file://bad")