Documentation
¶
Index ¶
- Constants
- Variables
- func GetNewMinifiers() *minify.M
- func GetRandomName(n int) []byte
- func Pipeline(cmds ...*exec.Cmd) (pipeLineOutput, collectedStandardError []byte, pipeLineError error)
- func SynthesizeResponse(req *http.Request, middleware string) (*http.Response, error)
- type ActionType
- type ActionTypeHooks
- type Client
- type Configuration
- type Constructor
- type Entry
- type Hook
- type Hoverfly
- func (d *Hoverfly) AddHook(hook Hook)
- func (d *Hoverfly) AllMetadataHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) AllRecordsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) CurrentStateHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) DeleteAllRecordsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) DeleteMetadataHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) Import(uri string) error
- func (d *Hoverfly) ImportFromDisk(path string) error
- func (d *Hoverfly) ImportFromURL(url string) error
- func (d *Hoverfly) ImportPayloads(payloads []Payload) error
- func (d *Hoverfly) ImportRecordsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) ManualAddHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) RecordsCount(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) SetMetadataHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) StartAdminInterface()
- func (d *Hoverfly) StartProxy() error
- func (d *Hoverfly) StateHandler(w http.ResponseWriter, r *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) StatsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- func (d *Hoverfly) StatsWSHandler(w http.ResponseWriter, r *http.Request)
- func (d *Hoverfly) StopProxy()
- func (d *Hoverfly) UpdateDestination(destination string) (err error)
- func (d *Hoverfly) UpdateProxy()
- type Payload
- type RequestContainer
- type RequestDetails
- type ResponseDetails
- type StoppableListener
Constants ¶
const ( HoverflyAuthEnabledEV = "HoverflyAuthEnabled" HoverflySecretEV = "HoverflySecret" HoverflyTokenExpirationEV = "HoverflyTokenExpiration" HoverflyAdminPortEV = "AdminPort" HoverflyProxyPortEV = "ProxyPort" HoverflyDBEV = "HoverflyDB" HoverflyMiddlewareEV = "HoverflyMiddleware" HoverflyTLSVerification = "HoverflyTlsVerification" HoverflyAdminUsernameEV = "HoverflyAdmin" HoverflyAdminPasswordEV = "HoverflyAdminPass" HoverflyImportRecordsEV = "HoverflyImport" )
Environment variables
const ActionTypeConfigurationChanged = "configurationChanged"
ActionTypeConfigurationChanged - default action name for identifying configuration changes
const ActionTypeRequestCaptured = "requestCaptured"
ActionTypeRequestCaptured - default action type name for identifying
const ActionTypeWipeDB = "wipeDatabase"
ActionTypeWipeDB - default action type for wiping database
const CaptureMode = "capture"
CaptureMode - requests are captured and stored in cache
const DefaultAdminPort = "8888"
DefaultAdminPort - default admin interface port
const DefaultDatabasePath = "requests.db"
DefaultDatabasePath - default database name that will be created or used by Hoverfly
const DefaultJWTExpirationDelta = 1 * 24 * 60 * 60
DefaultJWTExpirationDelta - default token expiration if environment variable is no provided
const DefaultPort = "8500"
DefaultPort - default proxy port
const ModifyMode = "modify"
ModifyMode - middleware is applied to outgoing and incoming traffic
const SimulateMode = "simulate"
SimulateMode - default mode when Hoverfly looks for captured requests to respond
const SynthesizeMode = "synthesize"
SynthesizeMode - all requests are sent to middleware to create response
const URL string = `` /* 321-byte string literal not displayed */
URL is regexp to match http urls
Variables ¶
var TestDB *bolt.DB
TestDB - holds connection to database during tests
Functions ¶
func GetNewMinifiers ¶ added in v0.5.15
GetNewMinifiers - returns minify.M with prepared xml/json minifiers
func GetRandomName ¶
GetRandomName - provides random name for buckets. Each test case gets it's own bucket
Types ¶
type ActionType ¶ added in v0.5.11
type ActionType string
ActionType - action type can be things such as "RequestCaptured", "GotResponse" - anything
type ActionTypeHooks ¶ added in v0.5.11
type ActionTypeHooks map[ActionType][]Hook
ActionTypeHooks type for storing the hooks
func (ActionTypeHooks) Add ¶ added in v0.5.11
func (hooks ActionTypeHooks) Add(hook Hook)
Add a hook
func (ActionTypeHooks) Fire ¶ added in v0.5.11
func (hooks ActionTypeHooks) Fire(ac ActionType, entry *Entry) error
Fire all the hooks for the passed ActionType
type Configuration ¶
type Configuration struct {
AdminPort string
ProxyPort string
Mode string
Destination string
Middleware string
DatabasePath string
TLSVerification bool
Verbose bool
Development bool
SecretKey []byte
JWTExpirationDelta int
AuthEnabled bool
ProxyControlWG sync.WaitGroup
// contains filtered or unexported fields
}
Configuration - initial structure of configuration
func InitSettings ¶
func InitSettings() *Configuration
InitSettings gets and returns initial configuration from env variables or sets defaults
func (*Configuration) GetMode ¶
func (c *Configuration) GetMode() (mode string)
GetMode - provides safe way to get current mode
func (*Configuration) SetMode ¶
func (c *Configuration) SetMode(mode string)
SetMode - provides safe way to set new mode
type Constructor ¶
type Constructor struct {
// contains filtered or unexported fields
}
Constructor - holds information about original request (which is needed to create response and also holds payload
func NewConstructor ¶
func NewConstructor(req *http.Request, payload Payload) *Constructor
NewConstructor - returns constructor instance
func (*Constructor) ApplyMiddleware ¶
func (c *Constructor) ApplyMiddleware(middleware string) error
ApplyMiddleware - activates given middleware, middleware should be passed as string to executable, can be full path.
func (*Constructor) ReconstructRequest ¶
func (c *Constructor) ReconstructRequest() (*http.Request, error)
ReconstructRequest replaces original request with details provided in Constructor Payload.Request
func (*Constructor) ReconstructResponse ¶
func (c *Constructor) ReconstructResponse() *http.Response
ReconstructResponse changes original response with details provided in Constructor Payload.Response
type Entry ¶ added in v0.5.11
type Entry struct {
// Contains encoded data
Data []byte
// Time at which the action entry was fired
Time time.Time
ActionType ActionType
// Message, can carry additional information
Message string
}
Entry - holds information about action, based on action type - other clients will be able to decode the data field.
type Hook ¶ added in v0.5.11
type Hook interface {
ActionTypes() []ActionType
Fire(*Entry) error
}
Hook - an interface to add dynamic hooks to extend functionality
type Hoverfly ¶ added in v0.5.16
type Hoverfly struct {
RequestCache cache.Cache
MetadataCache cache.Cache
Authentication authBackend.Authentication
HTTP *http.Client
Cfg *Configuration
Counter *metrics.CounterByMode
Hooks ActionTypeHooks
Proxy *goproxy.ProxyHttpServer
SL *StoppableListener
MIN *minify.M
// contains filtered or unexported fields
}
Hoverfly provides access to hoverfly - updating/starting/stopping proxy, http client and configuration, cache access
func GetNewHoverfly ¶
func GetNewHoverfly(cfg *Configuration, requestCache, metadataCache cache.Cache, authentication backends.Authentication) *Hoverfly
GetNewHoverfly returns a configured ProxyHttpServer and DBClient
func (*Hoverfly) AllMetadataHandler ¶ added in v0.5.16
func (d *Hoverfly) AllMetadataHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
AllMetadataHandler returns JSON content type http response
func (*Hoverfly) AllRecordsHandler ¶ added in v0.5.16
func (d *Hoverfly) AllRecordsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
AllRecordsHandler returns JSON content type http response
func (*Hoverfly) CurrentStateHandler ¶ added in v0.5.16
func (d *Hoverfly) CurrentStateHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
CurrentStateHandler returns current state
func (*Hoverfly) DeleteAllRecordsHandler ¶ added in v0.5.16
func (d *Hoverfly) DeleteAllRecordsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
DeleteAllRecordsHandler - deletes all captured requests
func (*Hoverfly) DeleteMetadataHandler ¶ added in v0.5.16
func (d *Hoverfly) DeleteMetadataHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
DeleteMetadataHandler - deletes all metadata
func (*Hoverfly) Import ¶ added in v0.5.16
Import is a function that based on input decides whether it is a local resource or whether it should fetch it from remote server. It then imports given payload into the database or returns an error
func (*Hoverfly) ImportFromDisk ¶ added in v0.5.16
ImportFromDisk - takes one string value and tries to open a file, then parse it into recordedRequests structure (which is default format in which Hoverfly exports captured requests) and imports those requests into the database
func (*Hoverfly) ImportFromURL ¶ added in v0.5.16
ImportFromURL - takes one string value and tries connect to a remote server, then parse response body into recordedRequests structure (which is default format in which Hoverfly exports captured requests) and imports those requests into the database
func (*Hoverfly) ImportPayloads ¶ added in v0.5.16
ImportPayloads - a function to save given payloads into the database.
func (*Hoverfly) ImportRecordsHandler ¶ added in v0.5.16
func (d *Hoverfly) ImportRecordsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
ImportRecordsHandler - accepts JSON payload and saves it to cache
func (*Hoverfly) ManualAddHandler ¶ added in v0.5.16
func (d *Hoverfly) ManualAddHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
ManualAddHandler - manually add new request/responses, using a form
func (*Hoverfly) RecordsCount ¶ added in v0.5.16
func (d *Hoverfly) RecordsCount(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
RecordsCount returns number of captured requests as a JSON payload
func (*Hoverfly) SetMetadataHandler ¶ added in v0.5.16
func (d *Hoverfly) SetMetadataHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
SetMetadataHandler - sets new metadata
func (*Hoverfly) StartAdminInterface ¶ added in v0.5.16
func (d *Hoverfly) StartAdminInterface()
StartAdminInterface - starts admin interface web server
func (*Hoverfly) StartProxy ¶ added in v0.5.16
StartProxy - starts proxy with current configuration, this method is non blocking.
func (*Hoverfly) StateHandler ¶ added in v0.5.16
func (d *Hoverfly) StateHandler(w http.ResponseWriter, r *http.Request, next http.HandlerFunc)
StateHandler handles current proxy state
func (*Hoverfly) StatsHandler ¶ added in v0.5.16
func (d *Hoverfly) StatsHandler(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
StatsHandler - returns current stats about Hoverfly (request counts, record count)
func (*Hoverfly) StatsWSHandler ¶ added in v0.5.16
func (d *Hoverfly) StatsWSHandler(w http.ResponseWriter, r *http.Request)
StatsWSHandler - returns current stats about Hoverfly (request counts, record count) through the websocket
func (*Hoverfly) StopProxy ¶ added in v0.5.16
func (d *Hoverfly) StopProxy()
StopProxy - stops proxy
func (*Hoverfly) UpdateDestination ¶ added in v0.5.16
UpdateDestination - updates proxy with new destination regexp
func (*Hoverfly) UpdateProxy ¶ added in v0.5.16
func (d *Hoverfly) UpdateProxy()
UpdateProxy - applies hooks
type Payload ¶
type Payload struct {
Response ResponseDetails `json:"response"`
Request RequestDetails `json:"request"`
ID string `json:"id"`
}
Payload structure holds request and response structure
func ExecuteMiddleware ¶
ExecuteMiddleware - takes command (middleware string) and payload, which is passed to middleware
type RequestContainer ¶
type RequestContainer struct {
Details RequestDetails
Minifier *minify.M
}
RequestContainer holds structure for request
func (*RequestContainer) Hash ¶
func (r *RequestContainer) Hash() string
Hash returns unique hash key for request
type RequestDetails ¶
type RequestDetails struct {
Path string `json:"path"`
Method string `json:"method"`
Destination string `json:"destination"`
Scheme string `json:"scheme"`
Query string `json:"query"`
Body string `json:"body"`
RemoteAddr string `json:"remoteAddr"`
Headers map[string][]string `json:"headers"`
}
RequestDetails stores information about request, it's used for creating unique hash and also as a payload structure
type ResponseDetails ¶
type ResponseDetails struct {
Status int `json:"status"`
Body string `json:"body"`
Headers map[string][]string `json:"headers"`
}
ResponseDetails structure hold response body from external service, body is not decoded and is supposed to be bytes, however headers should provide all required information for later decoding by the client.
type StoppableListener ¶ added in v0.5.15
type StoppableListener struct {
*net.TCPListener
// contains filtered or unexported fields
}
StoppableListener - wrapper for tcp listener that can stop
func NewStoppableListener ¶ added in v0.5.15
func NewStoppableListener(l net.Listener) (*StoppableListener, error)
NewStoppableListener returns new StoppableListener listener
func (*StoppableListener) Accept ¶ added in v0.5.15
func (sl *StoppableListener) Accept() (net.Conn, error)
Accept - TCPListener waits for the next call, implements default interface method
func (*StoppableListener) Stop ¶ added in v0.5.15
func (sl *StoppableListener) Stop()
Stop - stops listener
