|
7 | 7 | import six |
8 | 8 |
|
9 | 9 | from posthog.client import Client |
| 10 | +from posthog.request import APIError |
10 | 11 | from posthog.test.test_utils import FAKE_TEST_API_KEY |
11 | 12 | from posthog.version import VERSION |
12 | 13 |
|
@@ -384,6 +385,26 @@ def test_basic_capture_with_locally_evaluated_feature_flags(self, patch_decide): |
384 | 385 | assert "$feature/false-flag" not in msg["properties"] |
385 | 386 | assert "$active_feature_flags" not in msg["properties"] |
386 | 387 |
|
| 388 | + |
| 389 | + @mock.patch("posthog.client.get") |
| 390 | + def test_load_feature_flags_quota_limited(self, patch_get): |
| 391 | + mock_response = { |
| 392 | + "type": "quota_limited", |
| 393 | + "detail": "You have exceeded your feature flag request quota", |
| 394 | + "code": "payment_required" |
| 395 | + } |
| 396 | + patch_get.side_effect = APIError(402, mock_response["detail"]) |
| 397 | + |
| 398 | + client = Client(FAKE_TEST_API_KEY, personal_api_key="test") |
| 399 | + with self.assertLogs("posthog", level="WARNING") as logs: |
| 400 | + client._load_feature_flags() |
| 401 | + |
| 402 | + self.assertEqual(client.feature_flags, []) |
| 403 | + self.assertEqual(client.feature_flags_by_key, {}) |
| 404 | + self.assertEqual(client.group_type_mapping, {}) |
| 405 | + self.assertEqual(client.cohorts, {}) |
| 406 | + self.assertIn("PostHog feature flags quota limited", logs.output[0]) |
| 407 | + |
387 | 408 | @mock.patch("posthog.client.decide") |
388 | 409 | def test_dont_override_capture_with_local_flags(self, patch_decide): |
389 | 410 | patch_decide.return_value = {"featureFlags": {"beta-feature": "random-variant"}} |
|
0 commit comments