mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-23 18:22:23 +08:00
add test case for protobuf
This commit is contained in:
parent
6b0ad1082e
commit
f9b4e94277
@ -7,6 +7,8 @@ package binding
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"io/ioutil"
|
||||||
"mime/multipart"
|
"mime/multipart"
|
||||||
"net/http"
|
"net/http"
|
||||||
"testing"
|
"testing"
|
||||||
@ -484,6 +486,18 @@ func TestBindingProtoBuf(t *testing.T) {
|
|||||||
string(data), string(data[1:]))
|
string(data), string(data[1:]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBindingProtoBufFail(t *testing.T) {
|
||||||
|
test := &example.Test{
|
||||||
|
Label: proto.String("yes"),
|
||||||
|
}
|
||||||
|
data, _ := proto.Marshal(test)
|
||||||
|
|
||||||
|
testProtoBodyBindingFail(t,
|
||||||
|
ProtoBuf, "protobuf",
|
||||||
|
"/", "/",
|
||||||
|
string(data), string(data[1:]))
|
||||||
|
}
|
||||||
|
|
||||||
func TestBindingMsgPack(t *testing.T) {
|
func TestBindingMsgPack(t *testing.T) {
|
||||||
test := FooStruct{
|
test := FooStruct{
|
||||||
Foo: "bar",
|
Foo: "bar",
|
||||||
@ -963,6 +977,30 @@ func testProtoBodyBinding(t *testing.T, b Binding, name, path, badPath, body, ba
|
|||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type hook struct{}
|
||||||
|
|
||||||
|
func (h hook) Read([]byte) (int, error) {
|
||||||
|
return 0, errors.New("error")
|
||||||
|
}
|
||||||
|
|
||||||
|
func testProtoBodyBindingFail(t *testing.T, b Binding, name, path, badPath, body, badBody string) {
|
||||||
|
assert.Equal(t, b.Name(), name)
|
||||||
|
|
||||||
|
obj := example.Test{}
|
||||||
|
req := requestWithBody("POST", path, body)
|
||||||
|
|
||||||
|
req.Body = ioutil.NopCloser(&hook{})
|
||||||
|
req.Header.Add("Content-Type", MIMEPROTOBUF)
|
||||||
|
err := b.Bind(req, &obj)
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
obj = example.Test{}
|
||||||
|
req = requestWithBody("POST", badPath, badBody)
|
||||||
|
req.Header.Add("Content-Type", MIMEPROTOBUF)
|
||||||
|
err = ProtoBuf.Bind(req, &obj)
|
||||||
|
assert.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
func testMsgPackBodyBinding(t *testing.T, b Binding, name, path, badPath, body, badBody string) {
|
func testMsgPackBodyBinding(t *testing.T, b Binding, name, path, badPath, body, badBody string) {
|
||||||
assert.Equal(t, b.Name(), name)
|
assert.Equal(t, b.Name(), name)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user