Documentation
¶
Overview ¶
testing/helpers.go
testing/recorder.go
testing/testing.go
Index ¶
- func Context(t *testing.T) context.Context
- func ContextWithTimeout(t *testing.T, timeout time.Duration) context.Context
- func DevLogger() *zap.Logger
- func Eventually(t *testing.T, check func() bool, timeout, interval time.Duration)
- func EventuallyWithCollect(t *testing.T, check func(c Collect), timeout, interval time.Duration)
- func MustJSON(t *testing.T, v any) []byte
- func MustJSONString(t *testing.T, v any) string
- func Parallel(t *testing.T)
- func ReadFixture(t *testing.T, path string) []byte
- func ReadJSONFixture(t *testing.T, path string, v any)
- func RequireEnv(t *testing.T, key string) string
- func SetEnv(t *testing.T, key, value string)
- func Skip(t *testing.T, condition bool, reason string)
- func SkipCI(t *testing.T)
- func SkipShort(t *testing.T)
- func TempDir(t *testing.T) string
- func TempFile(t *testing.T, name, content string) string
- func TestLogger() *zap.Logger
- func UnsetEnv(t *testing.T, key string)
- type Collect
- type Recorder
- func (rec *Recorder) Delete(path string) *RecorderRequest
- func (rec *Recorder) Get(path string) *RecorderRequest
- func (rec *Recorder) Patch(path string) *RecorderRequest
- func (rec *Recorder) Post(path string) *RecorderRequest
- func (rec *Recorder) Put(path string) *RecorderRequest
- func (rec *Recorder) Request(method, path string) *RecorderRequest
- type RecorderRequest
- func (rr *RecorderRequest) BasicAuth(username, password string) *RecorderRequest
- func (rr *RecorderRequest) Bearer(token string) *RecorderRequest
- func (rr *RecorderRequest) Body(body io.Reader) *RecorderRequest
- func (rr *RecorderRequest) BodyBytes(body []byte) *RecorderRequest
- func (rr *RecorderRequest) BodyString(body string) *RecorderRequest
- func (rr *RecorderRequest) Build() *http.Request
- func (rr *RecorderRequest) Cookie(name, value string) *RecorderRequest
- func (rr *RecorderRequest) Form(data url.Values) *RecorderRequest
- func (rr *RecorderRequest) Header(key, value string) *RecorderRequest
- func (rr *RecorderRequest) Headers(headers map[string]string) *RecorderRequest
- func (rr *RecorderRequest) JSON(v any) *RecorderRequest
- func (rr *RecorderRequest) Queries(params map[string]string) *RecorderRequest
- func (rr *RecorderRequest) Query(key, value string) *RecorderRequest
- func (rr *RecorderRequest) Run(handler http.Handler) *Response
- func (rr *RecorderRequest) RunFunc(handler http.HandlerFunc) *Response
- type RequestBuilder
- func (rb *RequestBuilder) BasicAuth(username, password string) *RequestBuilder
- func (rb *RequestBuilder) Bearer(token string) *RequestBuilder
- func (rb *RequestBuilder) Body(body io.Reader) *RequestBuilder
- func (rb *RequestBuilder) BodyBytes(body []byte) *RequestBuilder
- func (rb *RequestBuilder) BodyString(body string) *RequestBuilder
- func (rb *RequestBuilder) Cookie(name, value string) *RequestBuilder
- func (rb *RequestBuilder) Do() *Response
- func (rb *RequestBuilder) Form(data url.Values) *RequestBuilder
- func (rb *RequestBuilder) Header(key, value string) *RequestBuilder
- func (rb *RequestBuilder) Headers(headers map[string]string) *RequestBuilder
- func (rb *RequestBuilder) JSON(v any) *RequestBuilder
- func (rb *RequestBuilder) Queries(params map[string]string) *RequestBuilder
- func (rb *RequestBuilder) Query(key, value string) *RequestBuilder
- type Response
- func (r *Response) BodyContains(substr string) *Response
- func (r *Response) BodyEmpty() *Response
- func (r *Response) BodyEquals(expected string) *Response
- func (r *Response) BodyNotContains(substr string) *Response
- func (r *Response) Bytes() []byte
- func (r *Response) ContentType(expected string) *Response
- func (r *Response) ContentTypeJSON() *Response
- func (r *Response) HeaderContains(key, substr string) *Response
- func (r *Response) HeaderEquals(key, expected string) *Response
- func (r *Response) HeaderExists(key string) *Response
- func (r *Response) JSON(v any) *Response
- func (r *Response) JSONPath(path string) any
- func (r *Response) JSONPathContains(path, substr string) *Response
- func (r *Response) JSONPathEquals(path string, expected any) *Response
- func (r *Response) Print() *Response
- func (r *Response) Status(code int) *Response
- func (r *Response) StatusBadRequest() *Response
- func (r *Response) StatusConflict() *Response
- func (r *Response) StatusCreated() *Response
- func (r *Response) StatusForbidden() *Response
- func (r *Response) StatusInternalServerError() *Response
- func (r *Response) StatusNoContent() *Response
- func (r *Response) StatusNotFound() *Response
- func (r *Response) StatusOK() *Response
- func (r *Response) StatusTooManyRequests() *Response
- func (r *Response) StatusUnauthorized() *Response
- func (r *Response) StatusUnprocessableEntity() *Response
- func (r *Response) String() string
- type Server
- func (s *Server) Delete(path string) *RequestBuilder
- func (s *Server) Get(path string) *RequestBuilder
- func (s *Server) Patch(path string) *RequestBuilder
- func (s *Server) Post(path string) *RequestBuilder
- func (s *Server) Put(path string) *RequestBuilder
- func (s *Server) Request(method, path string) *RequestBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextWithTimeout ¶
ContextWithTimeout returns a context with a custom timeout.
func Eventually ¶
Eventually retries a check function until it passes or times out.
func EventuallyWithCollect ¶
EventuallyWithCollect retries a check function that uses a Collect interface until it passes.
func MustJSONString ¶
MustJSONString marshals v to a JSON string, failing the test on error.
func ReadFixture ¶
ReadFixture reads a fixture file from testdata directory.
func ReadJSONFixture ¶
ReadJSONFixture reads and unmarshals a JSON fixture file.
func RequireEnv ¶
RequireEnv skips the test if an environment variable is not set.
Types ¶
type Collect ¶
type Collect interface {
Error(args ...any)
Errorf(format string, args ...any)
Fail()
FailNow()
Failed() bool
}
Collect is an interface for collecting test failures.
type Recorder ¶
type Recorder struct {
// contains filtered or unexported fields
}
Recorder provides a way to test handlers without starting a server.
func NewRecorder ¶
NewRecorder creates a new Recorder for testing.
func (*Recorder) Delete ¶
func (rec *Recorder) Delete(path string) *RecorderRequest
Delete creates a DELETE request.
func (*Recorder) Get ¶
func (rec *Recorder) Get(path string) *RecorderRequest
Get creates a GET request.
func (*Recorder) Patch ¶
func (rec *Recorder) Patch(path string) *RecorderRequest
Patch creates a PATCH request.
func (*Recorder) Post ¶
func (rec *Recorder) Post(path string) *RecorderRequest
Post creates a POST request.
func (*Recorder) Put ¶
func (rec *Recorder) Put(path string) *RecorderRequest
Put creates a PUT request.
func (*Recorder) Request ¶
func (rec *Recorder) Request(method, path string) *RecorderRequest
Request creates a new recorder request builder.
type RecorderRequest ¶
type RecorderRequest struct {
// contains filtered or unexported fields
}
RecorderRequest builds a request for handler testing.
func (*RecorderRequest) BasicAuth ¶
func (rr *RecorderRequest) BasicAuth(username, password string) *RecorderRequest
BasicAuth sets Basic auth header.
func (*RecorderRequest) Bearer ¶
func (rr *RecorderRequest) Bearer(token string) *RecorderRequest
Bearer sets the Authorization header with a Bearer token.
func (*RecorderRequest) Body ¶
func (rr *RecorderRequest) Body(body io.Reader) *RecorderRequest
Body sets the request body.
func (*RecorderRequest) BodyBytes ¶
func (rr *RecorderRequest) BodyBytes(body []byte) *RecorderRequest
BodyBytes sets the request body from bytes.
func (*RecorderRequest) BodyString ¶
func (rr *RecorderRequest) BodyString(body string) *RecorderRequest
BodyString sets the request body from a string.
func (*RecorderRequest) Build ¶
func (rr *RecorderRequest) Build() *http.Request
Build creates the http.Request without executing it.
func (*RecorderRequest) Cookie ¶
func (rr *RecorderRequest) Cookie(name, value string) *RecorderRequest
Cookie adds a cookie to the request.
func (*RecorderRequest) Form ¶
func (rr *RecorderRequest) Form(data url.Values) *RecorderRequest
Form sets the request body as form data.
func (*RecorderRequest) Header ¶
func (rr *RecorderRequest) Header(key, value string) *RecorderRequest
Header sets a request header.
func (*RecorderRequest) Headers ¶
func (rr *RecorderRequest) Headers(headers map[string]string) *RecorderRequest
Headers sets multiple request headers.
func (*RecorderRequest) JSON ¶
func (rr *RecorderRequest) JSON(v any) *RecorderRequest
JSON sets the request body as JSON.
func (*RecorderRequest) Queries ¶
func (rr *RecorderRequest) Queries(params map[string]string) *RecorderRequest
Queries sets multiple query parameters.
func (*RecorderRequest) Query ¶
func (rr *RecorderRequest) Query(key, value string) *RecorderRequest
Query sets a query parameter.
func (*RecorderRequest) Run ¶
func (rr *RecorderRequest) Run(handler http.Handler) *Response
Run executes the request against a handler and returns the response.
func (*RecorderRequest) RunFunc ¶
func (rr *RecorderRequest) RunFunc(handler http.HandlerFunc) *Response
RunFunc executes the request against a handler function.
type RequestBuilder ¶
type RequestBuilder struct {
// contains filtered or unexported fields
}
RequestBuilder builds and executes HTTP requests.
func (*RequestBuilder) BasicAuth ¶
func (rb *RequestBuilder) BasicAuth(username, password string) *RequestBuilder
BasicAuth sets the Authorization header with Basic auth.
func (*RequestBuilder) Bearer ¶
func (rb *RequestBuilder) Bearer(token string) *RequestBuilder
Bearer sets the Authorization header with a Bearer token.
func (*RequestBuilder) Body ¶
func (rb *RequestBuilder) Body(body io.Reader) *RequestBuilder
Body sets the request body.
func (*RequestBuilder) BodyBytes ¶
func (rb *RequestBuilder) BodyBytes(body []byte) *RequestBuilder
BodyBytes sets the request body from bytes.
func (*RequestBuilder) BodyString ¶
func (rb *RequestBuilder) BodyString(body string) *RequestBuilder
BodyString sets the request body from a string.
func (*RequestBuilder) Cookie ¶
func (rb *RequestBuilder) Cookie(name, value string) *RequestBuilder
Cookie adds a cookie to the request.
func (*RequestBuilder) Do ¶
func (rb *RequestBuilder) Do() *Response
Do executes the request and returns a Response.
func (*RequestBuilder) Form ¶
func (rb *RequestBuilder) Form(data url.Values) *RequestBuilder
Form sets the request body as form data and sets the Content-Type header.
func (*RequestBuilder) Header ¶
func (rb *RequestBuilder) Header(key, value string) *RequestBuilder
Header sets a request header.
func (*RequestBuilder) Headers ¶
func (rb *RequestBuilder) Headers(headers map[string]string) *RequestBuilder
Headers sets multiple request headers.
func (*RequestBuilder) JSON ¶
func (rb *RequestBuilder) JSON(v any) *RequestBuilder
JSON sets the request body as JSON and sets the Content-Type header.
func (*RequestBuilder) Queries ¶
func (rb *RequestBuilder) Queries(params map[string]string) *RequestBuilder
Queries sets multiple query parameters.
func (*RequestBuilder) Query ¶
func (rb *RequestBuilder) Query(key, value string) *RequestBuilder
Query sets a query parameter.
type Response ¶
Response wraps http.Response with assertion methods.
func (*Response) BodyContains ¶
BodyContains asserts the body contains a substring.
func (*Response) BodyEquals ¶
BodyEquals asserts the body equals the expected string.
func (*Response) BodyNotContains ¶
BodyNotContains asserts the body does not contain a substring.
func (*Response) ContentType ¶
ContentType asserts the Content-Type header.
func (*Response) ContentTypeJSON ¶
ContentTypeJSON asserts Content-Type is application/json.
func (*Response) HeaderContains ¶
HeaderContains asserts a header contains a substring.
func (*Response) HeaderEquals ¶
HeaderEquals asserts a header value.
func (*Response) HeaderExists ¶
HeaderExists asserts a header exists.
func (*Response) JSONPath ¶
JSONPath extracts a value from the JSON body at the given path. Path is dot-separated (e.g., "user.name", "items.0.id").
func (*Response) JSONPathContains ¶
JSONPathContains asserts a JSON path contains a substring (for strings).
func (*Response) JSONPathEquals ¶
JSONPathEquals asserts a JSON path equals an expected value.
func (*Response) StatusBadRequest ¶
StatusBadRequest asserts 400 Bad Request.
func (*Response) StatusConflict ¶
StatusConflict asserts 409 Conflict.
func (*Response) StatusCreated ¶
StatusCreated asserts 201 Created.
func (*Response) StatusForbidden ¶
StatusForbidden asserts 403 Forbidden.
func (*Response) StatusInternalServerError ¶
StatusInternalServerError asserts 500 Internal Server Error.
func (*Response) StatusNoContent ¶
StatusNoContent asserts 204 No Content.
func (*Response) StatusNotFound ¶
StatusNotFound asserts 404 Not Found.
func (*Response) StatusTooManyRequests ¶
StatusTooManyRequests asserts 429 Too Many Requests.
func (*Response) StatusUnauthorized ¶
StatusUnauthorized asserts 401 Unauthorized.
func (*Response) StatusUnprocessableEntity ¶
StatusUnprocessableEntity asserts 422 Unprocessable Entity.
type Server ¶
Server wraps httptest.Server with convenience methods for testing.
func NewTLSServer ¶
NewTLSServer creates a test server with TLS.
func (*Server) Delete ¶
func (s *Server) Delete(path string) *RequestBuilder
Delete creates a DELETE request builder.
func (*Server) Get ¶
func (s *Server) Get(path string) *RequestBuilder
Get creates a GET request builder.
func (*Server) Patch ¶
func (s *Server) Patch(path string) *RequestBuilder
Patch creates a PATCH request builder.
func (*Server) Post ¶
func (s *Server) Post(path string) *RequestBuilder
Post creates a POST request builder.
func (*Server) Put ¶
func (s *Server) Put(path string) *RequestBuilder
Put creates a PUT request builder.
func (*Server) Request ¶
func (s *Server) Request(method, path string) *RequestBuilder
Request creates a new request builder for the server.