Skip to content

Commit 5fb629c

Browse files
author
Ryan Miville
committed
add tests for eventbridge and sqs types
1 parent 07f1c9d commit 5fb629c

6 files changed

+118
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
version: 1.2.3
3+
title: EventBridge event
4+
file: ./test/glambda_test.gleam
5+
test_name: eventbridge_event_test
6+
---
7+
EventBridgeEvent(
8+
id: "2ae770d1-0fca-7b58-8c30-9eb62405a12f",
9+
version: "0",
10+
account: "000000000000",
11+
time: "2024-10-24T17:20:54Z",
12+
region: "us-east-1",
13+
resources: [],
14+
source: "eventbridge.ryanmiville",
15+
detail: dict.from_list([
16+
#("metadata", dict.from_list([])),
17+
#("properties", dict.from_list([
18+
#("foo", "hello"),
19+
])),
20+
]),
21+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
version: 1.2.3
3+
title: SQS batch response
4+
file: ./test/glambda_test.gleam
5+
test_name: sqs_response_test
6+
---
7+
{
8+
"batchItemFailures": [
9+
{
10+
"itemIdentifier": "item_id"
11+
}
12+
]
13+
}

birdie_snapshots/sqs_event.accepted

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
version: 1.2.3
3+
title: SQS event
4+
file: ./test/glambda_test.gleam
5+
test_name: sqs_event_test
6+
---
7+
SqsEvent(records: [
8+
SqsRecord(
9+
message_id: "6cfbd0a8-f7ff-4a02-ba30-5c903f1a8b63",
10+
receipt_handle: "AQEBR3x8seJWvgENTZDqpZv6inIs+Bi496ihA/djTyAALXS9JsAwNnOzgip1vnzUNlVb8oFtbvBem64Ea+oonUWRfMKXS1Xi22PsPfbrmb8j8XK4U1tG2LIfMEv+gTwb0Y5079y/Jp+Z0tN1uf2CjgisgA3DqCGs/sNWjH3qfCkdnx3CfQjjw5PHvvJNMEs2b+so9KyexTHiS1NkQQRbIE2aMPdQd4H96OW6KciGAvgphqWBlxkY6/Qrr1HP+2C7W446DTVIfD9LoWS//UzDX CvaNeW8aAE+ZkF2CDjnRQO9K0uVypxXE+aA9fQnq3gyumAQ+GvvhrfXiw4MHnAvrDL0EcX+znQpk4WYNR6mfsXFGuTzST5M9bWbwa3VfRvXvt0Ngk28pxvd5Clhe4gL9DtknXC6/7vDHndiYEOhaC7lqqE=",
11+
body: "Hello from the subscriber",
12+
attributes: SqsRecordAttributes(
13+
aws_trace_header: None,
14+
approximate_receive_count: "1",
15+
sent_timestamp: "1729789931673",
16+
sender_id: "AROA4MTWMMW6B2A6JRWWH:sqs-ryanmiville-MyAppFunction",
17+
approximate_first_receive_timestamp: "1729789931679",
18+
sequence_number: None,
19+
message_group_id: None,
20+
message_deduplication_id: None,
21+
dead_letter_queue_source_arn: None,
22+
),
23+
message_attributes: dict.from_list([
24+
,
25+
]),
26+
md5_of_body: "e09fb73883f28f5d83a8ddbedcd8a1f5",
27+
event_source: "aws:sqs",
28+
event_source_arn: "arn:aws:sqs:us-east-1:000000000000:sqs-ryanmiville-MyQueueQueue",
29+
aws_region: "us-east-1",
30+
),
31+
])

test/glambda_test.gleam

+22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import birdie
22
import glambda.{
33
type ApiGatewayProxyResultV2, type JsEvent, ApiGatewayProxyResultV2,
4+
SqsBatchItemFailure, SqsBatchResponse,
45
}
56
import gleam/dict
67
import gleam/option.{None, Some}
@@ -96,6 +97,27 @@ pub fn api_gateway_v2_http_response_valid_empty_fields_test() {
9697
|> birdie.snap("API Gateway V2 HTTP Response with valid empty fields")
9798
}
9899

100+
pub fn eventbridge_event_test() {
101+
js_event("./test/testdata/eventbridge-event.json")
102+
|> glambda.to_eventbridge_event
103+
|> format
104+
|> birdie.snap("EventBridge event")
105+
}
106+
107+
pub fn sqs_event_test() {
108+
js_event("./test/testdata/sqs-event.json")
109+
|> glambda.to_sqs_event
110+
|> format
111+
|> birdie.snap("SQS event")
112+
}
113+
114+
pub fn sqs_response_test() {
115+
SqsBatchResponse([SqsBatchItemFailure("item_id")])
116+
|> glambda.from_sqs_batch_response
117+
|> stringify
118+
|> birdie.snap("SQS batch response")
119+
}
120+
99121
// pub fn wisp_request_test() {
100122
// js_event("./test/testdata/apigw-v2-request-jwt-authorizer.json")
101123
// |> glambda.to_api_gateway_proxy_event_v2

test/testdata/eventbridge-event.json

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"version": "0",
3+
"id": "2ae770d1-0fca-7b58-8c30-9eb62405a12f",
4+
"detail-type": "app.myevent",
5+
"source": "eventbridge.ryanmiville",
6+
"account": "000000000000",
7+
"time": "2024-10-24T17:20:54Z",
8+
"region": "us-east-1",
9+
"resources": [],
10+
"detail": { "metadata": {}, "properties": { "foo": "hello" } }
11+
}

test/testdata/sqs-event.json

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"Records": [
3+
{
4+
"messageId": "6cfbd0a8-f7ff-4a02-ba30-5c903f1a8b63",
5+
"receiptHandle": "AQEBR3x8seJWvgENTZDqpZv6inIs+Bi496ihA/djTyAALXS9JsAwNnOzgip1vnzUNlVb8oFtbvBem64Ea+oonUWRfMKXS1Xi22PsPfbrmb8j8XK4U1tG2LIfMEv+gTwb0Y5079y/Jp+Z0tN1uf2CjgisgA3DqCGs/sNWjH3qfCkdnx3CfQjjw5PHvvJNMEs2b+so9KyexTHiS1NkQQRbIE2aMPdQd4H96OW6KciGAvgphqWBlxkY6/Qrr1HP+2C7W446DTVIfD9LoWS//UzDX CvaNeW8aAE+ZkF2CDjnRQO9K0uVypxXE+aA9fQnq3gyumAQ+GvvhrfXiw4MHnAvrDL0EcX+znQpk4WYNR6mfsXFGuTzST5M9bWbwa3VfRvXvt0Ngk28pxvd5Clhe4gL9DtknXC6/7vDHndiYEOhaC7lqqE=",
6+
"body": "Hello from the subscriber",
7+
"attributes": {
8+
"ApproximateReceiveCount": "1",
9+
"SentTimestamp": "1729789931673",
10+
"SenderId": "AROA4MTWMMW6B2A6JRWWH:sqs-ryanmiville-MyAppFunction",
11+
"ApproximateFirstReceiveTimestamp": "1729789931679"
12+
},
13+
"messageAttributes": {},
14+
"md5OfBody": "e09fb73883f28f5d83a8ddbedcd8a1f5",
15+
"eventSource": "aws:sqs",
16+
"eventSourceARN": "arn:aws:sqs:us-east-1:000000000000:sqs-ryanmiville-MyQueueQueue",
17+
"awsRegion": "us-east-1"
18+
}
19+
]
20+
}

0 commit comments

Comments
 (0)