@@ -2480,6 +2480,39 @@ def test_load_feature_flags_etag_updated_on_new_response(
24802480 self .assertEqual (client ._flags_etag , '"etag-v2"' )
24812481 self .assertEqual (client .feature_flags [0 ]["key" ], "flag-v2" )
24822482
2483+ @mock .patch ("posthog.client.Poller" )
2484+ @mock .patch ("posthog.client.get" )
2485+ def test_load_feature_flags_clears_etag_when_server_stops_sending (
2486+ self , patch_get , patch_poll
2487+ ):
2488+ """Test that ETag is cleared when server stops sending it"""
2489+ patch_get .side_effect = [
2490+ GetResponse (
2491+ data = {
2492+ "flags" : [{"id" : 1 , "key" : "flag-v1" , "active" : True }],
2493+ "group_type_mapping" : {},
2494+ "cohorts" : {},
2495+ },
2496+ etag = '"etag-v1"' ,
2497+ ),
2498+ GetResponse (
2499+ data = {
2500+ "flags" : [{"id" : 1 , "key" : "flag-v2" , "active" : True }],
2501+ "group_type_mapping" : {},
2502+ "cohorts" : {},
2503+ },
2504+ etag = None , # Server stopped sending ETag
2505+ ),
2506+ ]
2507+
2508+ client = Client (FAKE_TEST_API_KEY , personal_api_key = "test" )
2509+ client .load_feature_flags ()
2510+ self .assertEqual (client ._flags_etag , '"etag-v1"' )
2511+
2512+ client ._load_feature_flags ()
2513+ self .assertIsNone (client ._flags_etag )
2514+ self .assertEqual (client .feature_flags [0 ]["key" ], "flag-v2" )
2515+
24832516 def test_load_feature_flags_wrong_key (self ):
24842517 client = Client (FAKE_TEST_API_KEY , personal_api_key = FAKE_TEST_API_KEY )
24852518
0 commit comments