httpserver

package
v1.5.3 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package httpserver provides itestkit handlers for in-process HTTP servers.

Package httpserver is a generated GoMock package.

Index

Constants

View Source
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]) Invoke

func (handler CallHandler[C]) Invoke(ctx context.Context, harness C, request any) (any, error)

Invoke sends the fixture request to the in-process HTTP handler.

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

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

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

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

func WithBaseURL(rawURL string) Option

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

type ResponseMeta struct {
	StatusCode int
	Header     http.Header
}

ResponseMeta contains HTTP response data that body normalization may inspect but cannot replace.

Jump to

Keyboard shortcuts

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