Documentation
¶
Overview ¶
Package mockingjay allows you to create a HTTP server to return canned responses for certain requests. These operations are configured via YAML. The aim of this is to let you easily create fake servers for testing purposes.
Index ¶
Examples ¶
Constants ¶
const DefaultHTTPTimeoutSeconds = 5
DefaultHTTPTimeoutSeconds is the default http timeout for compatability checks
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CompatibilityChecker ¶
type CompatibilityChecker struct {
// contains filtered or unexported fields
}
CompatibilityChecker is responsible for checking endpoints are compatible
func NewCompatabilityChecker ¶
func NewCompatabilityChecker(logger *log.Logger, httpTimeout time.Duration) *CompatibilityChecker
NewCompatabilityChecker creates a new CompatabilityChecker. The httpTimeout refers to the http timeout when making requests to the real server
func (*CompatibilityChecker) CheckCompatibility ¶
func (c *CompatibilityChecker) CheckCompatibility(endpoints []FakeEndpoint, realURL string) bool
CheckCompatibility checks the endpoints against a "real" URL
type FakeEndpoint ¶
type FakeEndpoint struct { Name string //A description of what this endpoint is. CDCDisabled bool // When set to true it will not be included in the consumer driven contract tests against real server Request Request Response response }
FakeEndpoint represents the information required to listen to a particular request and respond to it
func NewFakeEndpoints ¶
func NewFakeEndpoints(data []byte) (endpoints []FakeEndpoint, err error)
NewFakeEndpoints returns an array of Endpoints from a YAML byte array. Returns an error if YAML cannot be parsed or there are validation concerns
func NewFakeEndpointsFromJSON ¶
func NewFakeEndpointsFromJSON(data []byte) ([]FakeEndpoint, error)
NewFakeEndpointsFromJSON returns an array of Endpoints from a JSON byte array. Returns an error if JSON cannot be parsed or there are validation concerns
func (*FakeEndpoint) String ¶
func (f *FakeEndpoint) String() string
type RegexField ¶
RegexField allows you to work with regex fields in YAML
func (*RegexField) MarshalJSON ¶
func (r *RegexField) MarshalJSON() ([]byte, error)
MarshalJSON returns a string for the regex
func (*RegexField) MarshalYAML ¶
func (r *RegexField) MarshalYAML() (interface{}, error)
MarshalYAML returns the string of the regex
func (*RegexField) UnmarshalJSON ¶
func (r *RegexField) UnmarshalJSON(data []byte) error
UnmarshalJSON will unhmarshal a JSON field into regexp
func (*RegexField) UnmarshalYAML ¶
func (r *RegexField) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML will unhmarshal a YAML field into regexp
type Request ¶
type Request struct { URI string `yaml:"uri"` RegexURI *RegexField `yaml:"regexuri,omitempty" json:"RegexURI,omitempty"` Method string `yaml:"method"` Headers map[string]string `yaml:"headers,omitempty"` Body string `yaml:"body,omitempty"` Form map[string]string `yaml:"form,omitempty"` }
Request is a simplified version of a http.Request
func NewRequest ¶
NewRequest creates a mockingjay request from a http request
func (Request) AsHTTPRequest ¶
AsHTTPRequest tries to create a http.Request from a given baseURL
type Server ¶
type Server struct { Endpoints []FakeEndpoint // contains filtered or unexported fields }
Server allows you to configure a HTTP server for a slice of fake endpoints
func NewServer ¶
func NewServer(endpoints []FakeEndpoint, debugMode bool, newConfigStateWriter io.Writer) *Server
NewServer creates a new Server instance. debugMode will log additional info at runtime and newConfigStateWriter will write out the new state of the config if it gets changed at runtime
Example ¶
ExampleNewServer is an example as to how to make a fake server. The mockingjay server implements what is needed to mount it as a standard web server.
// Create a fake server from YAML testYAML := ` --- - name: Test endpoint request: uri: /hello method: GET headers: content-type: application/json body: foobar response: code: 200 body: hello, world headers: content-type: text/plain - name: Test endpoint 2 request: uri: /world method: DELETE response: code: 200 body: hello, world - name: Failing endpoint request: uri: /card method: POST body: Greetings response: code: 500 body: Oh bugger - name: Endpoint not used for CDC cdcdisabled: true request: uri: /burp method: POST body: Belch response: code: 500 body: Oh no ` endpoints, _ := NewFakeEndpoints([]byte(testYAML)) server := NewServer(endpoints, false, ioutil.Discard) // Mount it just like any other server http.Handle("/", server) http.ListenAndServe(":9090", nil)
Output: