@@ -117,50 +117,60 @@ it.each([true, false])("sends only credentials for the selected mode (profile=%s
117117 } )
118118} )
119119
120- it . each ( [ { awsRegion : "us-east-1" } , { awsProfile : "other" } ] ) (
121- "ignores stale catalogue replies after connection settings change: %j" ,
122- ( change ) => {
123- const config : ProviderSettings = { awsRegion : "eu-west-3" , awsUseProfile : true , awsProfile : "work" }
124- const onSelect = vi . fn ( )
125- const { rerender } = render ( < BedrockCatalog apiConfiguration = { config } onSelect = { onSelect } /> )
126- fireEvent . click ( screen . getByRole ( "button" ) )
127- const first = vi . mocked ( vscode . postMessage ) . mock . calls [ 0 ] [ 0 ]
128- expect ( first . apiConfiguration ) . toEqual ( expect . objectContaining ( config ) )
129- rerender ( < BedrockCatalog apiConfiguration = { { ...config , ...change } } onSelect = { onSelect } /> )
130- expect ( vscode . postMessage ) . toHaveBeenLastCalledWith ( {
131- type : BedrockModelsMessageType . cancelBedrockModels ,
132- requestId : first . requestId ,
133- } )
134- act ( ( ) =>
135- window . dispatchEvent (
136- new MessageEvent ( "message" , {
137- data : {
138- type : BedrockModelsMessageType . bedrockModels ,
139- requestId : first . requestId ,
140- bedrockModels : [ { arn : "old" , name : "Stale" , kind : "global" } ] ,
141- } ,
142- } ) ,
143- ) ,
144- )
145- expect ( screen . queryByRole ( "combobox" ) ) . not . toBeInTheDocument ( )
146- fireEvent . click ( screen . getByRole ( "button" ) )
147- const second = vi . mocked ( vscode . postMessage ) . mock . calls [ 2 ] [ 0 ]
148- act ( ( ) =>
149- window . dispatchEvent (
150- new MessageEvent ( "message" , {
151- data : {
152- type : BedrockModelsMessageType . bedrockModels ,
153- requestId : second . requestId ,
154- bedrockModels : [ { arn : "new" , name : "Current" , kind : "geographic" } ] ,
155- } ,
156- } ) ,
157- ) ,
158- )
159- fireEvent . change ( screen . getByRole ( "combobox" ) , { target : { value : "new" } } )
160- expect ( onSelect ) . toHaveBeenCalledWith ( "new" )
161- expect ( vscode . postMessage ) . toHaveBeenCalledTimes ( 3 )
162- } ,
163- )
120+ const profileConfig : ProviderSettings = { awsRegion : "eu-west-3" , awsUseProfile : true , awsProfile : "work" }
121+ const credentialsConfig : ProviderSettings = {
122+ awsRegion : "eu-west-3" ,
123+ awsAccessKey : "key" ,
124+ awsSecretKey : "secret" ,
125+ awsSessionToken : "session" ,
126+ }
127+
128+ it . each ( [
129+ { config : profileConfig , change : { awsRegion : "us-east-1" } } ,
130+ { config : profileConfig , change : { awsProfile : "other" } } ,
131+ { config : credentialsConfig , change : { awsAccessKey : "rotated-key" } } ,
132+ { config : credentialsConfig , change : { awsSecretKey : "rotated-secret" } } ,
133+ { config : credentialsConfig , change : { awsSessionToken : "rotated-session" } } ,
134+ ] ) ( "ignores stale catalogue replies after connection settings change: $change" , ( { config, change } ) => {
135+ const onSelect = vi . fn ( )
136+ const { rerender } = render ( < BedrockCatalog apiConfiguration = { config } onSelect = { onSelect } /> )
137+ fireEvent . click ( screen . getByRole ( "button" ) )
138+ const first = vi . mocked ( vscode . postMessage ) . mock . calls [ 0 ] [ 0 ]
139+ expect ( first . apiConfiguration ) . toEqual ( expect . objectContaining ( config ) )
140+ rerender ( < BedrockCatalog apiConfiguration = { { ...config , ...change } } onSelect = { onSelect } /> )
141+ expect ( vscode . postMessage ) . toHaveBeenLastCalledWith ( {
142+ type : BedrockModelsMessageType . cancelBedrockModels ,
143+ requestId : first . requestId ,
144+ } )
145+ act ( ( ) =>
146+ window . dispatchEvent (
147+ new MessageEvent ( "message" , {
148+ data : {
149+ type : BedrockModelsMessageType . bedrockModels ,
150+ requestId : first . requestId ,
151+ bedrockModels : [ { arn : "old" , name : "Stale" , kind : "global" } ] ,
152+ } ,
153+ } ) ,
154+ ) ,
155+ )
156+ expect ( screen . queryByRole ( "combobox" ) ) . not . toBeInTheDocument ( )
157+ fireEvent . click ( screen . getByRole ( "button" ) )
158+ const second = vi . mocked ( vscode . postMessage ) . mock . calls [ 2 ] [ 0 ]
159+ act ( ( ) =>
160+ window . dispatchEvent (
161+ new MessageEvent ( "message" , {
162+ data : {
163+ type : BedrockModelsMessageType . bedrockModels ,
164+ requestId : second . requestId ,
165+ bedrockModels : [ { arn : "new" , name : "Current" , kind : "geographic" } ] ,
166+ } ,
167+ } ) ,
168+ ) ,
169+ )
170+ fireEvent . change ( screen . getByRole ( "combobox" ) , { target : { value : "new" } } )
171+ expect ( onSelect ) . toHaveBeenCalledWith ( "new" )
172+ expect ( vscode . postMessage ) . toHaveBeenCalledTimes ( 3 )
173+ } )
164174
165175it ( "shows discovery failures and allows retry without claiming availability" , ( ) => {
166176 render ( < BedrockCatalog apiConfiguration = { { awsRegion : "eu-west-3" } } onSelect = { vi . fn ( ) } /> )
0 commit comments