@@ -167,3 +167,82 @@ def test_generate_converts_file_blocks(self, mock_session_cls):
167167 },
168168 }
169169 assert result == fake_result
170+
171+
172+ class TestBedrockSslConfiguration :
173+ def _make_passthrough (self ):
174+ return AwsBedrockCompletionsPassthroughClient (
175+ model = "anthropic.claude-haiku-4-5-20251001" ,
176+ token = "test-token" ,
177+ api_flavor = "converse" ,
178+ )
179+
180+ @patch ("uipath_langchain.chat.bedrock.boto3.Session" )
181+ @patch .dict (os .environ , {"SSL_CERT_FILE" : "/tmp/test-ca-bundle.pem" }, clear = False )
182+ def test_get_client_uses_ssl_cert_file (self , mock_session_cls ):
183+ os .environ .pop ("REQUESTS_CA_BUNDLE" , None )
184+ os .environ .pop ("UIPATH_DISABLE_SSL_VERIFY" , None )
185+ mock_session = mock_session_cls .return_value
186+
187+ self ._make_passthrough ().get_client ()
188+
189+ mock_session .client .assert_called_once ()
190+ _ , kwargs = mock_session .client .call_args
191+ assert kwargs ["verify" ] == "/tmp/test-ca-bundle.pem"
192+
193+ @patch ("uipath_langchain.chat.bedrock.boto3.Session" )
194+ @patch .dict (os .environ , {"SSL_CERT_FILE" : "/tmp/test-ca-bundle.pem" }, clear = False )
195+ def test_get_bedrock_client_uses_ssl_cert_file (self , mock_session_cls ):
196+ os .environ .pop ("REQUESTS_CA_BUNDLE" , None )
197+ os .environ .pop ("UIPATH_DISABLE_SSL_VERIFY" , None )
198+ mock_session = mock_session_cls .return_value
199+
200+ self ._make_passthrough ().get_bedrock_client ()
201+
202+ mock_session .client .assert_called_once ()
203+ _ , kwargs = mock_session .client .call_args
204+ assert kwargs ["verify" ] == "/tmp/test-ca-bundle.pem"
205+
206+ @patch ("uipath_langchain.chat.bedrock.boto3.Session" )
207+ @patch .dict (
208+ os .environ ,
209+ {
210+ "SSL_CERT_FILE" : "/tmp/ssl-cert.pem" ,
211+ "REQUESTS_CA_BUNDLE" : "/tmp/requests-ca.pem" ,
212+ },
213+ clear = False ,
214+ )
215+ def test_ssl_cert_file_takes_priority_over_requests_ca_bundle (
216+ self , mock_session_cls
217+ ):
218+ os .environ .pop ("UIPATH_DISABLE_SSL_VERIFY" , None )
219+ mock_session = mock_session_cls .return_value
220+
221+ self ._make_passthrough ().get_client ()
222+
223+ _ , kwargs = mock_session .client .call_args
224+ assert kwargs ["verify" ] == "/tmp/ssl-cert.pem"
225+
226+ @patch ("uipath_langchain.chat.bedrock.boto3.Session" )
227+ @patch .dict (os .environ , {"UIPATH_DISABLE_SSL_VERIFY" : "true" }, clear = False )
228+ def test_disable_ssl_verify (self , mock_session_cls ):
229+ mock_session = mock_session_cls .return_value
230+
231+ self ._make_passthrough ().get_client ()
232+
233+ _ , kwargs = mock_session .client .call_args
234+ assert kwargs ["verify" ] is False
235+
236+ @patch ("uipath_langchain.chat.bedrock.boto3.Session" )
237+ def test_default_uses_certifi (self , mock_session_cls ):
238+ import certifi
239+
240+ os .environ .pop ("SSL_CERT_FILE" , None )
241+ os .environ .pop ("REQUESTS_CA_BUNDLE" , None )
242+ os .environ .pop ("UIPATH_DISABLE_SSL_VERIFY" , None )
243+ mock_session = mock_session_cls .return_value
244+
245+ self ._make_passthrough ().get_client ()
246+
247+ _ , kwargs = mock_session .client .call_args
248+ assert kwargs ["verify" ] == certifi .where ()
0 commit comments