@@ -526,7 +526,57 @@ func TestGetMetadataServiceRequest404(t *testing.T) {
526526
527527 _ , err := imds .GetMetadataInfo (requestPath , false )
528528
529- h .Assert (t , err != nil , "Expected error to be nil but it was not" )
529+ h .Assert (t , err != nil , "Error expected because request errored with 404" )
530+ }
531+
532+ func TestGetMetadataServiceRequest404AllowMissing (t * testing.T ) {
533+ var requestPath string = "/latest/meta-data/instance-type"
534+
535+ server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
536+ rw .Header ().Add ("X-aws-ec2-metadata-token-ttl-seconds" , "100" )
537+ if req .URL .String () == "/latest/api/token" {
538+ rw .WriteHeader (200 )
539+ _ , err := rw .Write ([]byte (`token` ))
540+ h .Ok (t , err )
541+ return
542+ }
543+ h .Equals (t , req .Header .Get ("X-aws-ec2-metadata-token" ), "token" )
544+ h .Equals (t , req .URL .String (), requestPath )
545+ rw .WriteHeader (404 )
546+ }))
547+ defer server .Close ()
548+
549+ // Use URL from our local test server
550+ imds := ec2metadata .New (server .URL , 1 )
551+
552+ _ , err := imds .GetMetadataInfo (requestPath , true )
553+
554+ h .Assert (t , err == nil , "Expected error to be nil but it was not" )
555+ }
556+
557+ func TestGetMetadataServiceRequest500AllowMissing (t * testing.T ) {
558+ var requestPath string = "/latest/meta-data/instance-type"
559+
560+ server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
561+ rw .Header ().Add ("X-aws-ec2-metadata-token-ttl-seconds" , "100" )
562+ if req .URL .String () == "/latest/api/token" {
563+ rw .WriteHeader (200 )
564+ _ , err := rw .Write ([]byte (`token` ))
565+ h .Ok (t , err )
566+ return
567+ }
568+ h .Equals (t , req .Header .Get ("X-aws-ec2-metadata-token" ), "token" )
569+ h .Equals (t , req .URL .String (), requestPath )
570+ rw .WriteHeader (500 )
571+ }))
572+ defer server .Close ()
573+
574+ // Use URL from our local test server
575+ imds := ec2metadata .New (server .URL , 1 )
576+
577+ _ , err := imds .GetMetadataInfo (requestPath , true )
578+
579+ h .Assert (t , err != nil , "Error expected because request errored with 500" )
530580}
531581
532582func TestGetMetadataServiceRequestFailure (t * testing.T ) {
0 commit comments