forked from TrueCloudLab/frostfs-s3-gw
95 lines
1.9 KiB
Go
95 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/handler"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDefaultNamespace(t *testing.T) {
|
|
xmlBodyWithNamespace := `
|
|
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
<Part>
|
|
<ETag>string</ETag>
|
|
<PartNumber>1</PartNumber>
|
|
</Part>
|
|
</CompleteMultipartUpload>
|
|
`
|
|
xmlBodyWithInvalidNamespace := `
|
|
<CompleteMultipartUpload xmlns="http://bla.bla.bla/">
|
|
<Part>
|
|
<ETag>string</ETag>
|
|
<PartNumber>1</PartNumber>
|
|
</Part>
|
|
</CompleteMultipartUpload>
|
|
`
|
|
xmlBody := `
|
|
<CompleteMultipartUpload>
|
|
<Part>
|
|
<ETag>string</ETag>
|
|
<PartNumber>1</PartNumber>
|
|
</Part>
|
|
</CompleteMultipartUpload>
|
|
`
|
|
|
|
for _, tc := range []struct {
|
|
settings *appSettings
|
|
input string
|
|
err bool
|
|
}{
|
|
{
|
|
settings: &appSettings{
|
|
defaultXMLNSForCompleteMultipart: false,
|
|
},
|
|
input: xmlBodyWithNamespace,
|
|
err: false,
|
|
},
|
|
{
|
|
settings: &appSettings{
|
|
defaultXMLNSForCompleteMultipart: false,
|
|
},
|
|
input: xmlBody,
|
|
err: true,
|
|
},
|
|
{
|
|
settings: &appSettings{
|
|
defaultXMLNSForCompleteMultipart: false,
|
|
},
|
|
input: xmlBodyWithInvalidNamespace,
|
|
err: true,
|
|
},
|
|
{
|
|
settings: &appSettings{
|
|
defaultXMLNSForCompleteMultipart: true,
|
|
},
|
|
input: xmlBodyWithNamespace,
|
|
err: false,
|
|
},
|
|
{
|
|
settings: &appSettings{
|
|
defaultXMLNSForCompleteMultipart: true,
|
|
},
|
|
input: xmlBody,
|
|
err: false,
|
|
},
|
|
{
|
|
settings: &appSettings{
|
|
defaultXMLNSForCompleteMultipart: true,
|
|
},
|
|
input: xmlBodyWithInvalidNamespace,
|
|
err: true,
|
|
},
|
|
} {
|
|
t.Run("", func(t *testing.T) {
|
|
model := new(handler.CompleteMultipartUpload)
|
|
err := tc.settings.NewCompleteMultipartDecoder(bytes.NewBufferString(tc.input)).Decode(model)
|
|
if tc.err {
|
|
require.Error(t, err)
|
|
} else {
|
|
require.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|