Skip to content
This repository has been archived by the owner before Nov 9, 2022. It is now read-only.

essentialkaos/mockka

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
cli
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

InstallationFirst stepsRule examplesViewerUsageBuild StatusLicense

Mockka is a utility for mocking and testing HTTP API's.

Installation

To build the Mockka from scratch, make sure you have a working Go 1.5+ workspace (instructions), then:

go get github.com/essentialkaos/mockka

If you want update Mockka to latest stable release, do:

go get -u github.com/essentialkaos/mockka

First steps

Show basic info about all mock files:

mockka -c /path/to/mockka.conf list

Run Mockka server:

mockka -c /path/to/mockka.conf run

By default Mockka try to find configuration file in next locations:

  • /etc/mockka.conf
  • ~/.mockka.conf ($HOME directory)
  • ./mockka.conf (current directory)

Rule examples

Latest version of Mockka have full Fake package support. List of all supported functions can be found here.

Example 1

# This is comment

# Description is optional field
@DESCRIPTION
Example mock file #1

# Basic auth login and password
@AUTH
user:password

@REQUEST
GET /test/login?action=login&type=1

# You can use go template language for response body
@RESPONSE
{{ if .HeaderIs "X-Suppa-Header" "Magic" }}
{
  "status": "ok",
  "result": {
    "username":"{{ .UserName "en" }}",
    "ip": "{{ .IPv4 }}",
    "first_name": "{{ .MaleFirstName "ru" }}",
    "last_name": "{{ .MaleLastName "ru" }}",
    "city": "{{ .City "ru" }}",
    "password": "{{ .SimplePassword }}",
    "action": "{{ .Query "action" }}"
  }
}
{{ else }}
{
  "status": "error",
  "result": {
    "username":"{{ .UserName "en" }}",
    "action": "{{ .Query "action" }}"
  }
}
{{ end }}

# Code is optional field, 200 by default
@CODE
200

@HEADERS
Content-Type:application/json
X-Content-Type-Options:nosniff
X-Seraph-LoginReason:OK

# Delay has float type
@DELAY
2.0

Example 2

@DESCRIPTION
Example mock file #2

@REQUEST
GET /test/login?action=login&type=1

# You can define different responses in one mock file
@RESPONSE:1
{
  "status": "ok",
  "result": {
    "username":"{{ .UserName "en" }}"
  }
}

@RESPONSE:2
{
  "status": "error",
  "result": {}
}

# You can define different http codes for each response
@CODE:1
200

@CODE:2
502

# Or define default value for all responses
@HEADERS
Content-Type:application/json
X-Content-Type-Options:nosniff
X-Seraph-LoginReason:OK

@DELAY:1
2.0

@DELAY:2
15

Example 3

@DESCRIPTION
Example mock file #3

# If you use hostnames instead ip you can define it here
@HOST
my-suppa-host.domain.com

@REQUEST
GET /test/login?action=login&type=1

# You can store each response in file
@RESPONSE:1 < example-error.json
@RESPONSE:2 < example-ok.json
@RESPONSE:3 < example-unknown-user.json

# Or return body from proxied request
@RESPONSE:4 < https://api.domain.com/someurl

# Also you can overwrite headers and status code from rule by
# values from proxied request response
@RESPONSE:5 << https://api.domain.com/someurl

@CODE
200

@HEADERS
Content-Type:application/json

Example 4 (wildcard query)

@DESCRIPTION
Example mock file #4

@REQUEST
GET /test/status?username=*&type=1

# You can define query params in response body
@RESPONSE
{
  "status": "ok",
  "result": {
    "username": "{{ .Query "username" }}",
  }
}

@HEADERS
Content-Type:application/json

Viewer

For viewing mockka logs we provide simple tool named mockka-viewer.

Some features:

  • Syntax higlighting
  • Filtering records by time range
  • Log file search

Usage:

Usage: mockka-viewer <options> log-file

Options:

  --no-color, -nc     Disable colors in output
  --from, -f date     Time range start
  --to, -t date       Time range end
  --help, -h          Show this help message
  --version, -v       Show version

Examples:

  mockka-viewer /path/to/file.log
  Read log file

  mockka-viewer file.log
  Try to find file.log in mockka logs directory

  mockka-viewer file
  Try to find file.log in mockka logs directory

  mockka-viewer -f 2016/01/02 -t 2016/01/05 /path/to/file.log
  Read file and show only records between 2016/01/02 and 2016/01/05

  mockka-viewer -f "2016/01/02 12:00" /path/to/file.log
  Read file and show only records between 2016/01/02 12:00 and current moment

Usage

Usage: mockka <command> <options>

Commands:

  run                  Run mockka server
  check mock-file      Check rule for problems
  make mock-name       Create mock file from template
  list service-name    Show list of exist rules

Options:

  --config, -c file        Path to config file
  --port, -p 1024-65535    Overwrite port
  --daemon, -d             Run server in daemon mode
  --no-color, -nc          Disable colors in output
  --help, -h               Show this help message
  --version, -v            Show version

Examples:

  mockka -c /path/to/mockka.conf run
  Run mockka server and use config /path/to/mockka.conf

  mockka make service1/test1
  Create file test1.mock for service service1.

  mockka check service1/test1
  Check rule file test1.mock for service service1

  mockka check service1/test1
  Check all rules of service service1

  mockka list
  List all rules

  mockka list service1
  List service1 rules

Build Status

Branch Status
master Build Status
develop Build Status

License

EKOL

About

Utility for mocking and testing HTTP API's

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages