def test_call_should_retry_on_token_error(self): transport = Mock(side_effect=[errors.InvalidAuthToken(), None]) client = BaseAPIClient(transport, None, None, None) client._authenticate = Mock() client.login("foo", "bar") client("method") client._authenticate.assert_called_with() transport.assert_has_calls([call("method"), call("method")])
def test_call_should_not_retry_for_pandora_exceptions(self): with self.assertRaises(PandoraException): client = TestSettingsDictBuilder._build_minimal() time.sleep = Mock() client.transport._make_http_request = Mock( side_effect=PandoraException("error_mock")) client.transport._start_request = Mock() client("method") client.transport._start_request.assert_has_calls([call("method")]) assert client.transport._start_request.call_count == 1
def test_call_should_retry_max_times_on_sys_call_error(self): with self.assertRaises(SysCallError): client = TestSettingsDictBuilder._build_minimal() time.sleep = Mock() client.transport._make_http_request = Mock( side_effect=SysCallError("error_mock")) client.transport._start_request = Mock() client("method") client.transport._start_request.assert_has_calls([call("method")]) assert client.transport._start_request.call_count == 3
def test_ad_support_enabled_parameters(self): with patch.object(APIClient, '__call__') as playlist_mock: transport = Mock(side_effect=[errors.InvalidAuthToken(), None]) client = APIClient(transport, None, None, None, None) client._authenticate = Mock() client.get_playlist('token_mock') playlist_mock.assert_has_calls([call("station.getPlaylist", audioAdPodCapable=True, includeTrackLength=True, stationToken='token_mock', xplatformAdCapable=True)])
def test_get_ad_item_(self): with patch.object(APIClient, '__call__', return_value=TestAdItem.JSON_DATA) as ad_metadata_mock: transport = Mock(side_effect=[errors.InvalidAuthToken(), None]) client = APIClient(transport, None, None, None, None) client._authenticate = Mock() ad_item = client.get_ad_item('id_mock', 'token_mock') assert ad_item.station_id == 'id_mock' assert ad_item.ad_token == 'token_mock' ad_metadata_mock.assert_has_calls([call("ad.getAdMetadata", adToken='token_mock', returnAdTrackingTokens=True, supportAudioAds=True)])
def test_call_should_retry_if_auth_token_expired(self): with self.assertRaises(InvalidAuthToken): client = TestSettingsDictBuilder._build_minimal() time.sleep = Mock() client.transport._make_http_request = Mock( side_effect=InvalidAuthToken("error_mock")) client.transport._start_request = Mock() client._authenticate = Mock() client("method") client.transport._start_request.assert_has_calls([call("method")]) assert client.transport._start_request.call_count == 2 assert client._authenticate.call_count == 1