mirror of
				https://github.com/labstack/echo.git
				synced 2025-10-30 23:57:38 +02:00 
			
		
		
		
	Test coverage for cookie.go and context.go
Signed-off-by: Vishal Rana <vr@labstack.com>
This commit is contained in:
		
							
								
								
									
										16
									
								
								context.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								context.go
									
									
									
									
									
								
							| @@ -180,7 +180,7 @@ type ( | ||||
| 	} | ||||
|  | ||||
| 	echoContext struct { | ||||
| 		context  context.Context | ||||
| 		context.Context | ||||
| 		request  engine.Request | ||||
| 		response engine.Response | ||||
| 		path     string | ||||
| @@ -199,27 +199,27 @@ const ( | ||||
| ) | ||||
|  | ||||
| func (c *echoContext) StdContext() context.Context { | ||||
| 	return c.context | ||||
| 	return c.Context | ||||
| } | ||||
|  | ||||
| func (c *echoContext) SetStdContext(ctx context.Context) { | ||||
| 	c.context = ctx | ||||
| 	c.Context = ctx | ||||
| } | ||||
|  | ||||
| func (c *echoContext) Deadline() (deadline time.Time, ok bool) { | ||||
| 	return c.context.Deadline() | ||||
| 	return c.Context.Deadline() | ||||
| } | ||||
|  | ||||
| func (c *echoContext) Done() <-chan struct{} { | ||||
| 	return c.context.Done() | ||||
| 	return c.Context.Done() | ||||
| } | ||||
|  | ||||
| func (c *echoContext) Err() error { | ||||
| 	return c.context.Err() | ||||
| 	return c.Context.Err() | ||||
| } | ||||
|  | ||||
| func (c *echoContext) Value(key interface{}) interface{} { | ||||
| 	return c.context.Value(key) | ||||
| 	return c.Context.Value(key) | ||||
| } | ||||
|  | ||||
| func (c *echoContext) Request() engine.Request { | ||||
| @@ -508,7 +508,7 @@ func ContentTypeByExtension(name string) (t string) { | ||||
| } | ||||
|  | ||||
| func (c *echoContext) Reset(req engine.Request, res engine.Response) { | ||||
| 	c.context = nil | ||||
| 	c.Context = nil | ||||
| 	c.request = req | ||||
| 	c.response = res | ||||
| 	c.store = nil | ||||
|   | ||||
							
								
								
									
										163
									
								
								context_test.go
									
									
									
									
									
								
							
							
						
						
									
										163
									
								
								context_test.go
									
									
									
									
									
								
							| @@ -4,12 +4,15 @@ import ( | ||||
| 	"bytes" | ||||
| 	"errors" | ||||
| 	"io" | ||||
| 	"mime/multipart" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"testing" | ||||
| 	"text/template" | ||||
| 	"time" | ||||
|  | ||||
| 	"golang.org/x/net/context" | ||||
|  | ||||
| 	"strings" | ||||
|  | ||||
| 	"net/url" | ||||
| @@ -36,27 +39,17 @@ func TestContext(t *testing.T) { | ||||
| 	rec := test.NewResponseRecorder() | ||||
| 	c := e.NewContext(req, rec).(*echoContext) | ||||
|  | ||||
| 	// Echo | ||||
| 	assert.Equal(t, e, c.Echo()) | ||||
|  | ||||
| 	// Request | ||||
| 	assert.NotNil(t, c.Request()) | ||||
| 	assert.Equal(t, req, c.Request()) | ||||
|  | ||||
| 	// Response | ||||
| 	assert.NotNil(t, c.Response()) | ||||
| 	assert.Equal(t, rec, c.Response()) | ||||
|  | ||||
| 	// ParamNames | ||||
| 	c.pnames = []string{"uid", "fid"} | ||||
| 	assert.EqualValues(t, []string{"uid", "fid"}, c.ParamNames()) | ||||
|  | ||||
| 	// Param by id | ||||
| 	c.pnames = []string{"id"} | ||||
| 	c.pvalues = []string{"1"} | ||||
| 	assert.Equal(t, "1", c.P(0)) | ||||
|  | ||||
| 	// Param by name | ||||
| 	assert.Equal(t, "1", c.Param("id")) | ||||
|  | ||||
| 	// Store | ||||
| 	c.Set("user", "Jon Snow") | ||||
| 	assert.Equal(t, "Jon Snow", c.Get("user")) | ||||
| 	// Logger | ||||
| 	assert.Equal(t, e.logger, c.Logger()) | ||||
|  | ||||
| 	//-------- | ||||
| 	// Render | ||||
| @@ -158,13 +151,6 @@ func TestContext(t *testing.T) { | ||||
| 	c.NoContent(http.StatusOK) | ||||
| 	assert.Equal(t, http.StatusOK, rec.Status()) | ||||
|  | ||||
| 	// Redirect | ||||
| 	rec = test.NewResponseRecorder() | ||||
| 	c = e.NewContext(req, rec).(*echoContext) | ||||
| 	assert.Equal(t, nil, c.Redirect(http.StatusMovedPermanently, "http://labstack.github.io/echo")) | ||||
| 	assert.Equal(t, http.StatusMovedPermanently, rec.Status()) | ||||
| 	assert.Equal(t, "http://labstack.github.io/echo", rec.Header().Get(HeaderLocation)) | ||||
|  | ||||
| 	// Error | ||||
| 	rec = test.NewResponseRecorder() | ||||
| 	c = e.NewContext(req, rec).(*echoContext) | ||||
| @@ -203,7 +189,7 @@ func TestContextCookie(t *testing.T) { | ||||
| 	} | ||||
|  | ||||
| 	// Write | ||||
| 	cookie = &test.Cookie{&http.Cookie{ | ||||
| 	cookie = &test.Cookie{Cookie: &http.Cookie{ | ||||
| 		Name:     "SSID", | ||||
| 		Value:    "Ap4PGTEq", | ||||
| 		Domain:   "labstack.com", | ||||
| @@ -235,35 +221,130 @@ func TestContextPath(t *testing.T) { | ||||
| 	assert.Equal(t, "/users/:uid/files/:fid", c.Path()) | ||||
| } | ||||
|  | ||||
| func TestContextQueryParam(t *testing.T) { | ||||
| 	q := make(url.Values) | ||||
| 	q.Set("name", "joe") | ||||
| 	q.Set("email", "joe@labstack.com") | ||||
| 	req := test.NewRequest(GET, "/?"+q.Encode(), nil) | ||||
| func TestContextPathParam(t *testing.T) { | ||||
| 	e := New() | ||||
| 	req := test.NewRequest(GET, "/", nil) | ||||
| 	c := e.NewContext(req, nil) | ||||
| 	assert.Equal(t, "joe", c.QueryParam("name")) | ||||
| 	assert.Equal(t, "joe@labstack.com", c.QueryParam("email")) | ||||
|  | ||||
| 	// ParamNames | ||||
| 	c.SetParamNames("uid", "fid") | ||||
| 	assert.EqualValues(t, []string{"uid", "fid"}, c.ParamNames()) | ||||
|  | ||||
| 	// ParamValues | ||||
| 	c.SetParamValues("101", "501") | ||||
| 	assert.EqualValues(t, []string{"101", "501"}, c.ParamValues()) | ||||
|  | ||||
| 	// P | ||||
| 	assert.Equal(t, "101", c.P(0)) | ||||
|  | ||||
| 	// Param | ||||
| 	assert.Equal(t, "501", c.Param("fid")) | ||||
| } | ||||
|  | ||||
| func TestContextFormValue(t *testing.T) { | ||||
| 	f := make(url.Values) | ||||
| 	f.Set("name", "joe") | ||||
| 	f.Set("email", "joe@labstack.com") | ||||
| 	f.Set("name", "Jon Snow") | ||||
| 	f.Set("email", "jon@labstack.com") | ||||
|  | ||||
| 	e := New() | ||||
| 	req := test.NewRequest(POST, "/", strings.NewReader(f.Encode())) | ||||
| 	req.Header().Add(HeaderContentType, MIMEApplicationForm) | ||||
|  | ||||
| 	c := e.NewContext(req, nil) | ||||
| 	assert.Equal(t, "joe", c.FormValue("name")) | ||||
| 	assert.Equal(t, "joe@labstack.com", c.FormValue("email")) | ||||
|  | ||||
| 	// FormValue | ||||
| 	assert.Equal(t, "Jon Snow", c.FormValue("name")) | ||||
| 	assert.Equal(t, "jon@labstack.com", c.FormValue("email")) | ||||
|  | ||||
| 	// FormParams | ||||
| 	assert.Equal(t, map[string][]string{ | ||||
| 		"name":  []string{"Jon Snow"}, | ||||
| 		"email": []string{"jon@labstack.com"}, | ||||
| 	}, c.FormParams()) | ||||
| } | ||||
|  | ||||
| func TestContextNetContext(t *testing.T) { | ||||
| 	// c := new(context) | ||||
| 	// c.Context = xcontext.WithValue(nil, "key", "val") | ||||
| 	// assert.Equal(t, "val", c.Value("key")) | ||||
| func TestContextQueryParam(t *testing.T) { | ||||
| 	q := make(url.Values) | ||||
| 	q.Set("name", "Jon Snow") | ||||
| 	q.Set("email", "jon@labstack.com") | ||||
| 	req := test.NewRequest(GET, "/?"+q.Encode(), nil) | ||||
| 	e := New() | ||||
| 	c := e.NewContext(req, nil) | ||||
|  | ||||
| 	// QueryParam | ||||
| 	assert.Equal(t, "Jon Snow", c.QueryParam("name")) | ||||
| 	assert.Equal(t, "jon@labstack.com", c.QueryParam("email")) | ||||
|  | ||||
| 	// QueryParams | ||||
| 	assert.Equal(t, map[string][]string{ | ||||
| 		"name":  []string{"Jon Snow"}, | ||||
| 		"email": []string{"jon@labstack.com"}, | ||||
| 	}, c.QueryParams()) | ||||
| } | ||||
|  | ||||
| func TestContextFormFile(t *testing.T) { | ||||
| 	e := New() | ||||
| 	buf := new(bytes.Buffer) | ||||
| 	mr := multipart.NewWriter(buf) | ||||
| 	w, err := mr.CreateFormFile("file", "test") | ||||
| 	if assert.NoError(t, err) { | ||||
| 		w.Write([]byte("test")) | ||||
| 	} | ||||
| 	mr.Close() | ||||
| 	req := test.NewRequest(POST, "/", buf) | ||||
| 	req.Header().Set(HeaderContentType, mr.FormDataContentType()) | ||||
| 	rec := test.NewResponseRecorder() | ||||
| 	c := e.NewContext(req, rec) | ||||
| 	f, err := c.FormFile("file") | ||||
| 	if assert.NoError(t, err) { | ||||
| 		assert.Equal(t, "test", f.Filename) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestContextMultipartForm(t *testing.T) { | ||||
| 	e := New() | ||||
| 	buf := new(bytes.Buffer) | ||||
| 	mw := multipart.NewWriter(buf) | ||||
| 	mw.WriteField("name", "Jon Snow") | ||||
| 	mw.Close() | ||||
| 	req := test.NewRequest(POST, "/", buf) | ||||
| 	req.Header().Set(HeaderContentType, mw.FormDataContentType()) | ||||
| 	rec := test.NewResponseRecorder() | ||||
| 	c := e.NewContext(req, rec) | ||||
| 	f, err := c.MultipartForm() | ||||
| 	if assert.NoError(t, err) { | ||||
| 		assert.NotNil(t, f) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestContextRedirect(t *testing.T) { | ||||
| 	e := New() | ||||
| 	req := test.NewRequest(GET, "/", nil) | ||||
| 	rec := test.NewResponseRecorder() | ||||
| 	c := e.NewContext(req, rec) | ||||
| 	assert.Equal(t, nil, c.Redirect(http.StatusMovedPermanently, "http://labstack.github.io/echo")) | ||||
| 	assert.Equal(t, http.StatusMovedPermanently, rec.Status()) | ||||
| 	assert.Equal(t, "http://labstack.github.io/echo", rec.Header().Get(HeaderLocation)) | ||||
| 	assert.Error(t, c.Redirect(310, "http://labstack.github.io/echo")) | ||||
| } | ||||
|  | ||||
| func TestContextStdContext(t *testing.T) { | ||||
| 	c := new(echoContext) | ||||
| 	c.SetStdContext(context.WithValue(c.StdContext(), "key", "val")) | ||||
| 	assert.Equal(t, "val", c.Value("key")) | ||||
| 	ctx, _ := context.WithDeadline(context.Background(), time.Now()) | ||||
| 	c.SetStdContext(ctx) | ||||
| 	assert.Equal(t, context.DeadlineExceeded, c.Err()) | ||||
| 	assert.NotNil(t, c.Done()) | ||||
| } | ||||
|  | ||||
| func TestContextStore(t *testing.T) { | ||||
| 	c := new(echoContext) | ||||
| 	c.store = nil | ||||
| 	c.Set("name", "Jon Snow") | ||||
| 	assert.Equal(t, "Jon Snow", c.Get("name")) | ||||
| 	assert.True(t, c.Contains("name")) | ||||
| 	c.Del("name") | ||||
| 	assert.Empty(t, c.Get("name")) | ||||
| } | ||||
|  | ||||
| func TestContextServeContent(t *testing.T) { | ||||
|   | ||||
							
								
								
									
										41
									
								
								cookie_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								cookie_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| package echo | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
|  | ||||
| func TestCookie(t *testing.T) { | ||||
| 	c := new(Cookie) | ||||
|  | ||||
| 	// Name | ||||
| 	c.SetName("name") | ||||
| 	assert.Equal(t, "name", c.Name()) | ||||
|  | ||||
| 	// Value | ||||
| 	c.SetValue("Jon Snow") | ||||
| 	assert.Equal(t, "Jon Snow", c.Value()) | ||||
|  | ||||
| 	// Path | ||||
| 	c.SetPath("/") | ||||
| 	assert.Equal(t, "/", c.Path()) | ||||
|  | ||||
| 	// Domain | ||||
| 	c.SetDomain("labstack.com") | ||||
| 	assert.Equal(t, "labstack.com", c.Domain()) | ||||
|  | ||||
| 	// Expires | ||||
| 	now := time.Now() | ||||
| 	c.SetExpires(now) | ||||
| 	assert.Equal(t, now, c.Expires()) | ||||
|  | ||||
| 	// Secure | ||||
| 	c.SetSecure(true) | ||||
| 	assert.Equal(t, true, c.Secure()) | ||||
|  | ||||
| 	// HTTPOnly | ||||
| 	c.SetHTTPOnly(true) | ||||
| 	assert.Equal(t, true, c.HTTPOnly()) | ||||
| } | ||||
							
								
								
									
										4
									
								
								echo.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								echo.go
									
									
									
									
									
								
							| @@ -48,7 +48,7 @@ import ( | ||||
| 	"runtime" | ||||
| 	"sync" | ||||
|  | ||||
| 	ncontext "golang.org/x/net/context" | ||||
| 	"golang.org/x/net/context" | ||||
|  | ||||
| 	"github.com/labstack/echo/engine" | ||||
| 	"github.com/labstack/echo/log" | ||||
| @@ -238,7 +238,7 @@ func New() (e *Echo) { | ||||
| // NewContext returns a Context instance. | ||||
| func (e *Echo) NewContext(req engine.Request, res engine.Response) Context { | ||||
| 	return &echoContext{ | ||||
| 		context:  ncontext.Background(), | ||||
| 		Context:  context.Background(), | ||||
| 		request:  req, | ||||
| 		response: res, | ||||
| 		echo:     e, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user