def start(self, *mocked, **params): with requests_mock.Mocker() as mock: mocked_users = mock.get( "https://api.twitch.tv/kraken/users.json?login=foo", json={"users": [{ "_id": 1234 }]}) mocked_stream = mock.get( "https://api.twitch.tv/kraken/streams/1234.json", json={"stream": None} if params.pop("offline", False) else { "stream": { "stream_type": params.pop("stream_type", "live"), "broadcast_platform": params.pop("broadcast_platform", "live"), "channel": { "broadcaster_software": params.pop("broadcaster_software", "") } } }) session = Streamlink() Twitch.bind(session, "tests.plugins.test_twitch") plugin = Twitch("https://www.twitch.tv/foo") plugin.options.set("disable-reruns", params.pop("disable", True)) try: streams = plugin.streams() except TestTwitchReruns.StopError: streams = True pass return streams, mocked_users, mocked_stream, mocked[0]
def test_stream_weight(): session = Streamlink() Twitch.bind(session, "tests.plugins.test_twitch") plugin = Twitch("http://twitch.tv/foo") with text("hls/test_master_twitch_vod.m3u8") as fh: playlist = fh.read() with requests_mock.Mocker() as mocker: mocker.register_uri(requests_mock.ANY, requests_mock.ANY, exc=requests_mock.exceptions.InvalidRequest) mocker.request(method="GET", url="http://mocked/master.m3u8", text=playlist) streams = TwitchHLSStream.parse_variant_playlist(session, "http://mocked/master.m3u8") with patch.object(plugin, "_get_streams", return_value=streams): data = plugin.streams() assert list(data.keys()) == ["audio", "160p30", "360p30", "480p30", "720p30", "720p60", "source", "worst", "best"] assert data["best"] is data["source"] assert data["worst"] is data["160p30"]