Documentation
¶
Overview ¶
Package httpserver provides itestkit handlers for in-process HTTP servers.
Package httpserver is a generated GoMock package.
Index ¶
- Constants
- func NewRegistry[C handlerProvider](customHandlers map[string]itestkit.Handler[C], options ...Option) itestkit.MapRegistry[C]
- type BodyNormalizationContext
- type BodyNormalizer
- type CSRFConfig
- type CallHandler
- func (CallHandler[C]) DecodeExpectedResponse(raw json.RawMessage) (any, error)
- func (CallHandler[C]) DecodeRequest(raw json.RawMessage) (any, error)
- func (handler CallHandler[C]) Invoke(ctx context.Context, harness C, request any) (any, error)
- func (CallHandler[C]) NormalizeResponse(response any) (any, error)
- type Cookie
- type CookieJar
- type MockBodyNormalizer
- type MockBodyNormalizerMockRecorder
- type MockcookieJarProvider
- type MockcookieJarProviderMockRecorder
- type MockhandlerProvider
- type MockhandlerProviderMockRecorder
- type Option
- type Request
- type Response
- type ResponseMeta
Constants ¶
const (
// CallHTTPHandlerName is the preset handler name for in-process HTTP calls.
CallHTTPHandlerName = "CallHTTP"
)
Variables ¶
This section is empty.
Functions ¶
func NewRegistry ¶
func NewRegistry[C handlerProvider]( customHandlers map[string]itestkit.Handler[C], options ...Option, ) itestkit.MapRegistry[C]
NewRegistry returns a registry with the preset HTTP server handler and custom handlers.
The case harness type C must expose HTTPHandler() http.Handler. If fixtures use use_cookies, the same harness must also expose HTTPCookieJar() *httpserver.CookieJar.
Types ¶
type BodyNormalizationContext ¶ added in v1.3.4
type BodyNormalizationContext struct {
Request Request
Response ResponseMeta
Body []byte
}
BodyNormalizationContext contains the request, response metadata, and raw response body.
type BodyNormalizer ¶ added in v1.3.4
type BodyNormalizer interface {
NormalizeHTTPBody(ctx BodyNormalizationContext) (body any, handled bool, err error)
}
BodyNormalizer can replace the default HTTP response body normalization for a step.
type CSRFConfig ¶ added in v1.3.1
type CSRFConfig struct {
// Cookie names the cookie in the per-case CookieJar whose value becomes the CSRF token.
Cookie string `json:"cookie"`
// Header names the HTTP header that receives the cookie value.
Header string `json:"header"`
}
CSRFConfig copies one stored cookie value into one request header.
type CallHandler ¶
type CallHandler[C handlerProvider] struct {
// contains filtered or unexported fields
}
CallHandler executes JSONC HTTP requests against an in-process HTTP handler.
func NewCallHandler ¶
func NewCallHandler[C handlerProvider](options ...Option) CallHandler[C]
NewCallHandler creates a CallHandler.
func (CallHandler[C]) DecodeExpectedResponse ¶
func (CallHandler[C]) DecodeExpectedResponse(raw json.RawMessage) (any, error)
DecodeExpectedResponse decodes the expected normalized HTTP response.
func (CallHandler[C]) DecodeRequest ¶
func (CallHandler[C]) DecodeRequest(raw json.RawMessage) (any, error)
DecodeRequest decodes a JSONC HTTP request with strict field validation.
func (CallHandler[C]) NormalizeResponse ¶
func (CallHandler[C]) NormalizeResponse(response any) (any, error)
NormalizeResponse converts handler responses to a stable map for exact and partial comparisons.
type Cookie ¶
type Cookie struct {
Value string `json:"value"`
Path string `json:"path"`
HTTPOnly bool `json:"http_only"`
Secure bool `json:"secure"`
SameSite string `json:"same_site"`
MaxAge int `json:"max_age,omitempty"`
}
Cookie is a stable JSON-safe view of a Set-Cookie value.
type CookieJar ¶
type CookieJar struct {
// contains filtered or unexported fields
}
CookieJar stores HTTP cookies within one test case.
func NewCookieJar ¶
func NewCookieJar() *CookieJar
NewCookieJar creates an empty cookie jar for one test case.
type MockBodyNormalizer ¶ added in v1.3.4
type MockBodyNormalizer struct {
// contains filtered or unexported fields
}
MockBodyNormalizer is a mock of BodyNormalizer interface.
func NewMockBodyNormalizer ¶ added in v1.3.4
func NewMockBodyNormalizer(ctrl *gomock.Controller) *MockBodyNormalizer
NewMockBodyNormalizer creates a new mock instance.
func (*MockBodyNormalizer) EXPECT ¶ added in v1.3.4
func (m *MockBodyNormalizer) EXPECT() *MockBodyNormalizerMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockBodyNormalizer) NormalizeHTTPBody ¶ added in v1.3.4
func (m *MockBodyNormalizer) NormalizeHTTPBody(ctx BodyNormalizationContext) (any, bool, error)
NormalizeHTTPBody mocks base method.
type MockBodyNormalizerMockRecorder ¶ added in v1.3.4
type MockBodyNormalizerMockRecorder struct {
// contains filtered or unexported fields
}
MockBodyNormalizerMockRecorder is the mock recorder for MockBodyNormalizer.
func (*MockBodyNormalizerMockRecorder) NormalizeHTTPBody ¶ added in v1.3.4
func (mr *MockBodyNormalizerMockRecorder) NormalizeHTTPBody(ctx any) *gomock.Call
NormalizeHTTPBody indicates an expected call of NormalizeHTTPBody.
type MockcookieJarProvider ¶ added in v1.3.4
type MockcookieJarProvider struct {
// contains filtered or unexported fields
}
MockcookieJarProvider is a mock of cookieJarProvider interface.
func NewMockcookieJarProvider ¶ added in v1.3.4
func NewMockcookieJarProvider(ctrl *gomock.Controller) *MockcookieJarProvider
NewMockcookieJarProvider creates a new mock instance.
func (*MockcookieJarProvider) EXPECT ¶ added in v1.3.4
func (m *MockcookieJarProvider) EXPECT() *MockcookieJarProviderMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockcookieJarProvider) HTTPCookieJar ¶ added in v1.3.4
func (m *MockcookieJarProvider) HTTPCookieJar() *CookieJar
HTTPCookieJar mocks base method.
type MockcookieJarProviderMockRecorder ¶ added in v1.3.4
type MockcookieJarProviderMockRecorder struct {
// contains filtered or unexported fields
}
MockcookieJarProviderMockRecorder is the mock recorder for MockcookieJarProvider.
func (*MockcookieJarProviderMockRecorder) HTTPCookieJar ¶ added in v1.3.4
func (mr *MockcookieJarProviderMockRecorder) HTTPCookieJar() *gomock.Call
HTTPCookieJar indicates an expected call of HTTPCookieJar.
type MockhandlerProvider ¶ added in v1.3.4
type MockhandlerProvider struct {
// contains filtered or unexported fields
}
MockhandlerProvider is a mock of handlerProvider interface.
func NewMockhandlerProvider ¶ added in v1.3.4
func NewMockhandlerProvider(ctrl *gomock.Controller) *MockhandlerProvider
NewMockhandlerProvider creates a new mock instance.
func (*MockhandlerProvider) EXPECT ¶ added in v1.3.4
func (m *MockhandlerProvider) EXPECT() *MockhandlerProviderMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockhandlerProvider) HTTPHandler ¶ added in v1.3.4
func (m *MockhandlerProvider) HTTPHandler() http.Handler
HTTPHandler mocks base method.
type MockhandlerProviderMockRecorder ¶ added in v1.3.4
type MockhandlerProviderMockRecorder struct {
// contains filtered or unexported fields
}
MockhandlerProviderMockRecorder is the mock recorder for MockhandlerProvider.
func (*MockhandlerProviderMockRecorder) HTTPHandler ¶ added in v1.3.4
func (mr *MockhandlerProviderMockRecorder) HTTPHandler() *gomock.Call
HTTPHandler indicates an expected call of HTTPHandler.
type Option ¶
type Option func(*callHandlerConfig)
Option configures CallHandler.
func WithBaseURL ¶
WithBaseURL sets the base URL used to construct in-process HTTP requests.
Host-aware routers read request.Host from this URL. The request path and query still come from JSONC fields.
func WithBodyNormalizer ¶ added in v1.3.4
func WithBodyNormalizer(normalizer BodyNormalizer) Option
WithBodyNormalizer sets a hook that may replace HTTP response body normalization.
type Request ¶
type Request struct {
Method string `json:"method"`
Path string `json:"path"`
Query map[string]string `json:"query,omitempty"`
Headers map[string]string `json:"headers,omitempty"`
Body json.RawMessage `json:"body,omitempty"`
RawBody *string `json:"raw_body,omitempty"`
ResponseBody json.RawMessage `json:"response_body,omitempty"`
UseCookies bool `json:"use_cookies,omitempty"`
CSRF *CSRFConfig `json:"csrf,omitempty"`
CaptureHeaders []string `json:"capture_headers,omitempty"`
CaptureCookies []string `json:"capture_cookies,omitempty"`
}
Request describes one in-process HTTP request from a JSONC step.
type Response ¶
type Response struct {
Status int `json:"status"`
Headers map[string][]string `json:"headers,omitempty"`
Cookies map[string]Cookie `json:"cookies,omitempty"`
Body any `json:"body,omitempty"`
}
Response is the stable JSON-safe HTTP response shape asserted by fixtures.
type ResponseMeta ¶ added in v1.3.4
ResponseMeta contains HTTP response data that body normalization may inspect but cannot replace.