def test_iter_users_retry(self, session): session.get.side_effect = RequestException client = IntercomClient(app_id="app_id", api_key="api_key") result = client.iter_users() self.assertRaises(RequestException, list, result) self.assertEqual(session.get.call_count, RETRY_COUNT)
def test_get_headers(self, *args): client = IntercomClient("", "") extra_headers = {"X-Extra": "Header-Value"} headers = client.get_headers(**extra_headers) self.assertEqual(headers["Accept"], "application/json") self.assertEqual(headers["X-Extra"], "Header-Value")
def test_iter_users(self, session): client = IntercomClient(app_id="app_id", api_key="api_key") pages = 2 response = mock.Mock() def _json(): result = {"users": ["user_one", "user_two"], "pages": {"next": ""}} if response.json.call_count == pages: return result result["pages"]["next"] = "http://next.url/page=%s" % (response.json.call_count + 1) return result response.json.side_effect = _json session.get.return_value = response result = client.iter_users() self.assertIsInstance(result, collections.Iterable) result = list(result) self.assertEqual(response.raise_for_status.call_count, 2) self.assertEqual(session.get.call_count, 2) self.assertListEqual(["user_one", "user_two", "user_one", "user_two"], result) _common = dict(auth=client.auth, headers=client.get_headers(), timeout=TIMEOUT) session.get.assert_has_calls( [ mock.call("https://api.intercom.io/users?page=1&per_page=50&order=desc", **_common), mock.call().raise_for_status(), mock.call().json(), mock.call("http://next.url/page=2", **_common), mock.call().raise_for_status(), mock.call().json(), ] )