mirror of
https://github.com/pgsty/minio.git
synced 2026-07-19 20:20:25 +03:00
api: Handle content-length-range policy properly. (#3297)
content-length-range policy in postPolicy API was
not working properly handle it. The reflection
strategy used has changed in recent version of Go.
Any free form interface{} of any integer is treated
as `float64` this caused a bug where content-length-range
parsing failed to provide any value.
Fixes #3295
This commit is contained in:
@@ -116,8 +116,8 @@ func TestIsValidObjectName(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// Tests limitReader
|
||||
func TestLimitReader(t *testing.T) {
|
||||
// Tests rangeReader.
|
||||
func TestRangeReader(t *testing.T) {
|
||||
testCases := []struct {
|
||||
data string
|
||||
minLen int64
|
||||
@@ -126,15 +126,19 @@ func TestLimitReader(t *testing.T) {
|
||||
}{
|
||||
{"1234567890", 0, 15, nil},
|
||||
{"1234567890", 0, 10, nil},
|
||||
{"1234567890", 0, 5, errDataTooLarge},
|
||||
{"123", 5, 10, errDataTooSmall},
|
||||
{"1234567890", 0, 5, toObjectErr(errDataTooLarge, "test", "test")},
|
||||
{"123", 5, 10, toObjectErr(errDataTooSmall, "test", "test")},
|
||||
{"123", 2, 10, nil},
|
||||
}
|
||||
|
||||
for i, test := range testCases {
|
||||
r := strings.NewReader(test.data)
|
||||
_, err := ioutil.ReadAll(limitReader(r, test.minLen, test.maxLen))
|
||||
if err != test.err {
|
||||
_, err := ioutil.ReadAll(&rangeReader{
|
||||
Reader: r,
|
||||
Min: test.minLen,
|
||||
Max: test.maxLen,
|
||||
})
|
||||
if toObjectErr(err, "test", "test") != test.err {
|
||||
t.Fatalf("test %d failed: expected %v, got %v", i+1, test.err, err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user