@@ -181,3 +181,61 @@ func TestApplyUpdatedInstanceEnvReturnsRollbackFailure(t *testing.T) {
181181 assert .Equal (t , prevEnv , meta .Env )
182182 require .Len (t , svc .calls , 2 )
183183}
184+
185+ func TestApplyUpdatedInstanceEnvSavesAutoStandbyAlongsideEnvWithoutMutatingOriginal (t * testing.T ) {
186+ t .Parallel ()
187+
188+ original := & metadata {
189+ StoredMetadata : StoredMetadata {
190+ Id : "inst-autostandby-copy" ,
191+ NetworkEgress : & NetworkEgressPolicy {Enabled : true },
192+ Credentials : map [string ]CredentialPolicy {
193+ "OUTBOUND_OPENAI_KEY" : {
194+ Source : CredentialSource {Env : "OUTBOUND_OPENAI_KEY" },
195+ Inject : []CredentialInjectRule {{
196+ As : CredentialInjectAs {
197+ Header : "Authorization" ,
198+ Format : "Bearer ${value}" ,
199+ },
200+ }},
201+ },
202+ },
203+ Env : map [string ]string {"OUTBOUND_OPENAI_KEY" : "old" },
204+ AutoStandby : & autostandby.Policy {
205+ Enabled : false ,
206+ IdleTimeout : "5m0s" ,
207+ },
208+ },
209+ }
210+ updated := cloneMetadata (original )
211+ updated .AutoStandby = & autostandby.Policy {
212+ Enabled : true ,
213+ IdleTimeout : "10m0s" ,
214+ IgnoreSourceCIDRs : []string {"10.0.0.0/8" },
215+ IgnoreDestinationPorts : []uint16 {22 },
216+ }
217+
218+ prevEnv := cloneEnvMap (updated .Env )
219+ nextEnv := map [string ]string {"OUTBOUND_OPENAI_KEY" : "new" }
220+ svc := & fakeUpdateInstanceRulesService {}
221+
222+ var saved * metadata
223+ err := applyUpdatedInstanceEnv (context .Background (), nil , updated .Id , updated , prevEnv , nextEnv , func (meta * metadata ) error {
224+ saved = cloneMetadata (meta )
225+ return nil
226+ }, svc )
227+ require .NoError (t , err )
228+
229+ require .NotNil (t , saved )
230+ require .NotNil (t , saved .AutoStandby )
231+ assert .True (t , saved .AutoStandby .Enabled )
232+ assert .Equal (t , "10m0s" , saved .AutoStandby .IdleTimeout )
233+ assert .Equal (t , []string {"10.0.0.0/8" }, saved .AutoStandby .IgnoreSourceCIDRs )
234+ assert .Equal (t , []uint16 {22 }, saved .AutoStandby .IgnoreDestinationPorts )
235+ assert .Equal (t , nextEnv , saved .Env )
236+
237+ require .NotNil (t , original .AutoStandby )
238+ assert .False (t , original .AutoStandby .Enabled )
239+ assert .Equal (t , "5m0s" , original .AutoStandby .IdleTimeout )
240+ assert .Equal (t , map [string ]string {"OUTBOUND_OPENAI_KEY" : "old" }, original .Env )
241+ }
0 commit comments