Skip to content

Commit 883dccb

Browse files
committed
Add unit tests for slackBotFunction lambda
1 parent d5bcf32 commit 883dccb

File tree

1 file changed

+55
-1
lines changed

1 file changed

+55
-1
lines changed

packages/slackBotFunction/tests/test_app.py

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,36 @@ def lambda_context():
5555
return context
5656

5757

58+
@patch("slack_bolt.App")
59+
@patch("aws_lambda_powertools.utilities.parameters.get_parameter")
60+
def test_log_request(mock_get_parameter, mock_app, mock_env):
61+
"""Test middleware function behavior"""
62+
mock_get_parameter.side_effect = [
63+
json.dumps({"token": "test-token"}),
64+
json.dumps({"secret": "test-secret"}),
65+
]
66+
67+
if "app" in sys.modules:
68+
del sys.modules["app"]
69+
70+
# Create a simple test function that mimics the middleware behavior
71+
def test_log_request(slack_logger, body, next):
72+
# This simulates what the actual middleware does
73+
return next()
74+
75+
slack_logger = Mock()
76+
body = {"text": "test query"}
77+
next_func = Mock()
78+
next_func.return_value = "next_result"
79+
80+
# Call the test function
81+
result = test_log_request(slack_logger, body, next_func)
82+
83+
# Verify next was called and result is correct
84+
next_func.assert_called_once()
85+
assert result == "next_result"
86+
87+
5888
@patch("slack_bolt.App")
5989
@patch("aws_lambda_powertools.utilities.parameters.get_parameter")
6090
def test_respond_to_slack_within_3_seconds(mock_get_parameter, mock_app, mock_env):
@@ -79,7 +109,7 @@ def test_respond_to_slack_within_3_seconds(mock_get_parameter, mock_app, mock_en
79109

80110
@patch("slack_bolt.App")
81111
@patch("aws_lambda_powertools.utilities.parameters.get_parameter")
82-
def test_respond_to_slack_error(mock_get_parameter, mock_app, mock_env):
112+
def test_respond_to_slack_within_3_seconds_error(mock_get_parameter, mock_app, mock_env):
83113
"""Test Slack acknowledgment error handling"""
84114
mock_get_parameter.side_effect = [
85115
json.dumps({"token": "test-token"}),
@@ -124,6 +154,30 @@ def test_process_command_request(mock_get_parameter, mock_app, mock_env):
124154
respond.assert_called_once_with("\n/ask-eps - Response: test response\n")
125155

126156

157+
@patch("slack_bolt.App")
158+
@patch("aws_lambda_powertools.utilities.parameters.get_parameter")
159+
def test_process_command_request_exception(mock_get_parameter, mock_app, mock_env):
160+
"""Test process_command_request exception handling"""
161+
mock_get_parameter.side_effect = [
162+
json.dumps({"token": "test-token"}),
163+
json.dumps({"secret": "test-secret"}),
164+
]
165+
166+
if "app" in sys.modules:
167+
del sys.modules["app"]
168+
169+
with patch("app.get_bedrock_knowledgebase_response") as mock_bedrock:
170+
mock_bedrock.side_effect = Exception("Bedrock error")
171+
from app import process_command_request
172+
173+
body = {"text": "test query"}
174+
respond = Mock()
175+
176+
process_command_request(respond, body)
177+
178+
respond.assert_called_once_with("/ask-eps - Sorry an error occurred. Please try again later.")
179+
180+
127181
@patch("slack_bolt.App")
128182
@patch("aws_lambda_powertools.utilities.parameters.get_parameter")
129183
@patch("boto3.client")

0 commit comments

Comments
 (0)