diff --git a/render/render_test.go b/render/render_test.go index 95a01b63..16384853 100644 --- a/render/render_test.go +++ b/render/render_test.go @@ -17,6 +17,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/ugorji/go/codec" testdata "github.com/gin-gonic/gin/testdata/protoexample" @@ -125,6 +126,46 @@ func TestRenderSecureJSON(t *testing.T) { assert.Equal(t, "application/json; charset=utf-8", w2.Header().Get("Content-Type")) } +type mockResponseRecorder struct { + mock.Mock + httptest.ResponseRecorder +} + +func (m *mockResponseRecorder) Write(content []byte) (int, error) { + args := m.Called(content) + return args.Int(0), args.Error(1) +} + +func TestRenderJsonpError3(t *testing.T) { + var m *mockResponseRecorder + + data := map[string]interface{}{ + "foo": "bar", + } + + m = new(mockResponseRecorder) + m.On("Write", []byte("x")).Return(1, errors.New("mock callback write error")) + assert.Error(t, (JsonpJSON{"x", data}).Render(m), "mock callback write error") + + m = new(mockResponseRecorder) + m.On("Write", []byte("x")).Return(1, nil) + m.On("Write", []byte("(")).Return(1, errors.New("mock ( write error")) + assert.Error(t, (JsonpJSON{"x", data}).Render(m), "mock ( write error") + + m = new(mockResponseRecorder) + m.On("Write", []byte("x")).Return(1, nil) + m.On("Write", []byte("(")).Return(1, nil) + m.On("Write", []byte("{\"foo\":\"bar\"}")).Return(1, errors.New("mock ret write error")) + assert.Error(t, (JsonpJSON{"x", data}).Render(m), "mock ret write error") + + m = new(mockResponseRecorder) + m.On("Write", []byte("x")).Return(1, nil) + m.On("Write", []byte("(")).Return(1, nil) + m.On("Write", []byte("{\"foo\":\"bar\"}")).Return(1, nil) + m.On("Write", []byte(");")).Return(1, errors.New("mock ); write error")) + assert.Error(t, (JsonpJSON{"x", data}).Render(m), "mock ); write error") +} + func TestRenderSecureJSONFail(t *testing.T) { w := httptest.NewRecorder() data := make(chan int) diff --git a/vendor/vendor.json b/vendor/vendor.json index d441d4a6..1d1723ea 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -112,6 +112,14 @@ "version": "v1.2", "versionExact": "v1.2.2" }, + { + "checksumSHA1": "WmBSFdqpdYRIkp0I408JIZ3LDMY=", + "path": "github.com/stretchr/testify/mock", + "revision": "f35b8ab0b5a2cef36673838d662e249dd9c94686", + "revisionTime": "2018-05-06T18:05:49Z", + "version": "v1.2.2", + "versionExact": "v1.2.2" + }, { "checksumSHA1": "S4ei9eSqVThDio0Jn2sav6yUbvg=", "path": "github.com/ugorji/go/codec",