@@ -737,6 +737,66 @@ def test_resumption_token_omits_variation_key_when_empty(client: LDClient):
737737 assert decoded ["version" ] == 1
738738
739739
740+ def test_resumption_token_includes_graph_key_when_set (client : LDClient ):
741+ import base64
742+ import json
743+
744+ context = Context .create ("user-key" )
745+ tracker = LDAIConfigTracker (
746+ ld_client = client , run_id = "test-run-id" , config_key = "cfg-key" ,
747+ variation_key = "var-key" , version = 2 , context = context ,
748+ model_name = "model" , provider_name = "provider" , graph_key = "my-graph" ,
749+ )
750+
751+ token = tracker .resumption_token
752+ padded = token + "=" * (- len (token ) % 4 )
753+ decoded = json .loads (base64 .urlsafe_b64decode (padded .encode ("utf-8" )).decode ("utf-8" ))
754+
755+ assert decoded ["runId" ] == "test-run-id"
756+ assert decoded ["configKey" ] == "cfg-key"
757+ assert decoded ["variationKey" ] == "var-key"
758+ assert decoded ["version" ] == 2
759+ assert decoded ["graphKey" ] == "my-graph"
760+ # Key order: runId, configKey, variationKey, version, graphKey
761+ assert list (decoded .keys ()) == ["runId" , "configKey" , "variationKey" , "version" , "graphKey" ]
762+
763+
764+ def test_resumption_token_omits_graph_key_when_not_set (client : LDClient ):
765+ import base64
766+ import json
767+
768+ context = Context .create ("user-key" )
769+ tracker = LDAIConfigTracker (
770+ ld_client = client , run_id = "test-run-id" , config_key = "cfg-key" ,
771+ variation_key = "var-key" , version = 1 , context = context ,
772+ model_name = "model" , provider_name = "provider" ,
773+ )
774+
775+ token = tracker .resumption_token
776+ padded = token + "=" * (- len (token ) % 4 )
777+ decoded = json .loads (base64 .urlsafe_b64decode (padded .encode ("utf-8" )).decode ("utf-8" ))
778+
779+ assert "graphKey" not in decoded
780+
781+
782+ def test_resumption_token_round_trip_with_graph_key (client : LDClient ):
783+ context = Context .create ("user-key" )
784+ tracker = LDAIConfigTracker (
785+ ld_client = client , run_id = "test-run-id" , config_key = "cfg-key" ,
786+ variation_key = "var-key" , version = 3 , context = context ,
787+ model_name = "model" , provider_name = "provider" , graph_key = "my-graph" ,
788+ )
789+
790+ token = tracker .resumption_token
791+ restored = LDAIConfigTracker .from_resumption_token (token , client , context )
792+
793+ assert restored ._run_id == "test-run-id"
794+ assert restored ._config_key == "cfg-key"
795+ assert restored ._variation_key == "var-key"
796+ assert restored ._version == 3
797+ assert restored ._graph_key == "my-graph"
798+
799+
740800def test_tracker_with_explicit_run_id (client : LDClient ):
741801 context = Context .create ("user-key" )
742802 tracker = LDAIConfigTracker (
0 commit comments