hoverfly

package
v1.8.0 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2024 License: Apache-2.0 Imports: 52 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// TODO Should use naming convention for environment variables
	HoverflyAuthEnabledEV     = "HoverflyAuthEnabled"
	HoverflySecretEV          = "HoverflySecret"
	HoverflyTokenExpirationEV = "HoverflyTokenExpiration"

	HoverflyAdminPortEV = "AdminPort"
	HoverflyProxyPortEV = "ProxyPort"

	HoverflyDBEV         = "HoverflyDB"
	HoverflyMiddlewareEV = "HoverflyMiddleware"

	HoverflyTLSVerification = "HoverflyTlsVerification"

	HoverflyAdminUsernameEV = "HoverflyAdmin"
	HoverflyAdminPasswordEV = "HoverflyAdminPass"

	HoverflyImportRecordsEV = "HoverflyImport"

	HoverflyUpstreamProxyPortEV = "UpstreamProxy"
	HoverflySkipImportCheckEV   = "SKIP_IMPORT_CHECK"
)

Environment variables

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 DefaultListenOnHost = "127.0.0.1"
View Source
const DefaultPort = "8500"

DefaultPort - default proxy port

Variables

View Source
var ProxyAuthorizationHeader string

Functions

func GetDefaultHoverflyHTTPClient added in v0.9.0

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

func GetHttpClient added in v0.17.4

func GetHttpClient(hf *Hoverfly, host string) (*http.Client, error)

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

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

	TLSVerification bool

	UpstreamProxy string
	PACFile       []byte

	Verbose bool

	DisableCache bool
	CacheSize    int

	SecretKey          []byte
	JWTExpirationDelta int
	AuthEnabled        bool

	ProxyAuthorizationHeader string

	PlainHttpTunneling bool
	CORS               cors.Configs

	NoImportCheck bool

	ClientAuthenticationDestination string
	ClientAuthenticationClientCert  string
	ClientAuthenticationClientKey   string
	ClientAuthenticationCACert      string

	ResponsesBodyFilesPath           string
	ResponsesBodyFilesAllowedOrigins []string

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

type Fields map[string]interface{}

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

	PostServeActionDetails *action.PostServeActionDetails
	// 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.FastCache, 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) AddDiff added in v0.16.0

func (hf *Hoverfly) AddDiff(requestView v2.SimpleRequestDefinitionView, diffReport v2.DiffReport)

func (*Hoverfly) AddJournalIndex added in v1.8.0

func (hf *Hoverfly) AddJournalIndex(indexKey string) error

func (*Hoverfly) ApplyMiddleware added in v0.10.0

func (hf *Hoverfly) ApplyMiddleware(pair models.RequestResponsePair) (models.RequestResponsePair, error)

func (*Hoverfly) ClearDiff added in v0.16.0

func (hf *Hoverfly) ClearDiff()

func (*Hoverfly) ClearState added in v0.14.0

func (hf *Hoverfly) ClearState()

func (*Hoverfly) DeleteDataSource added in v1.7.0

func (hf *Hoverfly) DeleteDataSource(dataSourceName string)

func (*Hoverfly) DeleteJournalIndex added in v1.8.0

func (hf *Hoverfly) DeleteJournalIndex(indexKey string)

func (*Hoverfly) DeletePACFile added in v0.17.4

func (hf *Hoverfly) DeletePACFile()

func (*Hoverfly) DeletePostServeAction added in v1.6.0

func (hf *Hoverfly) DeletePostServeAction(actionName string) error

func (*Hoverfly) DeleteResponseDelays added in v0.9.0

func (hf *Hoverfly) DeleteResponseDelays()

func (*Hoverfly) DeleteResponseDelaysLogNormal added in v1.0.0

func (hf *Hoverfly) DeleteResponseDelaysLogNormal()

func (*Hoverfly) DeleteSimulation added in v0.9.0

func (hf *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) GetAllDataSources added in v1.7.0

func (hf *Hoverfly) GetAllDataSources() v2.TemplateDataSourceView

func (*Hoverfly) GetAllIndexes added in v1.8.0

func (hf *Hoverfly) GetAllIndexes() []v2.JournalIndexView

func (*Hoverfly) GetAllPostServeActions added in v1.6.0

func (hf *Hoverfly) GetAllPostServeActions() v2.PostServeActionDetailsView

func (*Hoverfly) GetCORS added in v1.1.0

func (hf *Hoverfly) GetCORS() v2.CORSView

func (*Hoverfly) GetCache added in v0.11.0

func (hf *Hoverfly) GetCache() (v2.CacheView, error)

func (*Hoverfly) GetDestination added in v0.9.0

func (hf *Hoverfly) GetDestination() string

func (*Hoverfly) GetDiff added in v0.16.0

func (hf *Hoverfly) GetDiff() map[v2.SimpleRequestDefinitionView][]v2.DiffReport

func (*Hoverfly) GetFilteredDiff added in v1.5.0

func (hf *Hoverfly) GetFilteredDiff(diffFilterView v2.DiffFilterView) map[v2.SimpleRequestDefinitionView][]v2.DiffReport

func (*Hoverfly) GetFilteredSimulation added in v0.15.1

func (hf *Hoverfly) GetFilteredSimulation(urlPattern string) (v2.SimulationViewV5, error)

func (*Hoverfly) GetMiddleware added in v0.9.0

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

func (*Hoverfly) GetMode added in v0.9.0

func (hf *Hoverfly) GetMode() v2.ModeView

func (*Hoverfly) GetPACFile added in v0.17.4

func (hf *Hoverfly) GetPACFile() []byte

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, *errors.HoverflyError)

GetResponse returns stored response from cache

func (*Hoverfly) GetSimulation added in v0.9.0

func (hf *Hoverfly) GetSimulation() (v2.SimulationViewV5, error)

func (*Hoverfly) GetState added in v0.14.0

func (hf *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 (hf *Hoverfly) GetUpstreamProxy() string

func (*Hoverfly) GetVersion added in v0.10.1

func (hf *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) IsMiddlewareSet added in v0.10.0

func (hf *Hoverfly) IsMiddlewareSet() bool

func (*Hoverfly) IsWebServer added in v0.15.0

func (hf *Hoverfly) IsWebServer() bool

func (*Hoverfly) PatchState added in v0.14.0

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

func (*Hoverfly) PutSimulation added in v0.9.0

func (hf *Hoverfly) PutSimulation(simulationView v2.SimulationViewV5) v2.SimulationImportResult

func (*Hoverfly) ReplaceSimulation added in v1.3.0

func (hf *Hoverfly) ReplaceSimulation(simulationView v2.SimulationViewV5) v2.SimulationImportResult

func (*Hoverfly) Save added in v0.10.0

func (hf *Hoverfly) Save(request *models.RequestDetails, response *models.ResponseDetails, modeArgs *modes.ModeArguments) error

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

func (*Hoverfly) SetCsvDataSource added in v1.7.0

func (hf *Hoverfly) SetCsvDataSource(dataSourceName, dataSourceContent string) error

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) SetLiterals added in v1.5.0

func (hf *Hoverfly) SetLiterals(literals []v2.GlobalLiteralViewV5)

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 (hf *Hoverfly) SetMode(mode string) error

func (*Hoverfly) SetModeWithArguments added in v0.11.0

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

func (*Hoverfly) SetPACFile added in v0.17.4

func (hf *Hoverfly) SetPACFile(pacFile []byte)

func (*Hoverfly) SetPostServeAction added in v1.6.0

func (hf *Hoverfly) SetPostServeAction(actionName string, binary string, scriptContent string, delayInMs int) error

func (*Hoverfly) SetResponseDelays added in v0.9.0

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

func (*Hoverfly) SetResponseDelaysLogNormal added in v1.0.0

func (hf *Hoverfly) SetResponseDelaysLogNormal(payloadView v1.ResponseDelayLogNormalPayloadView) error

func (*Hoverfly) SetState added in v0.14.0

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

func (*Hoverfly) SetVariables added in v1.5.0

func (hf *Hoverfly) SetVariables(variables []v2.GlobalVariableViewV5) error

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

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