Skip to content

Instantly share code, notes, and snippets.

@bensie
Created February 14, 2014 18:49
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bensie/9006703 to your computer and use it in GitHub Desktop.
Save bensie/9006703 to your computer and use it in GitHub Desktop.
require "json"
module ApiMacros
def json(content)
JSON.pretty_generate content
end
def decode_json(content)
JSON.parse content, symbolize_names: true
end
def authorize_basic(user)
browser.authorize(user.email, "foobar")
end
alias_method :authorize, :authorize_basic
def authorize_token(token)
browser.header("X-Auth-Token", token)
end
def should_be_json
browser.last_response.headers["Content-Type"].should == "application/json;charset=utf-8"
end
def should_200(payload = nil)
browser.last_response.body.should == json(payload)
browser.last_response.status.should == 200
end
def should_201
browser.last_response.status.should == 201
end
def should_204
browser.last_response.status.should == 204
browser.last_response.body.should == ""
browser.last_response.headers["Content-Type"].should == nil
end
def should_400(message = nil)
browser.last_response.body.should == json({message: message || "Bad request"})
browser.last_response.status.should == 400
end
def should_401(payload = {message: "Authorization required"})
browser.last_response.body.should == json(payload)
browser.last_response.status.should == 401
end
def should_403(message = nil)
browser.last_response.body.should == json({message: message || "Forbidden"})
browser.last_response.status.should == 403
end
def should_404
browser.last_response.body.should == json({message: "Not found"})
browser.last_response.status.should == 404
end
def should_422
browser.last_response.status.should == 422
end
def encode_credentials(username, password)
"Basic " + Base64.encode64("#{username}:#{password}")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment