Documentation ¶
Index ¶
Constants ¶
const ( // Version 1 of the cassette format CassetteFormatV1 = 1 // Version 2 of the cassette format CassetteFormatV2 = 2 )
Cassette format versions
Variables ¶
var ( // ErrInteractionNotFound indicates that a requested // interaction was not found in the cassette file ErrInteractionNotFound = errors.New("requested interaction not found") // ErrCassetteNotFound indicates that a requested // casette doesn't exist (only in Replaying mode) ErrCassetteNotFound = errors.New("requested cassette not found") // ErrUnsupportedCassetteFormat is returned when attempting to // use an older and potentially unsupported format of a // cassette ErrUnsupportedCassetteFormat = fmt.Errorf("required version of cassette is v%d", CassetteFormatV2) )
Functions ¶
Types ¶
type Cassette ¶
type Cassette struct { // Name of the cassette Name string `yaml:"-"` // File name of the cassette as written on disk File string `yaml:"-"` // Cassette format version Version int `yaml:"version"` // Mutex to lock accessing Interactions. omitempty is set to // prevent the mutex appearing in the recorded YAML. Mu sync.RWMutex `yaml:"mu,omitempty"` // Interactions between client and server Interactions []*Interaction `yaml:"interactions"` // ReplayableInteractions defines whether to allow // interactions to be replayed or not ReplayableInteractions bool `yaml:"-"` // Matches actual request with interaction requests. Matcher MatcherFunc `yaml:"-"` // IsNew specifies whether this is a newly created cassette. // Returns false, when the cassette was loaded from an // existing source, e.g. a file. IsNew bool `yaml:"-"` // contains filtered or unexported fields }
Cassette type
func (*Cassette) AddInteraction ¶
func (c *Cassette) AddInteraction(i *Interaction)
AddInteraction appends a new interaction to the cassette
func (*Cassette) GetInteraction ¶
func (c *Cassette) GetInteraction(r *http.Request) (*Interaction, error)
GetInteraction retrieves a recorded request/response interaction
type Interaction ¶
type Interaction struct { // ID is the id of the interaction ID int `yaml:"id"` // Request is the recorded request Request Request `yaml:"request"` // Response is the recorded response Response Response `yaml:"response"` // DiscardOnSave if set to true will discard the interaction // as a whole and it will not be part of the final // interactions when saving the cassette on disk. DiscardOnSave bool `yaml:"-"` // contains filtered or unexported fields }
Interaction type contains a pair of request/response for a single HTTP interaction between a client and a server
func (*Interaction) GetHTTPRequest ¶
func (i *Interaction) GetHTTPRequest() (*http.Request, error)
GetHTTPRequest converts the recorded interaction request to http.Request instance
func (*Interaction) GetHTTPResponse ¶
func (i *Interaction) GetHTTPResponse() (*http.Response, error)
GetHTTPResponse converts the recorded interaction response to http.Response instance
func (*Interaction) WasReplayed ¶ added in v3.2.0
func (i *Interaction) WasReplayed() bool
WasReplayed returns a boolean indicating whether the given interaction was already replayed.
type MatcherFunc ¶
MatcherFunc function returns true when the actual request matches a single HTTP interaction's request according to the function's own criteria.
type Request ¶
type Request struct { Proto string `yaml:"proto"` ProtoMajor int `yaml:"proto_major"` ProtoMinor int `yaml:"proto_minor"` ContentLength int64 `yaml:"content_length"` TransferEncoding []string `yaml:"transfer_encoding"` Trailer http.Header `yaml:"trailer"` Host string `yaml:"host"` RemoteAddr string `yaml:"remote_addr"` RequestURI string `yaml:"request_uri"` // Body of request Body string `yaml:"body"` // Form values Form url.Values `yaml:"form"` // Request headers Headers http.Header `yaml:"headers"` // Request URL URL string `yaml:"url"` // Request method Method string `yaml:"method"` }
Request represents a client request as recorded in the cassette file
type Response ¶
type Response struct { Proto string `yaml:"proto"` ProtoMajor int `yaml:"proto_major"` ProtoMinor int `yaml:"proto_minor"` TransferEncoding []string `yaml:"transfer_encoding"` Trailer http.Header `yaml:"trailer"` ContentLength int64 `yaml:"content_length"` Uncompressed bool `yaml:"uncompressed"` // Body of response Body string `yaml:"body"` // Response headers Headers http.Header `yaml:"headers"` // Response status message Status string `yaml:"status"` // Response status code Code int `yaml:"code"` // Response duration (something like "100ms" or "10s") Duration time.Duration `yaml:"duration"` }
Response represents a server response as recorded in the cassette file