convert ETag properly for all gateways (#5099)

Previously ID/ETag from backend service is used as is which causes
failure on s3cmd like tools where those tools use ETag as checksum to
validate data.  This is fixed by prepending "-1".

Refer minio/mint#193 minio/mint#201
This commit is contained in:
Bala FA
2017-10-26 10:17:07 -07:00
committed by Dee Koder
parent d23ded0d83
commit bc8b936d4b
6 changed files with 52 additions and 36 deletions

View File

@@ -293,3 +293,22 @@ func TestDumpRequest(t *testing.T) {
t.Fatalf("Expected %#v, got %#v", expectedHeader, res.Header)
}
}
// Test toS3ETag()
func TestToS3ETag(t *testing.T) {
testCases := []struct {
etag string
expectedETag string
}{
{`"8019e762"`, `8019e762-1`},
{"5d57546eeb86b3eba68967292fba0644", "5d57546eeb86b3eba68967292fba0644-1"},
{`"8019e762-1"`, `8019e762-1`},
{"5d57546eeb86b3eba68967292fba0644-1", "5d57546eeb86b3eba68967292fba0644-1"},
}
for i, testCase := range testCases {
etag := toS3ETag(testCase.etag)
if etag != testCase.expectedETag {
t.Fatalf("test %v: expected: %v, got: %v", i+1, testCase.expectedETag, etag)
}
}
}