@@ -71,6 +71,32 @@ TEST(HandleFDv2PollResponseTest, TerminalErrorPropagatesFlag) {
7171 EXPECT_TRUE (result.fdv1_fallback );
7272}
7373
74+ TEST (HandleFDv2PollResponseTest, OkWithChangeSetBodyPropagatesFlag) {
75+ auto logger = MakeNullLogger ();
76+ FDv2ProtocolHandler handler;
77+
78+ std::string const body =
79+ R"( {"events":[)"
80+ R"( {"event":"server-intent","data":{"payloads":[)"
81+ R"( {"id":"p1","target":1,"intentCode":"xfer-full"}]}},)"
82+ R"( {"event":"put-object","data":{"version":1,"kind":"flag",)"
83+ R"( "key":"my-flag","object":{"key":"my-flag","on":true,)"
84+ R"( "fallthrough":{"variation":0},"variations":[true,false],)"
85+ R"( "version":1}}},)"
86+ R"( {"event":"payload-transferred","data":{"state":"abc","version":1}})"
87+ R"( ]})" ;
88+
89+ network::HttpResult::HeadersType headers{{" X-LD-FD-Fallback" , " true" }};
90+ network::HttpResult res{200 , body, std::move (headers)};
91+
92+ auto result = HandleFDv2PollResponse (res, &handler, logger, " test" );
93+
94+ auto * change_set = std::get_if<FDv2SourceResult::ChangeSet>(&result.value );
95+ ASSERT_NE (change_set, nullptr );
96+ EXPECT_FALSE (change_set->change_set .data .empty ());
97+ EXPECT_TRUE (result.fdv1_fallback );
98+ }
99+
74100TEST (HandleFDv2PollResponseTest, OkWithMissingBodyPropagatesFlag) {
75101 auto logger = MakeNullLogger ();
76102 FDv2ProtocolHandler handler;
0 commit comments