in lambda-http/src/request.rs [686:718]
fn deserializes_apigw_v2_request_events() {
// from the docs
// https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-api-gateway-request
let input = include_str!("../tests/data/apigw_v2_proxy_request.json");
let result = from_str(input);
assert!(
result.is_ok(),
"event was not parsed as expected {:?} given {}",
result,
input
);
let req = result.expect("failed to parse request");
let cookie_header = req
.headers()
.get(http::header::COOKIE)
.ok_or_else(|| "Cookie header not found".to_string())
.and_then(|v| v.to_str().map_err(|e| e.to_string()));
assert_eq!(req.method(), "POST");
assert_eq!(req.uri(), "https://id.execute-api.us-east-1.amazonaws.com/my/path?parameter1=value1¶meter1=value2¶meter2=value");
assert_eq!(cookie_header, Ok("cookie1=value1;cookie2=value2"));
// Ensure this is an APIGWv2 request
let req_context = req.request_context();
assert!(
match req_context {
RequestContext::ApiGatewayV2(_) => true,
_ => false,
},
"expected ApiGatewayV2 context, got {:?}",
req_context
);
}