diff options
author | Wolfy-J <[email protected]> | 2018-06-12 18:30:54 +0300 |
---|---|---|
committer | Wolfy-J <[email protected]> | 2018-06-12 18:30:54 +0300 |
commit | 9980f8a1a4f8c2aebd8e40a8e892bda4bf734eb0 (patch) | |
tree | 6c6956e96498b8ba0fe78014117ee15fcbf5db07 /service/http/response_test.go | |
parent | 592bda7d2b2c58ce466979e567158202f07bda7e (diff) |
tests!
Diffstat (limited to 'service/http/response_test.go')
-rw-r--r-- | service/http/response_test.go | 172 |
1 files changed, 90 insertions, 82 deletions
diff --git a/service/http/response_test.go b/service/http/response_test.go index 157333a1..e45f5349 100644 --- a/service/http/response_test.go +++ b/service/http/response_test.go @@ -1,84 +1,92 @@ package http -// -//type testWriter struct { -// h http.Header -// buf bytes.Buffer -// wroteHeader bool -// code int -// err error -//} -// -//func (tw *testWriter) Header() http.Header { return tw.h } -// -//func (tw *testWriter) Write(p []byte) (int, error) { -// if !tw.wroteHeader { -// tw.WriteHeader(http.StatusOK) -// } -// -// n, e := tw.buf.Write(p) -// if e == nil { -// e = tw.err -// } -// -// return n, e -//} -// -//func (tw *testWriter) WriteHeader(code int) { tw.wroteHeader = true; tw.code = code } -// -//func TestNewResponse_Error(t *testing.T) { -// r, err := NewResponse(&roadrunner.Payload{Context: []byte(`invalid payload`)}) -// assert.Error(t, err) -// assert.Nil(t, r) -//} -// -//func TestNewResponse_Write(t *testing.T) { -// r, err := NewResponse(&roadrunner.Payload{ -// Context: []byte(`{"headers":{"key":["value"]},"status": 301}`), -// Body: []byte(`sample body`), -// }) -// -// assert.NoError(t, err) -// assert.NotNil(t, r) -// -// w := &testWriter{h: http.Header(make(map[string][]string))} -// assert.NoError(t, r.Write(w)) -// -// assert.Equal(t, 301, w.code) -// assert.Equal(t, "value", w.h.Get("key")) -// assert.Equal(t, "sample body", w.buf.String()) -//} -// -//func TestNewResponse_Stream(t *testing.T) { -// r, err := NewResponse(&roadrunner.Payload{ -// Context: []byte(`{"headers":{"key":["value"]},"status": 301}`), -// }) -// -// r.body = &bytes.Buffer{} -// r.body.(*bytes.Buffer).WriteString("hello world") -// -// assert.NoError(t, err) -// assert.NotNil(t, r) -// -// w := &testWriter{h: http.Header(make(map[string][]string))} -// assert.NoError(t, r.Write(w)) -// -// assert.Equal(t, 301, w.code) -// assert.Equal(t, "value", w.h.Get("key")) -// assert.Equal(t, "hello world", w.buf.String()) -//} -// -//func TestNewResponse_StreamError(t *testing.T) { -// r, err := NewResponse(&roadrunner.Payload{ -// Context: []byte(`{"headers":{"key":["value"]},"status": 301}`), -// }) -// -// r.body = &bytes.Buffer{} -// r.body.(*bytes.Buffer).WriteString("hello world") -// -// assert.NoError(t, err) -// assert.NotNil(t, r) -// -// w := &testWriter{h: http.Header(make(map[string][]string)), err: errors.New("error")} -// assert.Error(t, r.Write(w)) -//} +import ( + "net/http" + "bytes" + "testing" + "github.com/spiral/roadrunner" + "github.com/stretchr/testify/assert" + "errors" +) + +type testWriter struct { + h http.Header + buf bytes.Buffer + wroteHeader bool + code int + err error +} + +func (tw *testWriter) Header() http.Header { return tw.h } + +func (tw *testWriter) Write(p []byte) (int, error) { + if !tw.wroteHeader { + tw.WriteHeader(http.StatusOK) + } + + n, e := tw.buf.Write(p) + if e == nil { + e = tw.err + } + + return n, e +} + +func (tw *testWriter) WriteHeader(code int) { tw.wroteHeader = true; tw.code = code } + +func TestNewResponse_Error(t *testing.T) { + r, err := NewResponse(&roadrunner.Payload{Context: []byte(`invalid payload`)}) + assert.Error(t, err) + assert.Nil(t, r) +} + +func TestNewResponse_Write(t *testing.T) { + r, err := NewResponse(&roadrunner.Payload{ + Context: []byte(`{"headers":{"key":["value"]},"status": 301}`), + Body: []byte(`sample body`), + }) + + assert.NoError(t, err) + assert.NotNil(t, r) + + w := &testWriter{h: http.Header(make(map[string][]string))} + assert.NoError(t, r.Write(w)) + + assert.Equal(t, 301, w.code) + assert.Equal(t, "value", w.h.Get("key")) + assert.Equal(t, "sample body", w.buf.String()) +} + +func TestNewResponse_Stream(t *testing.T) { + r, err := NewResponse(&roadrunner.Payload{ + Context: []byte(`{"headers":{"key":["value"]},"status": 301}`), + }) + + r.body = &bytes.Buffer{} + r.body.(*bytes.Buffer).WriteString("hello world") + + assert.NoError(t, err) + assert.NotNil(t, r) + + w := &testWriter{h: http.Header(make(map[string][]string))} + assert.NoError(t, r.Write(w)) + + assert.Equal(t, 301, w.code) + assert.Equal(t, "value", w.h.Get("key")) + assert.Equal(t, "hello world", w.buf.String()) +} + +func TestNewResponse_StreamError(t *testing.T) { + r, err := NewResponse(&roadrunner.Payload{ + Context: []byte(`{"headers":{"key":["value"]},"status": 301}`), + }) + + r.body = &bytes.Buffer{} + r.body.(*bytes.Buffer).WriteString("hello world") + + assert.NoError(t, err) + assert.NotNil(t, r) + + w := &testWriter{h: http.Header(make(map[string][]string)), err: errors.New("error")} + assert.Error(t, r.Write(w)) +} |