@@ -526,7 +526,57 @@ func TestGetMetadataServiceRequest404(t *testing.T) {
526
526
527
527
_ , err := imds .GetMetadataInfo (requestPath , false )
528
528
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" )
530
580
}
531
581
532
582
func TestGetMetadataServiceRequestFailure (t * testing.T ) {
0 commit comments