diff --git a/posthog/client.py b/posthog/client.py index 6470fd3e..64db985d 100644 --- a/posthog/client.py +++ b/posthog/client.py @@ -1335,6 +1335,13 @@ def _fetch_feature_flags_from_api(self): self.log.error( "[FEATURE FLAGS] Error loading feature flags: To use feature flags, please set a valid personal_api_key. More information: https://posthog.com/docs/api/overview" ) + self.feature_flags = [] + self.group_type_mapping = {} + self.cohorts = {} + + if self.flag_cache: + self.flag_cache.clear() + if self.debug: raise APIError( status=401, diff --git a/posthog/test/test_client.py b/posthog/test/test_client.py index fe0eeab6..57c06867 100644 --- a/posthog/test/test_client.py +++ b/posthog/test/test_client.py @@ -479,6 +479,20 @@ def test_load_feature_flags_quota_limited(self, patch_get): self.assertEqual(client.cohorts, {}) self.assertIn("PostHog feature flags quota limited", logs.output[0]) + @mock.patch("posthog.client.get") + def test_load_feature_flags_unauthorized(self, patch_get): + patch_get.side_effect = APIError(401, "Unauthorized") + + client = Client(FAKE_TEST_API_KEY, personal_api_key="test") + with self.assertLogs("posthog", level="ERROR") as logs: + client._load_feature_flags() + + self.assertEqual(client.feature_flags, []) + self.assertEqual(client.feature_flags_by_key, {}) + self.assertEqual(client.group_type_mapping, {}) + self.assertEqual(client.cohorts, {}) + self.assertIn("please set a valid personal_api_key", logs.output[0]) + @mock.patch("posthog.client.flags") def test_dont_override_capture_with_local_flags(self, patch_flags): patch_flags.return_value = {"featureFlags": {"beta-feature": "random-variant"}}