|
|
@ -141,8 +141,9 @@ func TestExtractSignedHeaders(t *testing.T) { |
|
|
|
expectedContentSha256 := "1234abcd" |
|
|
|
expectedContentSha256 := "1234abcd" |
|
|
|
expectedTime := UTCNow().Format(iso8601Format) |
|
|
|
expectedTime := UTCNow().Format(iso8601Format) |
|
|
|
expectedTransferEncoding := "gzip" |
|
|
|
expectedTransferEncoding := "gzip" |
|
|
|
|
|
|
|
expectedExpect := "100-continue" |
|
|
|
|
|
|
|
|
|
|
|
r, err := http.NewRequest("GET", "http://localhost", nil) |
|
|
|
r, err := http.NewRequest("GET", "http://play.minio.io:9000", nil) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
t.Fatal("Unable to create http.Request :", err) |
|
|
|
t.Fatal("Unable to create http.Request :", err) |
|
|
|
} |
|
|
|
} |
|
|
@ -150,9 +151,8 @@ func TestExtractSignedHeaders(t *testing.T) { |
|
|
|
|
|
|
|
|
|
|
|
// Creating input http header.
|
|
|
|
// Creating input http header.
|
|
|
|
inputHeader := r.Header |
|
|
|
inputHeader := r.Header |
|
|
|
inputHeader.Set(signedHeaders[0], expectedHost) |
|
|
|
inputHeader.Set("x-amz-content-sha256", expectedContentSha256) |
|
|
|
inputHeader.Set(signedHeaders[1], expectedContentSha256) |
|
|
|
inputHeader.Set("x-amz-date", expectedTime) |
|
|
|
inputHeader.Set(signedHeaders[2], expectedTime) |
|
|
|
|
|
|
|
// calling the function being tested.
|
|
|
|
// calling the function being tested.
|
|
|
|
extractedSignedHeaders, errCode := extractSignedHeaders(signedHeaders, r) |
|
|
|
extractedSignedHeaders, errCode := extractSignedHeaders(signedHeaders, r) |
|
|
|
if errCode != ErrNone { |
|
|
|
if errCode != ErrNone { |
|
|
@ -160,24 +160,24 @@ func TestExtractSignedHeaders(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// "x-amz-content-sha256" header value from the extracted result.
|
|
|
|
// "x-amz-content-sha256" header value from the extracted result.
|
|
|
|
extractedContentSha256 := extractedSignedHeaders[signedHeaders[1]] |
|
|
|
extractedContentSha256 := extractedSignedHeaders.Get("x-amz-content-sha256") |
|
|
|
// "host" header value from the extracted result.
|
|
|
|
// "host" header value from the extracted result.
|
|
|
|
extractedHost := extractedSignedHeaders[signedHeaders[0]] |
|
|
|
extractedHost := extractedSignedHeaders.Get("host") |
|
|
|
// "x-amz-date" header from the extracted result.
|
|
|
|
// "x-amz-date" header from the extracted result.
|
|
|
|
extractedDate := extractedSignedHeaders[signedHeaders[2]] |
|
|
|
extractedDate := extractedSignedHeaders.Get("x-amz-date") |
|
|
|
// extracted `expect` header.
|
|
|
|
// extracted `expect` header.
|
|
|
|
extractedExpect := extractedSignedHeaders["expect"][0] |
|
|
|
extractedExpect := extractedSignedHeaders.Get("expect") |
|
|
|
|
|
|
|
|
|
|
|
extractedTransferEncoding := extractedSignedHeaders["transfer-encoding"][0] |
|
|
|
extractedTransferEncoding := extractedSignedHeaders.Get("transfer-encoding") |
|
|
|
|
|
|
|
|
|
|
|
if expectedHost != extractedHost[0] { |
|
|
|
if expectedHost != extractedHost { |
|
|
|
t.Errorf("host header mismatch: expected `%s`, got `%s`", expectedHost, extractedHost) |
|
|
|
t.Errorf("host header mismatch: expected `%s`, got `%s`", expectedHost, extractedHost) |
|
|
|
} |
|
|
|
} |
|
|
|
// assert the result with the expected value.
|
|
|
|
// assert the result with the expected value.
|
|
|
|
if expectedContentSha256 != extractedContentSha256[0] { |
|
|
|
if expectedContentSha256 != extractedContentSha256 { |
|
|
|
t.Errorf("x-amz-content-sha256 header mismatch: expected `%s`, got `%s`", expectedContentSha256, extractedContentSha256) |
|
|
|
t.Errorf("x-amz-content-sha256 header mismatch: expected `%s`, got `%s`", expectedContentSha256, extractedContentSha256) |
|
|
|
} |
|
|
|
} |
|
|
|
if expectedTime != extractedDate[0] { |
|
|
|
if expectedTime != extractedDate { |
|
|
|
t.Errorf("x-amz-date header mismatch: expected `%s`, got `%s`", expectedTime, extractedDate) |
|
|
|
t.Errorf("x-amz-date header mismatch: expected `%s`, got `%s`", expectedTime, extractedDate) |
|
|
|
} |
|
|
|
} |
|
|
|
if extractedTransferEncoding != expectedTransferEncoding { |
|
|
|
if extractedTransferEncoding != expectedTransferEncoding { |
|
|
@ -185,12 +185,12 @@ func TestExtractSignedHeaders(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Since the list of signed headers value contained `expect`, the default value of `100-continue` will be added to extracted signed headers.
|
|
|
|
// Since the list of signed headers value contained `expect`, the default value of `100-continue` will be added to extracted signed headers.
|
|
|
|
if extractedExpect != "100-continue" { |
|
|
|
if extractedExpect != expectedExpect { |
|
|
|
t.Errorf("expect header incorrect value: expected `%s`, got `%s`", "100-continue", extractedExpect) |
|
|
|
t.Errorf("expect header incorrect value: expected `%s`, got `%s`", expectedExpect, extractedExpect) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// case where the headers doesn't contain the one of the signed header in the signed headers list.
|
|
|
|
// case where the headers don't contain the one of the signed header in the signed headers list.
|
|
|
|
signedHeaders = append(signedHeaders, " X-Amz-Credential") |
|
|
|
signedHeaders = append(signedHeaders, "X-Amz-Credential") |
|
|
|
// expected to fail with `ErrUnsignedHeaders`.
|
|
|
|
// expected to fail with `ErrUnsignedHeaders`.
|
|
|
|
_, errCode = extractSignedHeaders(signedHeaders, r) |
|
|
|
_, errCode = extractSignedHeaders(signedHeaders, r) |
|
|
|
if errCode != ErrUnsignedHeaders { |
|
|
|
if errCode != ErrUnsignedHeaders { |
|
|
@ -198,7 +198,7 @@ func TestExtractSignedHeaders(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// case where the list of signed headers doesn't contain the host field.
|
|
|
|
// case where the list of signed headers doesn't contain the host field.
|
|
|
|
signedHeaders = signedHeaders[1:] |
|
|
|
signedHeaders = signedHeaders[2:5] |
|
|
|
// expected to fail with `ErrUnsignedHeaders`.
|
|
|
|
// expected to fail with `ErrUnsignedHeaders`.
|
|
|
|
_, errCode = extractSignedHeaders(signedHeaders, r) |
|
|
|
_, errCode = extractSignedHeaders(signedHeaders, r) |
|
|
|
if errCode != ErrUnsignedHeaders { |
|
|
|
if errCode != ErrUnsignedHeaders { |
|
|
|