55
66import pytest
77
8- from kagent .adk .models ._bedrock import KAgentBedrockLlm , _get_bedrock_client
8+ from kagent .adk .models ._bedrock import KAgentBedrockLlm , _get_bedrock_client , _inject_bearer_token
99
1010
1111class TestGetBedrockClient :
@@ -30,6 +30,53 @@ def test_defaults_to_us_east_1(self):
3030 _get_bedrock_client ()
3131 assert mock_boto .call_args .kwargs ["region_name" ] == "us-east-1"
3232
33+ def test_bearer_token_uses_unsigned_config (self ):
34+ """When AWS_BEARER_TOKEN_BEDROCK is set, client uses UNSIGNED signature."""
35+ from botocore import UNSIGNED
36+
37+ env = {k : v for k , v in __import__ ("os" ).environ .items () if k not in ("AWS_DEFAULT_REGION" , "AWS_REGION" )}
38+ env ["AWS_BEARER_TOKEN_BEDROCK" ] = "test-token-123"
39+ with mock .patch .dict ("os.environ" , env , clear = True ):
40+ with mock .patch ("kagent.adk.models._bedrock.boto3.client" ) as mock_boto :
41+ mock_client = mock .MagicMock ()
42+ mock_boto .return_value = mock_client
43+ _get_bedrock_client ()
44+ config = mock_boto .call_args .kwargs ["config" ]
45+ assert config .signature_version == UNSIGNED
46+
47+ def test_bearer_token_registers_event_handler (self ):
48+ """When AWS_BEARER_TOKEN_BEDROCK is set, a before-sign handler is registered."""
49+ env = {k : v for k , v in __import__ ("os" ).environ .items () if k not in ("AWS_DEFAULT_REGION" , "AWS_REGION" )}
50+ env ["AWS_BEARER_TOKEN_BEDROCK" ] = "test-token-123"
51+ with mock .patch .dict ("os.environ" , env , clear = True ):
52+ with mock .patch ("kagent.adk.models._bedrock.boto3.client" ) as mock_boto :
53+ mock_client = mock .MagicMock ()
54+ mock_boto .return_value = mock_client
55+ _get_bedrock_client ()
56+ mock_client .meta .events .register .assert_called_once ()
57+ call_args = mock_client .meta .events .register .call_args
58+ assert call_args [0 ][0 ] == "before-sign.bedrock-runtime.*"
59+
60+ def test_no_bearer_token_uses_standard_auth (self ):
61+ """When AWS_BEARER_TOKEN_BEDROCK is not set, standard credential chain is used."""
62+ env = {k : v for k , v in __import__ ("os" ).environ .items () if k not in ("AWS_DEFAULT_REGION" , "AWS_REGION" , "AWS_BEARER_TOKEN_BEDROCK" )}
63+ with mock .patch .dict ("os.environ" , env , clear = True ):
64+ with mock .patch ("kagent.adk.models._bedrock.boto3.client" ) as mock_boto :
65+ mock_client = mock .MagicMock ()
66+ mock_boto .return_value = mock_client
67+ _get_bedrock_client ()
68+ assert "config" not in mock_boto .call_args .kwargs
69+ mock_client .meta .events .register .assert_not_called ()
70+
71+
72+ class TestInjectBearerToken :
73+ def test_injects_authorization_header (self ):
74+ """_inject_bearer_token sets the correct Authorization header."""
75+ mock_request = mock .MagicMock ()
76+ mock_request .headers = {}
77+ _inject_bearer_token ("my-secret-token" , mock_request )
78+ assert mock_request .headers ["Authorization" ] == "Bearer my-secret-token"
79+
3380
3481class TestKAgentBedrockLlm :
3582 def test_default_construction (self ):
0 commit comments