Skip to content
This repository

RSpec DSL for describing HTTP API interactions

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 features
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 http_spec.gemspec
README.md

Build Status Dependency Status Code Climate Coverage Status

HTTPSpec

RSpec DSLs for describing API behaviors

Features

  • Supports Rack, Webmachine, and live applications (via Faraday) using pluggable client back-ends.
  • Generate documentation from requests with Raddocs.
  • Validate requests and responses against a schema with Fdoc.
  • Record and play back responses to speed-up tests against live applications. (like VCR)

Example Usage

require "http_spec/dsl/resource"
require "http_spec/clients/rack"

app = lambda { |env| [200, { "Foo" => "Bar" }, ["Hello, World!"]] }
HTTPSpec.client = HTTPSpec::Clients::Rack.new(app)

describe "My Awesome App" do
  include HTTPSpec::DSL::Resource

  get "/foobar" do
    it "should be successful" do
      do_request
      status.should eq(200)
    end

    it "should tell us about foo" do
      do_request
      response_headers["Foo"].should eq("Bar")
    end

    it "should greet us" do
      do_request
      response_body.should eq("Hello, World!")
    end
  end
end

Want something more light-weight?

require "http_spec/dsl/methods"
require "http_spec/clients/rack"

app = lambda { |env| [200, { "Foo" => "Bar" }, ["Hello, World!"]] }
HTTPSpec.client = HTTPSpec::Clients::Rack.new(app)

describe "My Awesome App" do
  include HTTPSpec::DSL::Methods

  it "should be successful" do
    get("/foo").status.should eq(200)
  end

  it "should tell us about foo" do
    get("/bar").headers["Foo"].should eq("Bar")
  end

  it "should greet us" do
    get("/baz").body.should eq("Hello, World!")
  end
end

Changes

0.3.0

  • Expose last_response when using the methods dsl
  • Allow rack client to control the cgi environment
  • [Bug] Fix issue where group-level headers where being mutated by examples
Something went wrong with that request. Please try again.