Skip to content

Commit 62870ab

Browse files
committed
add ec2metadata new tests to check for optional paths
Signed-off-by: Xabier Napal <[email protected]>
1 parent fef7353 commit 62870ab

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

pkg/ec2metadata/ec2metadata_test.go

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,57 @@ func TestGetMetadataServiceRequest404(t *testing.T) {
611611

612612
_, err := imds.GetMetadataInfo(requestPath, false)
613613

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")
615665
}
616666

617667
func TestGetMetadataServiceRequestFailure(t *testing.T) {

0 commit comments

Comments
 (0)