Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
inc-validator-client-ruby/spec/api_client_spec.rb
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
226 lines (184 sloc)
8.28 KB
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
=begin | |
#Metadata Validation API | |
#API for the metadata validation service. | |
OpenAPI spec version: 1.0.0 | |
Contact: ian@iay.org.uk | |
Generated by: https://github.com/swagger-api/swagger-codegen.git | |
Swagger Codegen version: 2.3.1 | |
=end | |
require 'spec_helper' | |
describe Validator::ApiClient do | |
context 'initialization' do | |
context 'URL stuff' do | |
context 'host' do | |
it 'removes http from host' do | |
Validator.configure { |c| c.host = 'http://example.com' } | |
expect(Validator::Configuration.default.host).to eq('example.com') | |
end | |
it 'removes https from host' do | |
Validator.configure { |c| c.host = 'https://wookiee.com' } | |
expect(Validator::ApiClient.default.config.host).to eq('wookiee.com') | |
end | |
it 'removes trailing path from host' do | |
Validator.configure { |c| c.host = 'hobo.com/v4' } | |
expect(Validator::Configuration.default.host).to eq('hobo.com') | |
end | |
end | |
context 'base_path' do | |
it "prepends a slash to base_path" do | |
Validator.configure { |c| c.base_path = 'v4/dog' } | |
expect(Validator::Configuration.default.base_path).to eq('/v4/dog') | |
end | |
it "doesn't prepend a slash if one is already there" do | |
Validator.configure { |c| c.base_path = '/v4/dog' } | |
expect(Validator::Configuration.default.base_path).to eq('/v4/dog') | |
end | |
it "ends up as a blank string if nil" do | |
Validator.configure { |c| c.base_path = nil } | |
expect(Validator::Configuration.default.base_path).to eq('') | |
end | |
end | |
end | |
end | |
describe "params_encoding in #build_request" do | |
let(:config) { Validator::Configuration.new } | |
let(:api_client) { Validator::ApiClient.new(config) } | |
it "defaults to nil" do | |
expect(Validator::Configuration.default.params_encoding).to eq(nil) | |
expect(config.params_encoding).to eq(nil) | |
request = api_client.build_request(:get, '/test') | |
expect(request.options[:params_encoding]).to eq(nil) | |
end | |
it "can be customized" do | |
config.params_encoding = :multi | |
request = api_client.build_request(:get, '/test') | |
expect(request.options[:params_encoding]).to eq(:multi) | |
end | |
end | |
describe "timeout in #build_request" do | |
let(:config) { Validator::Configuration.new } | |
let(:api_client) { Validator::ApiClient.new(config) } | |
it "defaults to 0" do | |
expect(Validator::Configuration.default.timeout).to eq(0) | |
expect(config.timeout).to eq(0) | |
request = api_client.build_request(:get, '/test') | |
expect(request.options[:timeout]).to eq(0) | |
end | |
it "can be customized" do | |
config.timeout = 100 | |
request = api_client.build_request(:get, '/test') | |
expect(request.options[:timeout]).to eq(100) | |
end | |
end | |
describe "#deserialize" do | |
it "handles Array<Integer>" do | |
api_client = Validator::ApiClient.new | |
headers = {'Content-Type' => 'application/json'} | |
response = double('response', headers: headers, body: '[12, 34]') | |
data = api_client.deserialize(response, 'Array<Integer>') | |
expect(data).to be_instance_of(Array) | |
expect(data).to eq([12, 34]) | |
end | |
it "handles Array<Array<Integer>>" do | |
api_client = Validator::ApiClient.new | |
headers = {'Content-Type' => 'application/json'} | |
response = double('response', headers: headers, body: '[[12, 34], [56]]') | |
data = api_client.deserialize(response, 'Array<Array<Integer>>') | |
expect(data).to be_instance_of(Array) | |
expect(data).to eq([[12, 34], [56]]) | |
end | |
it "handles Hash<String, String>" do | |
api_client = Validator::ApiClient.new | |
headers = {'Content-Type' => 'application/json'} | |
response = double('response', headers: headers, body: '{"message": "Hello"}') | |
data = api_client.deserialize(response, 'Hash<String, String>') | |
expect(data).to be_instance_of(Hash) | |
expect(data).to eq({:message => 'Hello'}) | |
end | |
end | |
describe "#object_to_hash" do | |
it "ignores nils and includes empty arrays" do | |
# uncomment below to test object_to_hash for model | |
#api_client = Validator::ApiClient.new | |
#_model = Validator::ModelName.new | |
# update the model attribute below | |
#_model.id = 1 | |
# update the expected value (hash) below | |
#expected = {id: 1, name: '', tags: []} | |
#expect(api_client.object_to_hash(_model)).to eq(expected) | |
end | |
end | |
describe "#build_collection_param" do | |
let(:param) { ['aa', 'bb', 'cc'] } | |
let(:api_client) { Validator::ApiClient.new } | |
it "works for csv" do | |
expect(api_client.build_collection_param(param, :csv)).to eq('aa,bb,cc') | |
end | |
it "works for ssv" do | |
expect(api_client.build_collection_param(param, :ssv)).to eq('aa bb cc') | |
end | |
it "works for tsv" do | |
expect(api_client.build_collection_param(param, :tsv)).to eq("aa\tbb\tcc") | |
end | |
it "works for pipes" do | |
expect(api_client.build_collection_param(param, :pipes)).to eq('aa|bb|cc') | |
end | |
it "works for multi" do | |
expect(api_client.build_collection_param(param, :multi)).to eq(['aa', 'bb', 'cc']) | |
end | |
it "fails for invalid collection format" do | |
expect(proc { api_client.build_collection_param(param, :INVALID) }).to raise_error(RuntimeError, 'unknown collection format: :INVALID') | |
end | |
end | |
describe "#json_mime?" do | |
let(:api_client) { Validator::ApiClient.new } | |
it "works" do | |
expect(api_client.json_mime?(nil)).to eq false | |
expect(api_client.json_mime?('')).to eq false | |
expect(api_client.json_mime?('application/json')).to eq true | |
expect(api_client.json_mime?('application/json; charset=UTF8')).to eq true | |
expect(api_client.json_mime?('APPLICATION/JSON')).to eq true | |
expect(api_client.json_mime?('application/xml')).to eq false | |
expect(api_client.json_mime?('text/plain')).to eq false | |
expect(api_client.json_mime?('application/jsonp')).to eq false | |
end | |
end | |
describe "#select_header_accept" do | |
let(:api_client) { Validator::ApiClient.new } | |
it "works" do | |
expect(api_client.select_header_accept(nil)).to be_nil | |
expect(api_client.select_header_accept([])).to be_nil | |
expect(api_client.select_header_accept(['application/json'])).to eq('application/json') | |
expect(api_client.select_header_accept(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8') | |
expect(api_client.select_header_accept(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON') | |
expect(api_client.select_header_accept(['application/xml'])).to eq('application/xml') | |
expect(api_client.select_header_accept(['text/html', 'application/xml'])).to eq('text/html,application/xml') | |
end | |
end | |
describe "#select_header_content_type" do | |
let(:api_client) { Validator::ApiClient.new } | |
it "works" do | |
expect(api_client.select_header_content_type(nil)).to eq('application/json') | |
expect(api_client.select_header_content_type([])).to eq('application/json') | |
expect(api_client.select_header_content_type(['application/json'])).to eq('application/json') | |
expect(api_client.select_header_content_type(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8') | |
expect(api_client.select_header_content_type(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON') | |
expect(api_client.select_header_content_type(['application/xml'])).to eq('application/xml') | |
expect(api_client.select_header_content_type(['text/plain', 'application/xml'])).to eq('text/plain') | |
end | |
end | |
describe "#sanitize_filename" do | |
let(:api_client) { Validator::ApiClient.new } | |
it "works" do | |
expect(api_client.sanitize_filename('sun')).to eq('sun') | |
expect(api_client.sanitize_filename('sun.gif')).to eq('sun.gif') | |
expect(api_client.sanitize_filename('../sun.gif')).to eq('sun.gif') | |
expect(api_client.sanitize_filename('/var/tmp/sun.gif')).to eq('sun.gif') | |
expect(api_client.sanitize_filename('./sun.gif')).to eq('sun.gif') | |
expect(api_client.sanitize_filename('..\sun.gif')).to eq('sun.gif') | |
expect(api_client.sanitize_filename('\var\tmp\sun.gif')).to eq('sun.gif') | |
expect(api_client.sanitize_filename('c:\var\tmp\sun.gif')).to eq('sun.gif') | |
expect(api_client.sanitize_filename('.\sun.gif')).to eq('sun.gif') | |
end | |
end | |
end |