hoverfly

package
v0.14.2 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2017 License: Apache-2.0 Imports: 43 Imported by: 1

Documentation

Index

Constants

View Source
const (
	HoverflyAuthEnabledEV     = "HoverflyAuthEnabled"
	HoverflySecretEV          = "HoverflySecret"
	HoverflyTokenExpirationEV = "HoverflyTokenExpiration"

	HoverflyAdminPortEV = "AdminPort"
	HoverflyProxyPortEV = "ProxyPort"

	HoverflyDBEV         = "HoverflyDB"
	HoverflyMiddlewareEV = "HoverflyMiddleware"

	HoverflyTLSVerification = "HoverflyTlsVerification"

	HoverflyAdminUsernameEV = "HoverflyAdmin"
	HoverflyAdminPasswordEV = "HoverflyAdminPass"

	HoverflyImportRecordsEV = "HoverflyImport"

	HoverflyUpstreamProxyPortEV = "UpstreamProxy"
)

Environment variables

View Source
const ActionTypeConfigurationChanged = "configurationChanged"

ActionTypeConfigurationChanged - default action name for identifying configuration changes

View Source
const ActionTypeRequestCaptured = "requestCaptured"

ActionTypeRequestCaptured - default action type name for identifying

View Source
const ActionTypeWipeDB = "wipeDatabase"

ActionTypeWipeDB - default action type for wiping database

View Source
const DefaultAdminPort = "8888"

DefaultAdminPort - default admin interface port

View Source
const DefaultDatabasePath = "requests.db"

DefaultDatabasePath - default database name that will be created or used by Hoverfly

View Source
const DefaultJWTExpirationDelta = 1 * 24 * 60 * 60

DefaultJWTExpirationDelta - default token expiration if environment variable is no provided

View Source
const DefaultPort = "8500"

DefaultPort - default proxy port

View Source
const URL string = `` /* 321-byte string literal not displayed */

URL is regexp to match http urls

Variables

View Source
var ProxyAuthorizationHeader string
View Source
var TestDB *bolt.DB

TestDB - holds connection to database during tests

Functions

func GetDefaultHoverflyHTTPClient added in v0.9.0

func GetDefaultHoverflyHTTPClient(tlsVerification bool, upstreamProxy string) *http.Client

func GetRandomName

func GetRandomName(n int) []byte

GetRandomName - provides random name for buckets. Each test case gets it's own bucket

func NewProxy

func NewProxy(hoverfly *Hoverfly) *goproxy.ProxyHttpServer

Creates goproxy.ProxyHttpServer and configures it to be used as a proxy for Hoverfly goproxy is given handlers that use the Hoverfly request processing

func NewWebserverProxy

func NewWebserverProxy(hoverfly *Hoverfly) *goproxy.ProxyHttpServer

Creates goproxy.ProxyHttpServer and configures it to be used as a webserver for Hoverfly goproxy is given a non proxy handler that uses the Hoverfly request processing

Types

type ActionType

type ActionType string

ActionType - action type can be things such as "RequestCaptured", "GotResponse" - anything

type ActionTypeHooks

type ActionTypeHooks map[ActionType][]Hook

ActionTypeHooks type for storing the hooks

func (ActionTypeHooks) Add

func (hooks ActionTypeHooks) Add(hook Hook)

Add a hook

func (ActionTypeHooks) Fire

func (hooks ActionTypeHooks) Fire(ac ActionType, entry *Entry) error

Fire all the hooks for the passed ActionType

type AdminApi added in v0.9.0

type AdminApi struct{}

func (*AdminApi) StartAdminInterface added in v0.9.0

func (this *AdminApi) StartAdminInterface(hoverfly *Hoverfly)

Starts the Admin API on a new HTTP port. Port is chosen by hoverfly.Cfg.AdminPort.

type Client

type Client struct {
	HTTPClient *http.Client
}

Client structure to be injected into functions to perform HTTP calls

type Configuration

type Configuration struct {
	AdminPort    string
	ProxyPort    string
	Mode         string
	Destination  string
	Middleware   middleware.Middleware
	DatabasePath string
	Webserver    bool

	TLSVerification bool

	UpstreamProxy string

	Verbose bool

	DisableCache bool

	SecretKey          []byte
	JWTExpirationDelta int
	AuthEnabled        bool

	ProxyAuthorizationHeader string

	HttpsOnly 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() 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

func (*Configuration) SetUpstreamProxy added in v0.10.1

func (c *Configuration) SetUpstreamProxy(upstreamProxy string)

type Entry

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 Fields added in v0.11.0

type Fields map[string]interface{}

type Hook

type Hook interface {
	ActionTypes() []ActionType
	Fire(*Entry) error
}

Hook - an interface to add dynamic hooks to extend functionality

type Hoverfly

type Hoverfly struct {
	CacheMatcher   matching.CacheMatcher
	Authentication backends.Authentication

	HTTP    *http.Client
	Cfg     *Configuration
	Counter *metrics.CounterByMode

	Proxy *goproxy.ProxyHttpServer
	SL    *StoppableListener

	Simulation    *models.Simulation
	StoreLogsHook *StoreLogsHook
	Journal       *journal.Journal
	// 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 cache.Cache, authentication backends.Authentication) *Hoverfly

GetNewHoverfly returns a configured ProxyHttpServer and DBClient

func NewHoverfly added in v0.11.2

func NewHoverfly() *Hoverfly

func NewHoverflyWithConfiguration added in v0.11.0

func NewHoverflyWithConfiguration(cfg *Configuration) *Hoverfly

func (Hoverfly) ApplyMiddleware added in v0.10.0

func (this Hoverfly) ApplyMiddleware(pair models.RequestResponsePair) (models.RequestResponsePair, error)

func (*Hoverfly) ClearState added in v0.14.0

func (this *Hoverfly) ClearState()

func (*Hoverfly) DeleteResponseDelays added in v0.9.0

func (hf *Hoverfly) DeleteResponseDelays()

func (*Hoverfly) DeleteSimulation added in v0.9.0

func (this *Hoverfly) DeleteSimulation()

func (*Hoverfly) DoRequest added in v0.10.0

func (hf *Hoverfly) DoRequest(request *http.Request) (*http.Response, error)

DoRequest - performs request and returns response that should be returned to client and error

func (Hoverfly) FlushCache added in v0.11.0

func (hf Hoverfly) FlushCache() error

func (Hoverfly) GetCache added in v0.11.0

func (this Hoverfly) GetCache() (v2.CacheView, error)

func (Hoverfly) GetDestination added in v0.9.0

func (this Hoverfly) GetDestination() string

func (Hoverfly) GetMiddleware added in v0.9.0

func (hf Hoverfly) GetMiddleware() (string, string, string)

func (Hoverfly) GetMode added in v0.9.0

func (this Hoverfly) GetMode() v2.ModeView

func (Hoverfly) GetRequestCacheCount added in v0.9.0

func (hf Hoverfly) GetRequestCacheCount() (int, error)

func (*Hoverfly) GetResponse added in v0.10.0

func (hf *Hoverfly) GetResponse(requestDetails models.RequestDetails) (*models.ResponseDetails, *matching.MatchingError)

GetResponse returns stored response from cache

func (Hoverfly) GetSimulation added in v0.9.0

func (hf Hoverfly) GetSimulation() (v2.SimulationViewV4, error)

func (*Hoverfly) GetState added in v0.14.0

func (this *Hoverfly) GetState() map[string]string

func (Hoverfly) GetStats added in v0.9.0

func (hf Hoverfly) GetStats() metrics.Stats

func (Hoverfly) GetUpstreamProxy added in v0.10.1

func (this Hoverfly) GetUpstreamProxy() string

func (Hoverfly) GetVersion added in v0.10.1

func (this Hoverfly) GetVersion() string

func (*Hoverfly) Import

func (hf *Hoverfly) Import(uri string) error

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

func (hf *Hoverfly) ImportFromDisk(path string) error

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

func (hf *Hoverfly) ImportFromURL(url string) error

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) ImportRequestResponsePairViews added in v0.8.1

func (hf *Hoverfly) ImportRequestResponsePairViews(pairViews []v2.RequestMatcherResponsePairViewV4) error

ImportRequestResponsePairViews - a function to save given pairs into the database.

func (Hoverfly) IsMiddlewareSet added in v0.10.0

func (this Hoverfly) IsMiddlewareSet() bool

func (*Hoverfly) PatchState added in v0.14.0

func (this *Hoverfly) PatchState(toPatch map[string]string)

func (*Hoverfly) PutSimulation added in v0.9.0

func (this *Hoverfly) PutSimulation(simulationView v2.SimulationViewV4) error

func (*Hoverfly) RemoveState added in v0.14.0

func (hf *Hoverfly) RemoveState(toRemove []string)

func (*Hoverfly) Save added in v0.10.0

func (hf *Hoverfly) Save(request *models.RequestDetails, response *models.ResponseDetails, headersWhitelist []string) error

save gets request fingerprint, extracts request body, status code and headers, then saves it to cache

func (*Hoverfly) SetDestination added in v0.9.0

func (hf *Hoverfly) SetDestination(destination string) (err error)

UpdateDestination - updates proxy with new destination regexp

func (*Hoverfly) SetMiddleware added in v0.8.0

func (hf *Hoverfly) SetMiddleware(binary, script, remote string) error

func (*Hoverfly) SetMode added in v0.9.0

func (this *Hoverfly) SetMode(mode string) error

func (*Hoverfly) SetModeWithArguments added in v0.11.0

func (this *Hoverfly) SetModeWithArguments(modeView v2.ModeView) error

func (*Hoverfly) SetResponseDelays added in v0.9.0

func (hf *Hoverfly) SetResponseDelays(payloadView v1.ResponseDelayPayloadView) error

func (*Hoverfly) SetState added in v0.14.0

func (this *Hoverfly) SetState(state map[string]string)

func (*Hoverfly) StartProxy

func (hf *Hoverfly) StartProxy() error

StartProxy - starts proxy with current configuration, this method is non blocking.

func (*Hoverfly) StopProxy

func (hf *Hoverfly) StopProxy()

StopProxy - stops proxy

func (*Hoverfly) TransitionState added in v0.14.0

func (hf *Hoverfly) TransitionState(transition map[string]string)

type StoppableListener

type StoppableListener struct {
	*net.TCPListener
	// contains filtered or unexported fields
}

StoppableListener - wrapper for tcp listener that can stop

func NewStoppableListener

func NewStoppableListener(l net.Listener) (*StoppableListener, error)

NewStoppableListener returns new StoppableListener listener

func (*StoppableListener) Accept

func (sl *StoppableListener) Accept() (net.Conn, error)

Accept - TCPListener waits for the next call, implements default interface method

func (*StoppableListener) Stop

func (sl *StoppableListener) Stop()

Stop - stops listener

type StoreLogsHook added in v0.11.0

type StoreLogsHook struct {
	Entries   []*logrus.Entry
	LogsLimit int
}

func NewStoreLogsHook added in v0.11.0

func NewStoreLogsHook() *StoreLogsHook

func (*StoreLogsHook) Fire added in v0.11.0

func (hook *StoreLogsHook) Fire(entry *logrus.Entry) error

func (StoreLogsHook) GetLogs added in v0.11.4

func (hook StoreLogsHook) GetLogs(limit int, from *time.Time) ([]*logrus.Entry, error)

func (StoreLogsHook) GetLogsCount added in v0.11.0

func (hook StoreLogsHook) GetLogsCount() int

func (StoreLogsHook) Levels added in v0.11.0

func (hook StoreLogsHook) Levels() []logrus.Level

Jump to

Keyboard shortcuts

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