@@ -1187,39 +1187,42 @@ func newTestMultipartForm(parts []*testFormPart) (io.Reader, string, error) {
1187
1187
}
1188
1188
1189
1189
func TestRegisterAndUnregisterBodyDecoder (t * testing.T ) {
1190
- var (
1191
- contentType = "text/csv"
1192
- decoder = func (body io.Reader , h http.Header , schema * openapi3.SchemaRef , encFn EncodingFn ) (interface {}, error ) {
1193
- data , err := ioutil .ReadAll (body )
1194
- if err != nil {
1195
- return nil , err
1196
- }
1197
- var vv []interface {}
1198
- for _ , v := range strings .Split (string (data ), "," ) {
1199
- vv = append (vv , v )
1200
- }
1201
- return vv , nil
1190
+ var decoder BodyDecoder
1191
+ decoder = func (body io.Reader , h http.Header , schema * openapi3.SchemaRef , encFn EncodingFn ) (decoded interface {}, err error ) {
1192
+ var data []byte
1193
+ if data , err = ioutil .ReadAll (body ); err != nil {
1194
+ return
1202
1195
}
1203
- schema = openapi3 .NewArraySchema ().WithItems (openapi3 .NewStringSchema ()).NewRef ()
1204
- encFn = func (string ) * openapi3.Encoding { return nil }
1205
- body = strings .NewReader ("foo,bar" )
1206
- want = []interface {}{"foo" , "bar" }
1207
- wantErr = & ParseError {Kind : KindUnsupportedFormat }
1208
- )
1196
+ return strings .Split (string (data ), "," ), nil
1197
+ }
1198
+ contentType := "text/csv"
1209
1199
h := make (http.Header )
1210
1200
h .Set (headerCT , contentType )
1211
1201
1202
+ originalDecoder := RegisteredBodyDecoder (contentType )
1203
+ require .Nil (t , originalDecoder )
1204
+
1212
1205
RegisterBodyDecoder (contentType , decoder )
1206
+ require .Equal (t , fmt .Sprintf ("%v" , decoder ), fmt .Sprintf ("%v" , RegisteredBodyDecoder (contentType )))
1207
+
1208
+ body := strings .NewReader ("foo,bar" )
1209
+ schema := openapi3 .NewArraySchema ().WithItems (openapi3 .NewStringSchema ()).NewRef ()
1210
+ encFn := func (string ) * openapi3.Encoding { return nil }
1213
1211
got , err := decodeBody (body , h , schema , encFn )
1214
1212
1215
1213
require .NoError (t , err )
1216
- require .Truef (t , reflect . DeepEqual ( got , want ), "got %v, want %v" , got , want )
1214
+ require .Equal (t , [] string { "foo" , "bar" } , got )
1217
1215
1218
1216
UnregisterBodyDecoder (contentType )
1219
- _ , err = decodeBody (body , h , schema , encFn )
1220
1217
1221
- require .Error (t , err )
1222
- require .Truef (t , matchParseError (err , wantErr ), "got error:\n %v\n want error:\n %v" , err , wantErr )
1218
+ originalDecoder = RegisteredBodyDecoder (contentType )
1219
+ require .Nil (t , originalDecoder )
1220
+
1221
+ _ , err = decodeBody (body , h , schema , encFn )
1222
+ require .Equal (t , & ParseError {
1223
+ Kind : KindUnsupportedFormat ,
1224
+ Reason : prefixUnsupportedCT + ` "text/csv"` ,
1225
+ }, err )
1223
1226
}
1224
1227
1225
1228
func matchParseError (got , want error ) bool {
0 commit comments