Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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(),
            ]
        )