22from unittest .mock import Mock , patch
33
44
5+ @patch ("app.services.prompt_loader.load_prompt" )
56@patch ("boto3.client" )
6- def test_get_bedrock_knowledgebase_response (mock_boto_client : Mock , mock_env : Mock ):
7+ def test_get_bedrock_knowledgebase_response (mock_boto_client : Mock , mock_load_prompt : Mock , mock_env : Mock ):
78 """Test Bedrock knowledge base integration"""
89 # set up mocks
910 mock_client = Mock ()
@@ -19,13 +20,15 @@ def test_get_bedrock_knowledgebase_response(mock_boto_client: Mock, mock_env: Mo
1920 result = query_bedrock ("test query" )
2021
2122 # assertions
23+ mock_load_prompt .assert_called_once_with ("test-rag-prompt" , "DRAFT" )
2224 mock_boto_client .assert_called_once_with (service_name = "bedrock-agent-runtime" , region_name = "eu-west-2" )
2325 mock_client .retrieve_and_generate .assert_called_once ()
2426 assert result ["output" ]["text" ] == "bedrock response"
2527
2628
29+ @patch ("app.services.prompt_loader.load_prompt" )
2730@patch ("boto3.client" )
28- def test_query_bedrock_with_session (mock_boto_client : Mock , mock_env : Mock ):
31+ def test_query_bedrock_with_session (mock_boto_client : Mock , mock_load_prompt : Mock , mock_env : Mock ):
2932 """Test query_bedrock with existing session"""
3033 # set up mocks
3134 mock_client = Mock ()
@@ -42,13 +45,15 @@ def test_query_bedrock_with_session(mock_boto_client: Mock, mock_env: Mock):
4245 result = query_bedrock ("test query" , session_id = "existing_session" )
4346
4447 # assertions
48+ mock_load_prompt .assert_called_once_with ("test-rag-prompt" , "DRAFT" )
4549 assert result == mock_response
4650 call_args = mock_client .retrieve_and_generate .call_args [1 ]
4751 assert call_args ["sessionId" ] == "existing_session"
4852
4953
54+ @patch ("app.services.prompt_loader.load_prompt" )
5055@patch ("boto3.client" )
51- def test_query_bedrock_without_session (mock_boto_client : Mock , mock_env : Mock ):
56+ def test_query_bedrock_without_session (mock_boto_client : Mock , mock_load_prompt : Mock , mock_env : Mock ):
5257 """Test query_bedrock without session"""
5358 # set up mocks
5459 mock_client = Mock ()
@@ -65,6 +70,35 @@ def test_query_bedrock_without_session(mock_boto_client: Mock, mock_env: Mock):
6570 result = query_bedrock ("test query" )
6671
6772 # assertions
73+ mock_load_prompt .assert_called_once_with ("test-rag-prompt" , "DRAFT" )
6874 assert result == mock_response
6975 call_args = mock_client .retrieve_and_generate .call_args [1 ]
7076 assert "sessionId" not in call_args
77+
78+
79+ @patch ("app.services.prompt_loader.load_prompt" )
80+ @patch ("boto3.client" )
81+ def test_query_bedrock_check_prompt (mock_boto_client : Mock , mock_load_prompt : Mock , mock_env : Mock ):
82+ """Test query_bedrock prompt loading"""
83+ # set up mocks
84+ mock_client = Mock ()
85+ mock_boto_client .return_value = mock_client
86+ mock_client .retrieve_and_generate .return_value = {"output" : {"text" : "response" }}
87+ mock_load_prompt .return_value = "Test prompt template"
88+
89+ # delete and import module to test
90+ if "app.services.bedrock" in sys .modules :
91+ del sys .modules ["app.services.bedrock" ]
92+ from app .services .bedrock import query_bedrock
93+
94+ # perform operation
95+ result = query_bedrock ("test query" )
96+
97+ # assertions
98+ mock_load_prompt .assert_called_once_with ("test-rag-prompt" , "DRAFT" )
99+ call_args = mock_client .retrieve_and_generate .call_args [1 ]
100+ prompt_template = call_args ["retrieveAndGenerateConfiguration" ]["knowledgeBaseConfiguration" ][
101+ "generationConfiguration"
102+ ]["promptTemplate" ]["textPromptTemplate" ]
103+ assert prompt_template == "Test prompt template"
104+ assert result ["output" ]["text" ] == "response"
0 commit comments