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{ defaultXMLNS: false, }, input: xmlBodyWithNamespace, err: false, }, { settings: &appSettings{ defaultXMLNS: false, }, input: xmlBody, err: true, }, { settings: &appSettings{ defaultXMLNS: false, }, input: xmlBodyWithInvalidNamespace, err: true, }, { settings: &appSettings{ defaultXMLNS: true, }, input: xmlBodyWithNamespace, err: false, }, { settings: &appSettings{ defaultXMLNS: true, }, input: xmlBody, err: false, }, { settings: &appSettings{ defaultXMLNS: true, }, input: xmlBodyWithInvalidNamespace, err: true, }, } { t.Run("", func(t *testing.T) { model := new(handler.CompleteMultipartUpload) err := tc.settings.NewXMLDecoder(bytes.NewBufferString(tc.input)).Decode(model) if tc.err { require.Error(t, err) } else { require.NoError(t, err) } }) } }