2015-07-22 16:02:18 +08:00

114 lines
3.1 KiB
Ruby

require 'spec_helper'
describe Petstore::Request do
before(:each) do
@api_client = Petstore::ApiClient.new do |config|
inject_format = true
config.api_key['api_key'] = 'special-key'
config.host = 'petstore.swagger.io'
config.base_path = '/v2'
end
@default_http_method = :get
@default_path = "pet.{format}/fancy"
@default_params = {
:params => {:foo => "1", :bar => "2"}
}
@request = Petstore::Request.new(@api_client, @default_http_method, @default_path, @default_params)
end
describe "initialization" do
it "sets default response format to json" do
@request.format.should == 'json'
end
it "sets default headers correctly" do
@request.headers.should == {'Content-Type' => 'application/json', 'User-Agent' => 'ruby-swagger-1.0.0'}
end
it "allows params to be nil" do
@request = Petstore::Request.new(@api_client, @default_http_method, @default_path, :params => nil)
@request.params.should == {}
end
end
describe "attr_accessors" do
it "has working attributes" do
@request.format.to_s.should == 'json'
end
it "allows attributes to be overwritten" do
@request.http_method.should == :get
@request.http_method = "post"
@request.http_method.should == 'post'
end
end
describe "url" do
it "constructs a full url" do
@request.url.should == "http://petstore.swagger.io/v2/pet.json/fancy"
end
end
describe "path" do
it "accounts for a total absence of format in the path string" do
@request = Petstore::Request.new(@api_client, :get, "/word.{format}/cat/entries", @default_params.merge({
:format => "xml",
:params => {
}
}))
@request.url.should == "http://petstore.swagger.io/v2/word.xml/cat/entries"
end
it "does string substitution (format) on path params" do
@request = Petstore::Request.new(@api_client, :get, "/word.{format}/cat/entries", @default_params.merge({
:format => "xml",
:params => {
}
}))
@request.url.should == "http://petstore.swagger.io/v2/word.xml/cat/entries"
end
it "URI encodes the path" do
@request = Petstore::Request.new(@api_client, :get, "word.{format}/bill gates/definitions", @default_params.merge({
:params => {
:word => "bill gates"
}
}))
@request.url.should =~ /word.json\/bill\%20gates\/definitions/
end
end
describe "#update_params_for_auth!" do
it "sets header api-key parameter with prefix" do
@api_client.configure do |config|
inject_format = true
config.api_key_prefix['api_key'] = 'PREFIX'
end
@request.auth_names = ['api_key', 'unknown']
@request.update_params_for_auth!
@request.headers['api_key'].should == 'PREFIX special-key'
end
it "sets header api-key parameter without prefix" do
@api_client.configure do |config|
inject_format = true
config.api_key_prefix['api_key'] = nil
end
@request.auth_names = ['api_key', 'unknown']
@request.update_params_for_auth!
@request.headers['api_key'].should == 'special-key'
end
end
end