From 9f99703fc5419021dd41eed1ab67dee6e7dff86f Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sat, 30 Sep 2023 19:46:36 -0700 Subject: [PATCH] add missing etag header in download object response --- fakestorage/object.go | 1 + fakestorage/object_test.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/fakestorage/object.go b/fakestorage/object.go index 047629dda6..1c5b650a1d 100644 --- a/fakestorage/object.go +++ b/fakestorage/object.go @@ -867,6 +867,7 @@ func (s *Server) downloadObject(w http.ResponseWriter, r *http.Request) { w.Header().Set("X-Goog-Generation", strconv.FormatInt(obj.Generation, 10)) w.Header().Set("X-Goog-Hash", fmt.Sprintf("crc32c=%s,md5=%s", obj.Crc32c, obj.Md5Hash)) w.Header().Set("Last-Modified", obj.Updated.Format(http.TimeFormat)) + w.Header().Set("ETag", obj.Etag) for name, value := range obj.Metadata { w.Header().Set("X-Goog-Meta-"+name, value) } diff --git a/fakestorage/object_test.go b/fakestorage/object_test.go index 26dc27c225..b1581583ed 100644 --- a/fakestorage/object_test.go +++ b/fakestorage/object_test.go @@ -177,6 +177,10 @@ func checkObjectAttrs(testObj Object, attrs *storage.ObjectAttrs, t *testing.T) if testObj.Content != nil && !bytes.Equal(attrs.MD5, checksum.MD5Hash(testObj.Content)) { t.Errorf("wrong hash returned\nwant %d\ngot %d", checksum.MD5Hash(testObj.Content), attrs.MD5) } + expectedEtag := fmt.Sprintf("\"%s\"", checksum.EncodedHash(attrs.MD5)) + if attrs.Etag != expectedEtag { + t.Errorf("wrong Etag returned\nwant %s\ngot %s", expectedEtag, attrs.Etag) + } if testObj.Metadata != nil { if val, err := getMetadataHeaderFromAttrs(attrs, "MetaHeader"); err != nil || val != testObj.Metadata["MetaHeader"] { t.Errorf("wrong MetaHeader returned\nwant %s\ngot %v", testObj.Metadata["MetaHeader"], val)