Documentation ¶
Overview ¶
Package servertest provides methods and types to test server.Handler implementations.
Index ¶
- Variables
- func FindCookie(response *http.Response, name string) (found *http.Cookie)
- func Run(t *testing.T, tests []Test, handlerFactory interface{})
- func RunFunc(t *testing.T, tests []Test, handler server.HandleFunction)
- type CheckCookieIsSet
- type CheckError
- type CheckJSON
- type CheckStatus
- type Checker
- type CheckerFun
- type ClientStore
- type Request
- type ResponseSpy
- func (self ResponseSpy) SendError(ctx context.Context, err error)
- func (self ResponseSpy) SendJSON(ctx context.Context, data interface{})
- func (self ResponseSpy) SendLoginAccepted(ctx context.Context, user server.User, request *server.Request, ...)
- func (self ResponseSpy) SendUnloggedId(ctx context.Context, user server.User, request *server.Request) error
- type T
- type Test
- type WithChecker
- type WithName
Constants ¶
This section is empty.
Variables ¶
var CheckAnyErrorStatus = CheckerFun(func(t *testing.T, response *http.Response, request *server.Request) {
t.Helper()
if response.StatusCode < 400 {
t.Errorf("Wrong status code. Got %d. Expect at least 400.", response.StatusCode)
}
})
var (
Unimplemented = errors.New("Unimplemented")
)
Functions ¶
func FindCookie ¶
FindCookie returns a cookie by name.
func Run ¶
Run executes all the given tests on the given Handler.
The tests are executed in the given order. For each test, the handler is created by calling handlerFactory using the ioc.Locator returned by Prepare. The handler is registered for the pattern "/a/test".
If a test implement the method
ChangeResponse(*testing.T, server.Response) server.Response
then this method is called with the usual server.Response objet, and the returned object is used by the handler. This method allows the test to spy the calls to server.Response methods.
Each test is executed inside testing.T.Run, hence calling t.Fatal in the checker abort only the current test.
Types ¶
type CheckCookieIsSet ¶
type CheckCookieIsSet struct {
Name string
}
type CheckError ¶
CheckError checks the statusCode and error message of a response.
type CheckJSON ¶
type CheckJSON struct { Code int // If zero, http.StatusOK is used instead. Body interface{} Partial bool // If true, Body may lack some field of the response. }
CheckJSON checks that the response body is similar to the JSON marshaling of a given value.
type CheckStatus ¶
type CheckStatus struct {
Code int
}
CheckStatus checks only the statusCode of a response.
type Checker ¶
type Checker interface { // Check is called at the end of each test, after the handler has been called. This method must // check that the handler has done its job correctly. Check(t *testing.T, response *http.Response, request *server.Request) }
Checker checks that a given response is as expected.
type CheckerFun ¶
CheckerFun wraps a function into a Checker.
type ClientStore ¶
type ClientStore struct {
Codecs []securecookie.Codec
}
ClientStore is a sessions.Store that store sessions in client requests.
func NewClientStore ¶
func NewClientStore(keys ...[]byte) *ClientStore
func (*ClientStore) Save ¶
func (self *ClientStore) Save(r *http.Request, w http.ResponseWriter, session *sessions.Session) error
type Request ¶
type Request struct { Method string Target *string RemoteAddr *string Body string UserId *uint32 Hash *uint32 }
Request provides information to create an http.Request.
Its zero value is valid and produces the request "GET /a/test". See Make() for details.
func (*Request) Make ¶
Make generates an http.Request.
Default value for Method is "GET". Default value for Target is "/a/test". If RemoteAddr is not nil, the RemoteAddr field of the returned request is set to its value. If UserId is not nil and Hash is nil then a valid session for that user is added to the request. If UserId and Hash are both non-nil then an "unlogged cookie" is added to the request.
type ResponseSpy ¶
type ResponseSpy struct { Backend server.Response T *testing.T JsonFct func(*testing.T, context.Context, interface{}) ErrorFct func(*testing.T, context.Context, error) LoginFct func(*testing.T, context.Context, server.User, *server.Request, interface{}) UnloggedFct func(*testing.T, context.Context, server.User, *server.Request) error }
func (ResponseSpy) SendJSON ¶
func (self ResponseSpy) SendJSON(ctx context.Context, data interface{})
func (ResponseSpy) SendLoginAccepted ¶
func (ResponseSpy) SendUnloggedId ¶
type T ¶
type T struct { Name string Request Request // Update is called before the test, if not nil. Update func(t *testing.T) Checker Checker }
T is a simple implementation of Test.
type Test ¶
type Test interface { GetName() string // Prepare is called before the handler is created. Prepare(t *testing.T) *ioc.Locator // GetRequest is called just after the handler is created. GetRequest(t *testing.T) *Request Checker Close() }
Test represents a test to be executed by Run(). A simple implementation is given by T.
type WithChecker ¶
type WithChecker struct {
Checker Checker
}
WithChecker is a Test mixin that uses a Checker to check the response of the handler.