servertest

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2021 License: AGPL-3.0 Imports: 12 Imported by: 0

Documentation

Overview

Package servertest provides methods and types to test server.Handler implementations.

Index

Constants

This section is empty.

Variables

View Source
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)
	}
})
View Source
var (
	Unimplemented = errors.New("Unimplemented")
)

Functions

func FindCookie added in v0.1.2

func FindCookie(response *http.Response, name string) (found *http.Cookie)

FindCookie returns a cookie by name.

func Run

func Run(t *testing.T, tests []Test, handler server.Handler)

Run executes all the given tests on the given Handler.

The same handler is used for all tests. The tests are executed in the given order. The requests received by the handler are as if the handler had been registered for the pattern "/a/test".

Each test is executed inside testing.T.Run, hence calling t.Fatal in the checker abort only the current test.

func RunFunc

func RunFunc(t *testing.T, tests []Test, handler server.HandleFunction)

RunFunc is a convenient wrapper around Run for HandleFunction.

Types

type CheckCookieIsSet added in v0.1.2

type CheckCookieIsSet struct {
	Name string
}

func (CheckCookieIsSet) Check added in v0.1.2

func (self CheckCookieIsSet) Check(t *testing.T, response *http.Response, request *server.Request)

type CheckError added in v0.0.4

type CheckError struct {
	Code int
	Body string
}

CheckError checks the statusCode and error message of a response.

func (CheckError) Check added in v0.0.4

func (self CheckError) Check(t *testing.T, response *http.Response, request *server.Request)

Check implements Checker.

type CheckJSON added in v0.0.4

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.

func (CheckJSON) Check added in v0.0.4

func (self CheckJSON) Check(t *testing.T, response *http.Response, request *server.Request)

Check implements Checker.

type CheckStatus added in v0.0.4

type CheckStatus struct {
	Code int
}

CheckStatus checks only the statusCode of a response.

func (CheckStatus) Check added in v0.0.4

func (self CheckStatus) Check(t *testing.T, response *http.Response, request *server.Request)

Check implements Checker.

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 added in v0.0.4

type CheckerFun func(t *testing.T, response *http.Response, request *server.Request)

func (CheckerFun) Check added in v0.0.4

func (self CheckerFun) Check(t *testing.T, response *http.Response, request *server.Request)

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) Get

func (self *ClientStore) Get(r *http.Request, name string) (*sessions.Session, error)

Get is currently not implemented.

func (*ClientStore) New

func (self *ClientStore) New(r *http.Request, name string) (*sessions.Session, error)

func (*ClientStore) Save

func (self *ClientStore) Save(r *http.Request, w http.ResponseWriter,
	session *sessions.Session) error

type MockResponse added in v0.0.5

type MockResponse struct {
	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)
	UnloggedFct func(*testing.T, context.Context, server.User, *server.Request) error
}

func (MockResponse) SendError added in v0.0.5

func (self MockResponse) SendError(ctx context.Context, err error)

func (MockResponse) SendJSON added in v0.0.5

func (self MockResponse) SendJSON(ctx context.Context, data interface{})

func (MockResponse) SendLoginAccepted added in v0.0.5

func (self MockResponse) SendLoginAccepted(ctx context.Context, user server.User,
	request *server.Request)

func (MockResponse) SendUnloggedId added in v0.1.2

func (self MockResponse) SendUnloggedId(ctx context.Context, user server.User,
	request *server.Request) 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

func (self *Request) Make() (req *http.Request, err error)

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 T added in v0.1.1

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.

func (*T) Check added in v0.1.1

func (self *T) Check(t *testing.T, response *http.Response, request *server.Request)

func (*T) Close added in v0.1.1

func (self *T) Close()

func (*T) GetName added in v0.1.1

func (self *T) GetName() string

func (*T) GetRequest added in v0.1.1

func (self *T) GetRequest(t *testing.T) *Request

func (*T) Prepare added in v0.1.1

func (self *T) Prepare(t *testing.T)

Prepare runs before the handler is executed. If Update is not nil, it is called first. If Checker implements a method Before(*testing.T) then it is called next.

type Test

type Test interface {
	GetName() string
	GetRequest(t *testing.T) *Request
	Prepare(t *testing.T)
	Checker
	Close()
}

Test represents a test to be executed by Run(). A simple implementation is given by T.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL