| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package binding
- import (
- "bytes"
- "io/ioutil"
- "testing"
- "github.com/gin-gonic/gin/binding/example"
- "github.com/golang/protobuf/proto"
- "github.com/stretchr/testify/assert"
- "github.com/ugorji/go/codec"
- )
- func TestBindingBody(t *testing.T) {
- for _, tt := range []struct {
- name string
- binding BindingBody
- body string
- want string
- }{
- {
- name: "JSON bidning",
- binding: JSON,
- body: `{"foo":"FOO"}`,
- },
- {
- name: "XML bidning",
- binding: XML,
- body: `<?xml version="1.0" encoding="UTF-8"?>
- <root>
- <foo>FOO</foo>
- </root>`,
- },
- {
- name: "MsgPack binding",
- binding: MsgPack,
- body: msgPackBody(t),
- },
- } {
- t.Logf("testing: %s", tt.name)
- req := requestWithBody("POST", "/", tt.body)
- form := FooStruct{}
- body, _ := ioutil.ReadAll(req.Body)
- assert.NoError(t, tt.binding.BindBody(body, &form))
- assert.Equal(t, FooStruct{"FOO"}, form)
- }
- }
- func msgPackBody(t *testing.T) string {
- test := FooStruct{"FOO"}
- h := new(codec.MsgpackHandle)
- buf := bytes.NewBuffer(nil)
- assert.NoError(t, codec.NewEncoder(buf, h).Encode(test))
- return buf.String()
- }
- func TestBindingBodyProto(t *testing.T) {
- test := example.Test{
- Label: proto.String("FOO"),
- }
- data, _ := proto.Marshal(&test)
- req := requestWithBody("POST", "/", string(data))
- form := example.Test{}
- body, _ := ioutil.ReadAll(req.Body)
- assert.NoError(t, ProtoBuf.BindBody(body, &form))
- assert.Equal(t, test, form)
- }
|