@@ -83,6 +83,71 @@ func TestTransportSetDefaults_DoesNotOverrideFlyForceRegionFromTransport(t *test
8383 }
8484}
8585
86+ func TestTransportSetDefaults_DoesNotOverrideFlyForceInstanceFromTransport (t * testing.T ) {
87+ t .Setenv ("FLY_FORCE_INSTANCE" , "worker-1" )
88+
89+ transport := & Transport {FlyForceInstance : "worker-2" }
90+ opts := ClientOptions {Transport : transport }
91+
92+ transport .setDefaults (& opts )
93+
94+ if transport .FlyForceInstance != "worker-2" {
95+ t .Fatalf ("expected FlyForceInstance to remain %q, got %q" , "worker-2" , transport .FlyForceInstance )
96+ }
97+ }
98+
99+ func TestTransportSetDefaults_SetsFlyForceInstanceFromEnv (t * testing.T ) {
100+ t .Setenv ("FLY_FORCE_INSTANCE" , "worker-1" )
101+
102+ transport := & Transport {}
103+ opts := ClientOptions {Transport : transport }
104+
105+ transport .setDefaults (& opts )
106+
107+ if transport .FlyForceInstance != "worker-1" {
108+ t .Fatalf ("expected FlyForceInstance to be %q, got %q" , "worker-1" , transport .FlyForceInstance )
109+ }
110+ }
111+
112+ type captureTripper struct {
113+ req * http.Request
114+ }
115+
116+ func (c * captureTripper ) RoundTrip (req * http.Request ) (* http.Response , error ) {
117+ c .req = req .Clone (req .Context ())
118+ c .req .Header = req .Header .Clone ()
119+ return & http.Response {
120+ StatusCode : http .StatusOK ,
121+ Body : io .NopCloser (strings .NewReader ("{}" )),
122+ Header : make (http.Header ),
123+ }, nil
124+ }
125+
126+ func TestTransportRoundTrip_SetsFlyForceInstanceHeader (t * testing.T ) {
127+ capture := & captureTripper {}
128+ transport := & Transport {
129+ UnderlyingTransport : capture ,
130+ UserAgent : "test/0" ,
131+ Token : "token" ,
132+ FlyForceInstance : "worker-2" ,
133+ }
134+
135+ req , err := http .NewRequest (http .MethodGet , "http://example.test" , nil )
136+ if err != nil {
137+ t .Fatalf ("NewRequest returned error: %v" , err )
138+ }
139+
140+ resp , err := transport .RoundTrip (req )
141+ if err != nil {
142+ t .Fatalf ("RoundTrip returned error: %v" , err )
143+ }
144+ defer resp .Body .Close ()
145+
146+ if got := capture .req .Header .Get ("Fly-Force-Instance" ); got != "worker-2" {
147+ t .Fatalf ("Fly-Force-Instance header = %q, want %q" , got , "worker-2" )
148+ }
149+ }
150+
86151func TestGraphQLOperationKind (t * testing.T ) {
87152 cases := []struct {
88153 name string
0 commit comments