@@ -352,7 +352,7 @@ where
352
352
}
353
353
}
354
354
355
- deserializer. deserialize_map ( HeaderVisitor )
355
+ Ok ( deserializer. deserialize_map ( HeaderVisitor ) . unwrap_or_default ( ) )
356
356
}
357
357
358
358
/// deserializes (json) null values to their default values
@@ -633,6 +633,13 @@ mod tests {
633
633
let req = result. expect ( "failed to parse request" ) ;
634
634
assert_eq ! ( req. method( ) , "GET" ) ;
635
635
assert_eq ! ( req. uri( ) , "https://xxx.execute-api.us-east-1.amazonaws.com/" ) ;
636
+
637
+ // Ensure this is an APIGWv2 request
638
+ let req_context = req. request_context ( ) ;
639
+ assert ! ( match req_context {
640
+ RequestContext :: ApiGatewayV2 ( _) => true ,
641
+ _ => false ,
642
+ } , "expected ApiGatewayV2 context, got {:?}" , req_context) ;
636
643
}
637
644
638
645
#[ test]
@@ -657,6 +664,13 @@ mod tests {
657
664
assert_eq ! ( req. method( ) , "POST" ) ;
658
665
assert_eq ! ( req. uri( ) , "https://id.execute-api.us-east-1.amazonaws.com/my/path?parameter1=value1¶meter1=value2¶meter2=value" ) ;
659
666
assert_eq ! ( cookie_header, Ok ( "cookie1=value1;cookie2=value2" ) ) ;
667
+
668
+ // Ensure this is an APIGWv2 request
669
+ let req_context = req. request_context ( ) ;
670
+ assert ! ( match req_context {
671
+ RequestContext :: ApiGatewayV2 ( _) => true ,
672
+ _ => false ,
673
+ } , "expected ApiGatewayV2 context, got {:?}" , req_context) ;
660
674
}
661
675
662
676
#[ test]
@@ -678,6 +692,13 @@ mod tests {
678
692
req. uri( ) ,
679
693
"https://wt6mne2s9k.execute-api.us-west-2.amazonaws.com/test/hello"
680
694
) ;
695
+
696
+ // Ensure this is an APIGW request
697
+ let req_context = req. request_context ( ) ;
698
+ assert ! ( match req_context {
699
+ RequestContext :: ApiGateway ( _) => true ,
700
+ _ => false ,
701
+ } , "expected ApiGateway context, got {:?}" , req_context) ;
681
702
}
682
703
683
704
#[ test]
@@ -695,6 +716,13 @@ mod tests {
695
716
let req = result. expect ( "failed to parse request" ) ;
696
717
assert_eq ! ( req. method( ) , "GET" ) ;
697
718
assert_eq ! ( req. uri( ) , "https://lambda-846800462-us-east-2.elb.amazonaws.com/" ) ;
719
+
720
+ // Ensure this is an ALB request
721
+ let req_context = req. request_context ( ) ;
722
+ assert ! ( match req_context {
723
+ RequestContext :: Alb ( _) => true ,
724
+ _ => false ,
725
+ } , "expected Alb context, got {:?}" , req_context) ;
698
726
}
699
727
700
728
#[ test]
@@ -808,4 +836,20 @@ mod tests {
808
836
Test { foo: HashMap :: new( ) }
809
837
)
810
838
}
839
+
840
+ #[ test]
841
+ fn deserialize_null_headers ( ) {
842
+ #[ derive( Debug , PartialEq , Deserialize ) ]
843
+ struct Test {
844
+ #[ serde( deserialize_with = "deserialize_headers" ) ]
845
+ headers : http:: HeaderMap ,
846
+ }
847
+
848
+ assert_eq ! (
849
+ serde_json:: from_str:: <Test >( r#"{"headers":null}"# ) . expect( "failed to deserialize" ) ,
850
+ Test {
851
+ headers: http:: HeaderMap :: new( )
852
+ }
853
+ )
854
+ }
811
855
}
0 commit comments