Преглед на файлове

Relocate binding body tests (#2086)

* Relocate binding body tests

Every test file should be related to a tested file.
Remove useless tests.

* Add github.com/stretchr/testify/require package
Dmitry Kutakov преди 6 години
родител
ревизия
f7becac7bc
променени са 6 файла, в които са добавени 105 реда и са изтрити 72 реда
  1. 0 72
      binding/binding_body_test.go
  2. 21 0
      binding/json_test.go
  3. 32 0
      binding/msgpack_test.go
  4. 25 0
      binding/xml_test.go
  5. 21 0
      binding/yaml_test.go
  6. 6 0
      vendor/vendor.json

+ 0 - 72
binding/binding_body_test.go

@@ -1,72 +0,0 @@
-package binding
-
-import (
-	"bytes"
-	"io/ioutil"
-	"testing"
-
-	"github.com/gin-gonic/gin/testdata/protoexample"
-	"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 binding",
-			binding: JSON,
-			body:    `{"foo":"FOO"}`,
-		},
-		{
-			name:    "XML binding",
-			binding: XML,
-			body: `<?xml version="1.0" encoding="UTF-8"?>
-<root>
-   <foo>FOO</foo>
-</root>`,
-		},
-		{
-			name:    "MsgPack binding",
-			binding: MsgPack,
-			body:    msgPackBody(t),
-		},
-		{
-			name:    "YAML binding",
-			binding: YAML,
-			body:    `foo: FOO`,
-		},
-	} {
-		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 := protoexample.Test{
-		Label: proto.String("FOO"),
-	}
-	data, _ := proto.Marshal(&test)
-	req := requestWithBody("POST", "/", string(data))
-	form := protoexample.Test{}
-	body, _ := ioutil.ReadAll(req.Body)
-	assert.NoError(t, ProtoBuf.BindBody(body, &form))
-	assert.Equal(t, test, form)
-}

+ 21 - 0
binding/json_test.go

@@ -0,0 +1,21 @@
+// Copyright 2019 Gin Core Team. All rights reserved.
+// Use of this source code is governed by a MIT style
+// license that can be found in the LICENSE file.
+
+package binding
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func TestJSONBindingBindBody(t *testing.T) {
+	var s struct {
+		Foo string `json:"foo"`
+	}
+	err := jsonBinding{}.BindBody([]byte(`{"foo": "FOO"}`), &s)
+	require.NoError(t, err)
+	assert.Equal(t, "FOO", s.Foo)
+}

+ 32 - 0
binding/msgpack_test.go

@@ -0,0 +1,32 @@
+// Copyright 2019 Gin Core Team. All rights reserved.
+// Use of this source code is governed by a MIT style
+// license that can be found in the LICENSE file.
+
+package binding
+
+import (
+	"bytes"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	"github.com/ugorji/go/codec"
+)
+
+func TestMsgpackBindingBindBody(t *testing.T) {
+	type teststruct struct {
+		Foo string `msgpack:"foo"`
+	}
+	var s teststruct
+	err := msgpackBinding{}.BindBody(msgpackBody(t, teststruct{"FOO"}), &s)
+	require.NoError(t, err)
+	assert.Equal(t, "FOO", s.Foo)
+}
+
+func msgpackBody(t *testing.T, obj interface{}) []byte {
+	var bs bytes.Buffer
+	h := &codec.MsgpackHandle{}
+	err := codec.NewEncoder(&bs, h).Encode(obj)
+	require.NoError(t, err)
+	return bs.Bytes()
+}

+ 25 - 0
binding/xml_test.go

@@ -0,0 +1,25 @@
+// Copyright 2019 Gin Core Team. All rights reserved.
+// Use of this source code is governed by a MIT style
+// license that can be found in the LICENSE file.
+
+package binding
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func TestXMLBindingBindBody(t *testing.T) {
+	var s struct {
+		Foo string `xml:"foo"`
+	}
+	xmlBody := `<?xml version="1.0" encoding="UTF-8"?>
+<root>
+   <foo>FOO</foo>
+</root>`
+	err := xmlBinding{}.BindBody([]byte(xmlBody), &s)
+	require.NoError(t, err)
+	assert.Equal(t, "FOO", s.Foo)
+}

+ 21 - 0
binding/yaml_test.go

@@ -0,0 +1,21 @@
+// Copyright 2019 Gin Core Team. All rights reserved.
+// Use of this source code is governed by a MIT style
+// license that can be found in the LICENSE file.
+
+package binding
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func TestYAMLBindingBindBody(t *testing.T) {
+	var s struct {
+		Foo string `yaml:"foo"`
+	}
+	err := yamlBinding{}.BindBody([]byte("foo: FOO"), &s)
+	require.NoError(t, err)
+	assert.Equal(t, "FOO", s.Foo)
+}

+ 6 - 0
vendor/vendor.json

@@ -112,6 +112,12 @@
 			"version": "v1.2",
 			"versionExact": "v1.2.2"
 		},
+		{
+			"checksumSHA1": "wnEANt4k5X/KGwoFyfSSnpxULm4=",
+			"path": "github.com/stretchr/testify/require",
+			"revision": "f35b8ab0b5a2cef36673838d662e249dd9c94686",
+			"revisionTime": "2018-05-06T18:05:49Z"
+		},
 		{
 			"checksumSHA1": "S4ei9eSqVThDio0Jn2sav6yUbvg=",
 			"path": "github.com/ugorji/go/codec",