Skip to main content
  1. All Posts/

cigar

Tools PHP

Cigar


A smoke testing tool inspired by symm/vape
Similar tools include:

  • Blackfire Player

Installation

Install via composer:
composer require brunty/cigar --dev
Pull via docker:
docker pull brunty/cigar

To use

Create a .cigar.json file that contains an array of json objects specifying the url, status, (optional) content, and (optional) content-type to check.

[
  {
    "url": "http://httpbin.org/status/418",
    "status": 418,
    "content": "teapot"
  },
  {
    "url": "http://httpbin.org/status/200",
    "status": 200,
    "content-type": "text/html"
  },
  {
    "url": "http://httpbin.org/status/304",
    "status": 304
  },
  {
    "url": "http://httpbin.org/status/500",
    "status": 500
  }
]

When installed via composer:
Run vendor/bin/cigar to have it check each of the URLs return the status code expected.
When pulled via docker:
Run docker run -v $(pwd):/app --rm brunty/cigar to have it check each of the URLs return the status code expected.

> vendor/bin/cigar                                           
✓ http://httpbin.org/status/418 [418:418] teapot
✓ http://httpbin.org/status/200 [200:200] [text/html:text/html] 
✓ http://httpbin.org/status/304 [304:304] 
✓ http://httpbin.org/status/500 [500:500] 

The format of the lines in the output is:

pass/fail url [expected_code:actual_code] [optional_expected_content-type:optional_actual_content-type] optional_text

If all tests pass, the return code $? will be `` – if any of them don’t return the expected status code, the return code will be 1

Quiet test mode

If you wish to suppress the output of the test run, pass the --quiet option to the command: vendor/bin/cigar --quiet

Alternative configuration files

If you wish to use an alternative configuration file, use the vendor/bin/cigar -c file.json or vendor/bin/cigar --config=file.json options when running the command.

Passing a base URL to check against

If you wish to check a file of URLs relative to the root of a site against a base URL, you can do so with by using
vendor/bin/cigar -u http://httpbin.org or vendor/bin/cigar --url=http://httpbin.org
Your configuration file can then contain URLs including:

  • Full absolute URLs as before (cigar won’t use the base URL when checking an absolute URL)
[
  {
    "url": "http://httpbin.org/status/418",
    "status": 418,
    "content": "teapot"
  }
]
  • URLs relative to the base url that you’ve specified, either with or without a leading slash.
[
 {
   "url": "/status/418",
   "status": 418,
   "content": "teapot"
 },
 
 {
   "url": "status/418",
   "status": 418,
   "content": "teapot"
 }
]

Disabling SSL cert verification

If you wish to run the tool without checking SSL certs, use the -i or --insecure option to the command:
vendor/bin/cigar -i or vendor/bin/cigar --insecure
Only use this if absolutely necessary.

Passing Authorization header

If you wish to add the Authorization header, use the -a or --auth option to the command:
vendor/bin/cigar -a "Basic dXNyOnBzd2Q=" or vendor/bin/cigar --auth="Basic dXNyOnBzd2Q="

Passing custom header

If you wish to add any custom header(s), use the -h or --header option to the command:
vendor/bin/cigar -h "Cache-control: no-cache" or vendor/bin/cigar --header="Cache-control: no-cache"

Command help & command version

If you want to see all the available options for Cigar, use the command: vendor/bin/cigar --help
If you wish to see what version of Cigar you’re using, use the command: vendor/bin/cigar --version

Contributing

This started as a small personal project.
Although this project is small, openness and inclusivity are taken seriously. To that end a code of conduct (listed in the contributing guide) has been adopted.
Contributor Guide