Skip to content

Commit f96f40b

Browse files
committed
More coverage on engine/...
Signed-off-by: Vishal Rana <[email protected]>
1 parent c654c42 commit f96f40b

File tree

5 files changed

+181
-36
lines changed

5 files changed

+181
-36
lines changed

engine/fasthttp/response_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package fasthttp
2+
3+
import (
4+
"net/http"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"github.com/valyala/fasthttp"
9+
10+
"github.com/labstack/gommon/log"
11+
)
12+
13+
func TestResponseWriteHeader(t *testing.T) {
14+
c := new(fasthttp.RequestCtx)
15+
res := NewResponse(c, log.New("test"))
16+
res.WriteHeader(http.StatusOK)
17+
assert.True(t, res.Committed())
18+
assert.Equal(t, http.StatusOK, res.Status())
19+
}
20+
21+
func TestResponseWrite(t *testing.T) {
22+
c := new(fasthttp.RequestCtx)
23+
res := NewResponse(c, log.New("test"))
24+
res.Write([]byte("test"))
25+
assert.Equal(t, int64(4), res.Size())
26+
assert.Equal(t, "test", string(c.Response.Body()))
27+
}
28+
29+
func TestResponseSetCookie(t *testing.T) {
30+
c := new(fasthttp.RequestCtx)
31+
res := NewResponse(c, log.New("test"))
32+
cookie := new(fasthttp.Cookie)
33+
cookie.SetKey("name")
34+
cookie.SetValue("Jon Snow")
35+
res.SetCookie(&Cookie{cookie})
36+
c.Response.Header.SetCookie(cookie)
37+
ck := new(fasthttp.Cookie)
38+
ck.SetKey("name")
39+
assert.True(t, c.Response.Header.Cookie(ck))
40+
assert.Equal(t, "Jon Snow", string(ck.Value()))
41+
}

engine/fasthttp/server.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,17 +161,20 @@ func WrapHandler(h fasthttp.RequestHandler) echo.HandlerFunc {
161161
}
162162
}
163163

164-
// WrapMiddleware wraps `fasthttp.RequestHandler` into `echo.MiddlewareFunc`
165-
func WrapMiddleware(h fasthttp.RequestHandler) echo.MiddlewareFunc {
164+
// WrapMiddleware wraps `func(fasthttp.RequestHandler) fasthttp.RequestHandler`
165+
// into `echo.MiddlewareFunc`
166+
func WrapMiddleware(m func(fasthttp.RequestHandler) fasthttp.RequestHandler) echo.MiddlewareFunc {
166167
return func(next echo.HandlerFunc) echo.HandlerFunc {
167-
return func(c echo.Context) error {
168+
return func(c echo.Context) (err error) {
168169
req := c.Request().(*Request)
169170
res := c.Response().(*Response)
170171
ctx := req.RequestCtx
171-
h(ctx)
172+
m(func(ctx *fasthttp.RequestCtx) {
173+
next(c)
174+
})(ctx)
172175
res.status = ctx.Response.StatusCode()
173176
res.size = int64(ctx.Response.Header.ContentLength())
174-
return next(c)
177+
return
175178
}
176179
}
177180
}

engine/fasthttp/server_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package fasthttp
2+
3+
import (
4+
"bytes"
5+
"net/http"
6+
"testing"
7+
8+
"github.com/labstack/echo"
9+
"github.com/stretchr/testify/assert"
10+
"github.com/valyala/fasthttp"
11+
)
12+
13+
// TODO: Fix me
14+
func TestServer(t *testing.T) {
15+
s := New("")
16+
ctx := new(fasthttp.RequestCtx)
17+
s.ServeHTTP(ctx)
18+
}
19+
20+
func TestServerWrapHandler(t *testing.T) {
21+
e := echo.New()
22+
ctx := new(fasthttp.RequestCtx)
23+
req := NewRequest(ctx, nil)
24+
res := NewResponse(ctx, nil)
25+
c := e.NewContext(req, res)
26+
h := WrapHandler(func(ctx *fasthttp.RequestCtx) {
27+
ctx.Write([]byte("test"))
28+
})
29+
if assert.NoError(t, h(c)) {
30+
assert.Equal(t, http.StatusOK, ctx.Response.StatusCode())
31+
assert.Equal(t, "test", string(ctx.Response.Body()))
32+
}
33+
}
34+
35+
func TestServerWrapMiddleware(t *testing.T) {
36+
e := echo.New()
37+
ctx := new(fasthttp.RequestCtx)
38+
req := NewRequest(ctx, nil)
39+
res := NewResponse(ctx, nil)
40+
c := e.NewContext(req, res)
41+
buf := new(bytes.Buffer)
42+
mw := WrapMiddleware(func(h fasthttp.RequestHandler) fasthttp.RequestHandler {
43+
return func(ctx *fasthttp.RequestCtx) {
44+
buf.Write([]byte("mw"))
45+
h(ctx)
46+
}
47+
})
48+
h := mw(func(c echo.Context) error {
49+
return c.String(http.StatusOK, "OK")
50+
})
51+
if assert.NoError(t, h(c)) {
52+
assert.Equal(t, "mw", buf.String())
53+
assert.Equal(t, http.StatusOK, ctx.Response.StatusCode())
54+
assert.Equal(t, "OK", string(ctx.Response.Body()))
55+
}
56+
}

engine/standard/response_test.go

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,38 @@
11
package standard
22

33
import (
4-
"io/ioutil"
54
"net/http"
65
"net/http/httptest"
76
"testing"
8-
"time"
97

108
"github.com/labstack/gommon/log"
119
"github.com/stretchr/testify/assert"
1210
)
1311

1412
func TestResponseWriteHeader(t *testing.T) {
15-
recorder := httptest.NewRecorder()
16-
resp := NewResponse(recorder, log.New("echo"))
17-
18-
resp.WriteHeader(http.StatusNotFound)
19-
assert.Equal(t, http.StatusNotFound, resp.Status())
20-
21-
assert.True(t, resp.Committed())
13+
rec := httptest.NewRecorder()
14+
res := NewResponse(rec, log.New("test"))
15+
res.WriteHeader(http.StatusOK)
16+
assert.True(t, res.Committed())
17+
assert.Equal(t, http.StatusOK, res.Status())
2218
}
2319

2420
func TestResponseWrite(t *testing.T) {
25-
recorder := httptest.NewRecorder()
26-
resp := NewResponse(recorder, log.New("echo"))
27-
resp.Write([]byte("Hello"))
28-
assert.Equal(t, int64(5), resp.Size())
29-
if body, err := ioutil.ReadAll(recorder.Body); assert.NoError(t, err) {
30-
assert.Equal(t, "Hello", string(body))
31-
}
32-
resp.Flush()
33-
assert.True(t, recorder.Flushed)
21+
rec := httptest.NewRecorder()
22+
res := NewResponse(rec, log.New("test"))
23+
res.Write([]byte("test"))
24+
assert.Equal(t, int64(4), res.Size())
25+
assert.Equal(t, "test", rec.Body.String())
26+
res.Flush()
27+
assert.True(t, rec.Flushed)
3428
}
3529

3630
func TestResponseSetCookie(t *testing.T) {
37-
recorder := httptest.NewRecorder()
38-
resp := NewResponse(recorder, log.New("echo"))
39-
40-
resp.SetCookie(&Cookie{&http.Cookie{
41-
Name: "session",
42-
Value: "securetoken",
43-
Path: "/",
44-
Domain: "github.com",
45-
Expires: time.Date(2016, time.January, 1, 0, 0, 0, 0, time.UTC),
46-
Secure: true,
47-
HttpOnly: true,
31+
rec := httptest.NewRecorder()
32+
res := NewResponse(rec, log.New("test"))
33+
res.SetCookie(&Cookie{&http.Cookie{
34+
Name: "name",
35+
Value: "Jon Snow",
4836
}})
49-
50-
assert.Equal(t, "session=securetoken; Path=/; Domain=github.com; Expires=Fri, 01 Jan 2016 00:00:00 GMT; HttpOnly; Secure", recorder.Header().Get("Set-Cookie"))
37+
assert.Equal(t, "name=Jon Snow", rec.Header().Get("Set-Cookie"))
5138
}

engine/standard/server_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package standard
2+
3+
import (
4+
"bytes"
5+
"net/http"
6+
"net/http/httptest"
7+
"testing"
8+
9+
"github.com/labstack/echo"
10+
"github.com/stretchr/testify/assert"
11+
)
12+
13+
// TODO: Fix me
14+
func TestServer(t *testing.T) {
15+
s := New("")
16+
rec := httptest.NewRecorder()
17+
req := new(http.Request)
18+
s.ServeHTTP(rec, req)
19+
}
20+
21+
func TestServerWrapHandler(t *testing.T) {
22+
e := echo.New()
23+
req := NewRequest(new(http.Request), nil)
24+
rec := httptest.NewRecorder()
25+
res := NewResponse(rec, nil)
26+
c := e.NewContext(req, res)
27+
h := WrapHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
28+
w.WriteHeader(http.StatusOK)
29+
w.Write([]byte("test"))
30+
}))
31+
if assert.NoError(t, h(c)) {
32+
assert.Equal(t, http.StatusOK, rec.Code)
33+
assert.Equal(t, "test", rec.Body.String())
34+
}
35+
}
36+
37+
func TestServerWrapMiddleware(t *testing.T) {
38+
e := echo.New()
39+
req := NewRequest(new(http.Request), nil)
40+
rec := httptest.NewRecorder()
41+
res := NewResponse(rec, nil)
42+
c := e.NewContext(req, res)
43+
buf := new(bytes.Buffer)
44+
mw := WrapMiddleware(func(h http.Handler) http.Handler {
45+
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
46+
buf.Write([]byte("mw"))
47+
h.ServeHTTP(w, r)
48+
})
49+
})
50+
h := mw(func(c echo.Context) error {
51+
return c.String(http.StatusOK, "OK")
52+
})
53+
if assert.NoError(t, h(c)) {
54+
assert.Equal(t, "mw", buf.String())
55+
assert.Equal(t, http.StatusOK, rec.Code)
56+
assert.Equal(t, "OK", rec.Body.String())
57+
}
58+
}

0 commit comments

Comments
 (0)