@@ -611,7 +611,57 @@ func TestGetMetadataServiceRequest404(t *testing.T) {
611
611
612
612
_ , err := imds .GetMetadataInfo (requestPath , false )
613
613
614
- h .Assert (t , err != nil , "Expected error to be nil but it was not" )
614
+ h .Assert (t , err != nil , "Error expected because request errored with 404" )
615
+ }
616
+
617
+ func TestGetMetadataServiceRequest404AllowMissing (t * testing.T ) {
618
+ var requestPath string = "/latest/meta-data/instance-type"
619
+
620
+ server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
621
+ rw .Header ().Add ("X-aws-ec2-metadata-token-ttl-seconds" , "100" )
622
+ if req .URL .String () == "/latest/api/token" {
623
+ rw .WriteHeader (200 )
624
+ _ , err := rw .Write ([]byte (`token` ))
625
+ h .Ok (t , err )
626
+ return
627
+ }
628
+ h .Equals (t , req .Header .Get ("X-aws-ec2-metadata-token" ), "token" )
629
+ h .Equals (t , req .URL .String (), requestPath )
630
+ rw .WriteHeader (404 )
631
+ }))
632
+ defer server .Close ()
633
+
634
+ // Use URL from our local test server
635
+ imds := ec2metadata .New (server .URL , 1 )
636
+
637
+ _ , err := imds .GetMetadataInfo (requestPath , true )
638
+
639
+ h .Assert (t , err == nil , "Expected error to be nil but it was not" )
640
+ }
641
+
642
+ func TestGetMetadataServiceRequest500AllowMissing (t * testing.T ) {
643
+ var requestPath string = "/latest/meta-data/instance-type"
644
+
645
+ server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
646
+ rw .Header ().Add ("X-aws-ec2-metadata-token-ttl-seconds" , "100" )
647
+ if req .URL .String () == "/latest/api/token" {
648
+ rw .WriteHeader (200 )
649
+ _ , err := rw .Write ([]byte (`token` ))
650
+ h .Ok (t , err )
651
+ return
652
+ }
653
+ h .Equals (t , req .Header .Get ("X-aws-ec2-metadata-token" ), "token" )
654
+ h .Equals (t , req .URL .String (), requestPath )
655
+ rw .WriteHeader (500 )
656
+ }))
657
+ defer server .Close ()
658
+
659
+ // Use URL from our local test server
660
+ imds := ec2metadata .New (server .URL , 1 )
661
+
662
+ _ , err := imds .GetMetadataInfo (requestPath , true )
663
+
664
+ h .Assert (t , err != nil , "Error expected because request errored with 500" )
615
665
}
616
666
617
667
func TestGetMetadataServiceRequestFailure (t * testing.T ) {
0 commit comments