From 3001ef2f00d020e98ed12edf659af67fbf95221f Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Mon, 28 Mar 2016 11:58:42 +0200 Subject: [PATCH 01/13] fix(travis): remove coveralls token from travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5a66ba7..be5d1bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,4 +19,4 @@ script: - go test -v -race -covermode=atomic -coverprofile=coverage.out after_success: - - goveralls -coverprofile=coverage.out -service=travis-ci -repotoken $COVERALLS_TOKEN + - goveralls -coverprofile=coverage.out -service=travis-ci From 80d4f450f9d49ad0ce95770559ede7703a6a52bf Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Mon, 28 Mar 2016 13:19:05 +0200 Subject: [PATCH 02/13] feat(test): Add test for NewRequestModifier --- request_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/request_test.go b/request_test.go index 0b83211..77428d0 100644 --- a/request_test.go +++ b/request_test.go @@ -1 +1,16 @@ package intercept + +import ( + "github.com/nbio/st" + "net/http" + "testing" +) + +func TestNewRequestModifier(t *testing.T) { + h := http.Header{} + h.Set("foo", "bar") + req := &http.Request{Header: h} + modifier := NewRequestModifier(req) + st.Expect(t, modifier.Request, req) + st.Expect(t, modifier.Header, h) +} From 43521f2b84aa2da61a6d2dc732986613b525520f Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Mon, 28 Mar 2016 13:34:58 +0200 Subject: [PATCH 03/13] feat(test): Add test for ReadString --- request_test.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/request_test.go b/request_test.go index 77428d0..b5145ac 100644 --- a/request_test.go +++ b/request_test.go @@ -1,11 +1,23 @@ package intercept import ( + "errors" "github.com/nbio/st" + "io/ioutil" "net/http" + "strings" "testing" ) +var errRead = errors.New("read error") + +type errorReader struct { +} + +func (r *errorReader) Read(p []byte) (int, error) { + return 0, errRead +} + func TestNewRequestModifier(t *testing.T) { h := http.Header{} h.Set("foo", "bar") @@ -14,3 +26,21 @@ func TestNewRequestModifier(t *testing.T) { st.Expect(t, modifier.Request, req) st.Expect(t, modifier.Header, h) } + +func TestReadString(t *testing.T) { + bodyStr := `{"hello":"bonjour"}` + strReader := strings.NewReader(bodyStr) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + str, err := modifier.ReadString() + st.Expect(t, err, nil) + st.Expect(t, str, bodyStr) + + body = ioutil.NopCloser(&errorReader{}) + req = &http.Request{Header: http.Header{}, Body: body} + modifier = NewRequestModifier(req) + str, err = modifier.ReadString() + st.Expect(t, err, errRead) + st.Expect(t, str, "") +} From 943eb2b8f7aead4fba95ce62f1b74e3205ad0c0d Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Mon, 28 Mar 2016 13:45:27 +0200 Subject: [PATCH 04/13] feat(test): Add test for ReadBytes --- request_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/request_test.go b/request_test.go index b5145ac..7af16c7 100644 --- a/request_test.go +++ b/request_test.go @@ -1,6 +1,7 @@ package intercept import ( + "bytes" "errors" "github.com/nbio/st" "io/ioutil" @@ -44,3 +45,21 @@ func TestReadString(t *testing.T) { st.Expect(t, err, errRead) st.Expect(t, str, "") } + +func TestReadBytes(t *testing.T) { + bodyBytes := []byte(`{"hello":"bonjour"}`) + strReader := bytes.NewBuffer(bodyBytes) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + str, err := modifier.ReadBytes() + st.Expect(t, err, nil) + st.Expect(t, str, bodyBytes) + + body = ioutil.NopCloser(&errorReader{}) + req = &http.Request{Header: http.Header{}, Body: body} + modifier = NewRequestModifier(req) + buf, err := modifier.ReadBytes() + st.Expect(t, err, errRead) + st.Expect(t, len(buf), 0) +} From 8ee674793433f8b135a2f19acd05caa8cfff1a13 Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Tue, 29 Mar 2016 16:17:45 +0200 Subject: [PATCH 05/13] feat(test): Isolate request error tests --- request_test.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/request_test.go b/request_test.go index 7af16c7..c1cbbe5 100644 --- a/request_test.go +++ b/request_test.go @@ -37,11 +37,13 @@ func TestReadString(t *testing.T) { str, err := modifier.ReadString() st.Expect(t, err, nil) st.Expect(t, str, bodyStr) +} - body = ioutil.NopCloser(&errorReader{}) - req = &http.Request{Header: http.Header{}, Body: body} - modifier = NewRequestModifier(req) - str, err = modifier.ReadString() +func TestReadStringError(t *testing.T) { + body := ioutil.NopCloser(&errorReader{}) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + str, err := modifier.ReadString() st.Expect(t, err, errRead) st.Expect(t, str, "") } @@ -55,10 +57,12 @@ func TestReadBytes(t *testing.T) { str, err := modifier.ReadBytes() st.Expect(t, err, nil) st.Expect(t, str, bodyBytes) +} - body = ioutil.NopCloser(&errorReader{}) - req = &http.Request{Header: http.Header{}, Body: body} - modifier = NewRequestModifier(req) +func TestReadBytesError(t *testing.T) { + body := ioutil.NopCloser(&errorReader{}) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) buf, err := modifier.ReadBytes() st.Expect(t, err, errRead) st.Expect(t, len(buf), 0) From 20d7c5acb698218256729f8f6be4d9e959230bdf Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Tue, 29 Mar 2016 20:10:50 +0200 Subject: [PATCH 06/13] feat(test): Add test for DecodeJSON --- request_test.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/request_test.go b/request_test.go index c1cbbe5..0a012eb 100644 --- a/request_test.go +++ b/request_test.go @@ -12,13 +12,16 @@ import ( var errRead = errors.New("read error") -type errorReader struct { -} +type errorReader struct{} func (r *errorReader) Read(p []byte) (int, error) { return 0, errRead } +type user struct { + Name string +} + func TestNewRequestModifier(t *testing.T) { h := http.Header{} h.Set("foo", "bar") @@ -29,7 +32,7 @@ func TestNewRequestModifier(t *testing.T) { } func TestReadString(t *testing.T) { - bodyStr := `{"hello":"bonjour"}` + bodyStr := `{"name":"Rick"}` strReader := strings.NewReader(bodyStr) body := ioutil.NopCloser(strReader) req := &http.Request{Header: http.Header{}, Body: body} @@ -49,7 +52,7 @@ func TestReadStringError(t *testing.T) { } func TestReadBytes(t *testing.T) { - bodyBytes := []byte(`{"hello":"bonjour"}`) + bodyBytes := []byte(`{"name":"Rick"}`) strReader := bytes.NewBuffer(bodyBytes) body := ioutil.NopCloser(strReader) req := &http.Request{Header: http.Header{}, Body: body} @@ -67,3 +70,15 @@ func TestReadBytesError(t *testing.T) { st.Expect(t, err, errRead) st.Expect(t, len(buf), 0) } + +func TestDecodeJSON(t *testing.T) { + bodyBytes := []byte(`{"name":"Rick"}`) + strReader := bytes.NewBuffer(bodyBytes) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeJSON(&u) + st.Expect(t, err, nil) + st.Expect(t, u.Name, "Rick") +} From 59e711edc0f55f3c203815b19b9351a90330b0fe Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Tue, 29 Mar 2016 20:14:41 +0200 Subject: [PATCH 07/13] feat(test): Add test for DecodeJSON error The test checks that when ReadBytes fails its error is returned. --- request_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/request_test.go b/request_test.go index 0a012eb..79c7a05 100644 --- a/request_test.go +++ b/request_test.go @@ -82,3 +82,13 @@ func TestDecodeJSON(t *testing.T) { st.Expect(t, err, nil) st.Expect(t, u.Name, "Rick") } + +func TestDecodeJSONErrorFromReadBytes(t *testing.T) { + body := ioutil.NopCloser(&errorReader{}) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeJSON(&u) + st.Expect(t, err, errRead) + st.Expect(t, u.Name, "") +} From 7fda37178b2f525567f30774350865a5ea300037 Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Tue, 29 Mar 2016 20:28:10 +0200 Subject: [PATCH 08/13] feat(test): Add test for DecodeJSON error The test checks that when Decode fails its error is returned. --- request_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/request_test.go b/request_test.go index 79c7a05..c7c46fe 100644 --- a/request_test.go +++ b/request_test.go @@ -2,6 +2,7 @@ package intercept import ( "bytes" + "encoding/json" "errors" "github.com/nbio/st" "io/ioutil" @@ -92,3 +93,17 @@ func TestDecodeJSONErrorFromReadBytes(t *testing.T) { st.Expect(t, err, errRead) st.Expect(t, u.Name, "") } + +func TestDecodeJSONErrorFromDecode(t *testing.T) { + bodyBytes := []byte(`/`) + strReader := bytes.NewBuffer(bodyBytes) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeJSON(&u) + _, ok := (err).(*json.SyntaxError) + st.Expect(t, ok, true) + st.Expect(t, err.Error(), "invalid character '/' looking for beginning of value") + st.Expect(t, u.Name, "") +} From 36e5fb5fde3129412362515f8fb82ebf2ab4ee4c Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Wed, 30 Mar 2016 14:02:12 +0200 Subject: [PATCH 09/13] feat(test): Add test for DecodeJSON EOF error --- request_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/request_test.go b/request_test.go index c7c46fe..c1e9549 100644 --- a/request_test.go +++ b/request_test.go @@ -94,6 +94,18 @@ func TestDecodeJSONErrorFromReadBytes(t *testing.T) { st.Expect(t, u.Name, "") } +func TestDecodeJSONEOF(t *testing.T) { + bodyBytes := []byte("") + strReader := bytes.NewBuffer(bodyBytes) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeJSON(&u) + st.Expect(t, err, nil) + st.Expect(t, u.Name, "") +} + func TestDecodeJSONErrorFromDecode(t *testing.T) { bodyBytes := []byte(`/`) strReader := bytes.NewBuffer(bodyBytes) From e1e591ac9f35a01576ae0adc44fd129e611d9841 Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Wed, 30 Mar 2016 14:04:58 +0200 Subject: [PATCH 10/13] feat(test): Add test for DecodeXML --- request_test.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/request_test.go b/request_test.go index c1e9549..fe3bc88 100644 --- a/request_test.go +++ b/request_test.go @@ -3,6 +3,7 @@ package intercept import ( "bytes" "encoding/json" + "encoding/xml" "errors" "github.com/nbio/st" "io/ioutil" @@ -20,7 +21,8 @@ func (r *errorReader) Read(p []byte) (int, error) { } type user struct { - Name string + XMLName xml.Name `xml:"Person"` + Name string } func TestNewRequestModifier(t *testing.T) { @@ -119,3 +121,15 @@ func TestDecodeJSONErrorFromDecode(t *testing.T) { st.Expect(t, err.Error(), "invalid character '/' looking for beginning of value") st.Expect(t, u.Name, "") } + +func TestDecodeXML(t *testing.T) { + bodyBytes := []byte(`Rick`) + strReader := bytes.NewBuffer(bodyBytes) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeXML(&u, nil) + st.Expect(t, err, nil) + st.Expect(t, u.Name, "Rick") +} From dfb6ecac583713065768dc92d66c3ca0a87dbc1d Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Wed, 30 Mar 2016 14:05:32 +0200 Subject: [PATCH 11/13] feat(test): Add test for DecodeXML error from ReadBytes --- request_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/request_test.go b/request_test.go index fe3bc88..145233c 100644 --- a/request_test.go +++ b/request_test.go @@ -133,3 +133,13 @@ func TestDecodeXML(t *testing.T) { st.Expect(t, err, nil) st.Expect(t, u.Name, "Rick") } + +func TestDecodeXMLErrorFromReadBytes(t *testing.T) { + body := ioutil.NopCloser(&errorReader{}) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeXML(&u, nil) + st.Expect(t, err, errRead) + st.Expect(t, u.Name, "") +} From a32027f051cee477c6fc8a096788c6ab5d172ccb Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Wed, 30 Mar 2016 14:08:08 +0200 Subject: [PATCH 12/13] feat(test): Add test for DecodeXML error from Decode --- request_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/request_test.go b/request_test.go index 145233c..eae1e35 100644 --- a/request_test.go +++ b/request_test.go @@ -143,3 +143,17 @@ func TestDecodeXMLErrorFromReadBytes(t *testing.T) { st.Expect(t, err, errRead) st.Expect(t, u.Name, "") } + +func TestDecodeXMLErrorFromDecode(t *testing.T) { + bodyBytes := []byte(`]]>`) + strReader := bytes.NewBuffer(bodyBytes) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeXML(&u, nil) + _, ok := (err).(*xml.SyntaxError) + st.Expect(t, ok, true) + st.Expect(t, err.Error(), "XML syntax error on line 1: unescaped ]]> not in CDATA section") + st.Expect(t, u.Name, "") +} From 39c4bc9a358c47c93a7ef44c239c5a77fdf604c5 Mon Sep 17 00:00:00 2001 From: Yohan Robert Date: Wed, 30 Mar 2016 14:14:50 +0200 Subject: [PATCH 13/13] feat(test): Add test for DecodeXML EOF error --- request_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/request_test.go b/request_test.go index eae1e35..7bfcb76 100644 --- a/request_test.go +++ b/request_test.go @@ -157,3 +157,15 @@ func TestDecodeXMLErrorFromDecode(t *testing.T) { st.Expect(t, err.Error(), "XML syntax error on line 1: unescaped ]]> not in CDATA section") st.Expect(t, u.Name, "") } + +func TestDecodeXMLEOF(t *testing.T) { + bodyBytes := []byte("") + strReader := bytes.NewBuffer(bodyBytes) + body := ioutil.NopCloser(strReader) + req := &http.Request{Header: http.Header{}, Body: body} + modifier := NewRequestModifier(req) + u := user{} + err := modifier.DecodeXML(&u, nil) + st.Expect(t, err, nil) + st.Expect(t, u.Name, "") +}