Skip to content

Commit 84bb6b0

Browse files
committed
add more tests for parser and resolver
1 parent 45f85f6 commit 84bb6b0

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

aws_lambda_powertools/utilities/parser/envelopes/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from .apigw_websocket import ApiGatewayWebSocketEnvelope
33
from .apigwv2 import ApiGatewayV2Envelope
44
from .base import BaseEnvelope
5-
from .bedrock_agent import BedrockAgentEnvelope
5+
from .bedrock_agent import BedrockAgentEnvelope, BedrockAgentFunctionEnvelope
66
from .cloudwatch import CloudWatchLogsEnvelope
77
from .dynamodb import DynamoDBStreamEnvelope
88
from .event_bridge import EventBridgeEnvelope
@@ -20,6 +20,7 @@
2020
"ApiGatewayV2Envelope",
2121
"ApiGatewayWebSocketEnvelope",
2222
"BedrockAgentEnvelope",
23+
"BedrockAgentFunctionEnvelope",
2324
"CloudWatchLogsEnvelope",
2425
"DynamoDBStreamEnvelope",
2526
"EventBridgeEnvelope",

tests/functional/event_handler/required_dependencies/test_bedrock_agent_functions.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,23 @@ def test_resolve_raises_value_error_on_missing_required_field():
132132
resolver.resolve(incomplete_event, {})
133133

134134
assert "Missing required field:" in str(excinfo.value)
135+
136+
137+
def test_resolve_with_no_registered_function():
138+
# GIVEN a Bedrock Agent Function resolver
139+
app = BedrockAgentFunctionResolver()
140+
141+
# AND a valid event but with a non-existent function
142+
raw_event = {
143+
"messageVersion": "1.0",
144+
"agent": {"name": "TestAgent", "id": "test-id", "alias": "test", "version": "1"},
145+
"actionGroup": "test_group",
146+
"function": "non_existent_function",
147+
"parameters": [],
148+
}
149+
150+
# WHEN calling resolve with a non-existent function
151+
result = app.resolve(raw_event, {})
152+
153+
# THEN the response should contain an error message
154+
assert "Error: 'non_existent_function'" in result["response"]["functionResponse"]["responseBody"]["TEXT"]["body"]

tests/unit/parser/_pydantic/test_bedrock_agent.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,16 @@ def test_bedrock_agent_function_event():
108108
assert parameters[1].name == "endDate"
109109
assert parameters[1].type_ == "string"
110110
assert parameters[1].value == "2024-03-20"
111+
112+
113+
def test_bedrock_agent_function_event_with_envelope():
114+
raw_event = load_event("bedrockAgentFunctionEvent.json")
115+
raw_event["inputText"] = '{"username": "Jane", "name": "Doe"}'
116+
parsed_event: MyBedrockAgentBusiness = parse(
117+
event=raw_event,
118+
model=MyBedrockAgentBusiness,
119+
envelope=envelopes.BedrockAgentFunctionEnvelope,
120+
)
121+
122+
assert parsed_event.username == "Jane"
123+
assert parsed_event.name == "Doe"

0 commit comments

Comments
 (0)