Created
February 14, 2014 18:49
-
-
Save bensie/9006703 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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