forked from loafle/openapi-generator-original
[Ruby] Fix Operation Servers (#16144)
* [Ruby] Fix Operation Servers * user `server_index` instead of `index` * use nil as default * add tests * revert tests * add tests to custom file * add test file to ruby-faraday
This commit is contained in:
+9
-7
@@ -108,7 +108,7 @@ module {{moduleName}}
|
||||
@scheme = '{{scheme}}'
|
||||
@host = '{{host}}{{#port}}:{{{.}}}{{/port}}'
|
||||
@base_path = '{{contextPath}}'
|
||||
@server_index = 0
|
||||
@server_index = nil
|
||||
@server_operation_index = {}
|
||||
@server_variables = {}
|
||||
@server_operation_variables = {}
|
||||
@@ -171,10 +171,12 @@ module {{moduleName}}
|
||||
|
||||
# Returns base URL for specified operation based on server settings
|
||||
def base_url(operation = nil)
|
||||
index = server_operation_index[operation]
|
||||
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
|
||||
|
||||
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
if operation_server_settings.key?(operation) then
|
||||
index = server_operation_index.fetch(operation, server_index)
|
||||
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
else
|
||||
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets API key (with prefix if set).
|
||||
@@ -336,8 +338,8 @@ module {{moduleName}}
|
||||
servers = server_settings if servers == nil
|
||||
|
||||
# check array index out of bound
|
||||
if (index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
||||
if (index.nil? || index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
|
||||
end
|
||||
|
||||
server = servers[index]
|
||||
|
||||
@@ -152,7 +152,7 @@ module Petstore
|
||||
@scheme = 'http'
|
||||
@host = 'petstore.swagger.io'
|
||||
@base_path = '/v2'
|
||||
@server_index = 0
|
||||
@server_index = nil
|
||||
@server_operation_index = {}
|
||||
@server_variables = {}
|
||||
@server_operation_variables = {}
|
||||
@@ -200,10 +200,12 @@ module Petstore
|
||||
|
||||
# Returns base URL for specified operation based on server settings
|
||||
def base_url(operation = nil)
|
||||
index = server_operation_index[operation]
|
||||
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
|
||||
|
||||
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
if operation_server_settings.key?(operation) then
|
||||
index = server_operation_index.fetch(operation, server_index)
|
||||
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
else
|
||||
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets API key (with prefix if set).
|
||||
@@ -397,8 +399,8 @@ module Petstore
|
||||
servers = server_settings if servers == nil
|
||||
|
||||
# check array index out of bound
|
||||
if (index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
||||
if (index.nil? || index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
|
||||
end
|
||||
|
||||
server = servers[index]
|
||||
|
||||
@@ -151,7 +151,7 @@ module Petstore
|
||||
@scheme = 'http'
|
||||
@host = 'petstore.swagger.io'
|
||||
@base_path = '/v2'
|
||||
@server_index = 0
|
||||
@server_index = nil
|
||||
@server_operation_index = {}
|
||||
@server_variables = {}
|
||||
@server_operation_variables = {}
|
||||
@@ -204,10 +204,12 @@ module Petstore
|
||||
|
||||
# Returns base URL for specified operation based on server settings
|
||||
def base_url(operation = nil)
|
||||
index = server_operation_index[operation]
|
||||
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
|
||||
|
||||
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
if operation_server_settings.key?(operation) then
|
||||
index = server_operation_index.fetch(operation, server_index)
|
||||
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
else
|
||||
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets API key (with prefix if set).
|
||||
@@ -401,8 +403,8 @@ module Petstore
|
||||
servers = server_settings if servers == nil
|
||||
|
||||
# check array index out of bound
|
||||
if (index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
||||
if (index.nil? || index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
|
||||
end
|
||||
|
||||
server = servers[index]
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
=begin
|
||||
#OpenAPI Petstore
|
||||
|
||||
#This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
|
||||
|
||||
The version of the OpenAPI document: 1.0.0
|
||||
|
||||
Generated by: https://openapi-generator.tech
|
||||
OpenAPI Generator version: 7.0.0-SNAPSHOT
|
||||
|
||||
=end
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe Petstore::Configuration do
|
||||
let(:config) { Petstore::Configuration.new }
|
||||
|
||||
before(:each) do
|
||||
# uncomment below to setup host and base_path
|
||||
# require 'URI'
|
||||
# uri = URI.parse("http://petstore.swagger.io:80/v2")
|
||||
# Petstore.configure do |c|
|
||||
# c.host = uri.host
|
||||
# c.base_path = uri.path
|
||||
# end
|
||||
end
|
||||
|
||||
describe '#base_url' do
|
||||
it 'should have the default value' do
|
||||
expect(config.base_url).to eq("http://petstore.swagger.io/v2")
|
||||
end
|
||||
|
||||
it 'returns default value when invalid operation is passed' do
|
||||
expect(config.base_url('invalid_operation')).to eq('http://petstore.swagger.io/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL default server_index' do
|
||||
expect(config.base_url(:'PetApi.add_pet')).to eq('http://petstore.swagger.io/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL when server_index is set' do
|
||||
config.server_index = 1
|
||||
expect(config.base_url(:'PetApi.add_pet')).to eq('http://path-server-test.petstore.local/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL when server_operation_index is set' do
|
||||
config.server_operation_index = {
|
||||
:'PetApi.add_pet' => 1
|
||||
}
|
||||
expect(config.base_url(:'PetApi.add_pet')).to eq('http://path-server-test.petstore.local/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL from server_settings when server_index is set' do
|
||||
config.server_index = 1
|
||||
expect(config.base_url).to eq('https://localhost:8080/v2')
|
||||
end
|
||||
|
||||
it 'throws argument error when attempting to use a server index that is out of bounds' do
|
||||
config.server_operation_index = {
|
||||
:'PetApi.add_pet' => 10
|
||||
}
|
||||
expect {
|
||||
config.base_url(:'PetApi.add_pet')
|
||||
}.to raise_error(ArgumentError, 'Invalid index 10 when selecting the server. Must not be nil and must be less than 3')
|
||||
end
|
||||
|
||||
it 'should remove trailing slashes' do
|
||||
[nil, '', '/', '//'].each do |base_path|
|
||||
config.base_path = base_path
|
||||
# uncomment below to test trailing slashes
|
||||
# expect(config.base_url).to eq("http://petstore.swagger.io:80/v2")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -152,7 +152,7 @@ module Petstore
|
||||
@scheme = 'http'
|
||||
@host = 'petstore.swagger.io'
|
||||
@base_path = '/v2'
|
||||
@server_index = 0
|
||||
@server_index = nil
|
||||
@server_operation_index = {}
|
||||
@server_variables = {}
|
||||
@server_operation_variables = {}
|
||||
@@ -200,10 +200,12 @@ module Petstore
|
||||
|
||||
# Returns base URL for specified operation based on server settings
|
||||
def base_url(operation = nil)
|
||||
index = server_operation_index[operation]
|
||||
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
|
||||
|
||||
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
if operation_server_settings.key?(operation) then
|
||||
index = server_operation_index.fetch(operation, server_index)
|
||||
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
else
|
||||
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets API key (with prefix if set).
|
||||
@@ -397,8 +399,8 @@ module Petstore
|
||||
servers = server_settings if servers == nil
|
||||
|
||||
# check array index out of bound
|
||||
if (index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
||||
if (index.nil? || index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
|
||||
end
|
||||
|
||||
server = servers[index]
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
=begin
|
||||
#OpenAPI Petstore
|
||||
|
||||
#This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
|
||||
|
||||
The version of the OpenAPI document: 1.0.0
|
||||
|
||||
Generated by: https://openapi-generator.tech
|
||||
OpenAPI Generator version: 7.0.0-SNAPSHOT
|
||||
|
||||
=end
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe Petstore::Configuration do
|
||||
let(:config) { Petstore::Configuration.new }
|
||||
|
||||
before(:each) do
|
||||
# uncomment below to setup host and base_path
|
||||
# require 'URI'
|
||||
# uri = URI.parse("http://petstore.swagger.io:80/v2")
|
||||
# Petstore.configure do |c|
|
||||
# c.host = uri.host
|
||||
# c.base_path = uri.path
|
||||
# end
|
||||
end
|
||||
|
||||
describe '#base_url' do
|
||||
it 'should have the default value' do
|
||||
expect(config.base_url).to eq("http://petstore.swagger.io/v2")
|
||||
end
|
||||
|
||||
it 'returns default value when invalid operation is passed' do
|
||||
expect(config.base_url('invalid_operation')).to eq('http://petstore.swagger.io/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL default server_index' do
|
||||
expect(config.base_url(:'PetApi.add_pet')).to eq('http://petstore.swagger.io/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL when server_index is set' do
|
||||
config.server_index = 1
|
||||
expect(config.base_url(:'PetApi.add_pet')).to eq('http://path-server-test.petstore.local/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL when server_operation_index is set' do
|
||||
config.server_operation_index = {
|
||||
:'PetApi.add_pet' => 1
|
||||
}
|
||||
expect(config.base_url(:'PetApi.add_pet')).to eq('http://path-server-test.petstore.local/v2')
|
||||
end
|
||||
|
||||
it 'returns proper URL from server_settings when server_index is set' do
|
||||
config.server_index = 1
|
||||
expect(config.base_url).to eq('https://localhost:8080/v2')
|
||||
end
|
||||
|
||||
it 'throws argument error when attempting to use a server index that is out of bounds' do
|
||||
config.server_operation_index = {
|
||||
:'PetApi.add_pet' => 10
|
||||
}
|
||||
expect {
|
||||
config.base_url(:'PetApi.add_pet')
|
||||
}.to raise_error(ArgumentError, 'Invalid index 10 when selecting the server. Must not be nil and must be less than 3')
|
||||
end
|
||||
|
||||
it 'should remove trailing slashes' do
|
||||
[nil, '', '/', '//'].each do |base_path|
|
||||
config.base_path = base_path
|
||||
# uncomment below to test trailing slashes
|
||||
# expect(config.base_url).to eq("http://petstore.swagger.io:80/v2")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
+9
-7
@@ -152,7 +152,7 @@ module XAuthIDAlias
|
||||
@scheme = 'http'
|
||||
@host = 'petstore.swagger.io'
|
||||
@base_path = '/v2'
|
||||
@server_index = 0
|
||||
@server_index = nil
|
||||
@server_operation_index = {}
|
||||
@server_variables = {}
|
||||
@server_operation_variables = {}
|
||||
@@ -200,10 +200,12 @@ module XAuthIDAlias
|
||||
|
||||
# Returns base URL for specified operation based on server settings
|
||||
def base_url(operation = nil)
|
||||
index = server_operation_index[operation]
|
||||
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
|
||||
|
||||
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
if operation_server_settings.key?(operation) then
|
||||
index = server_operation_index.fetch(operation, server_index)
|
||||
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
else
|
||||
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets API key (with prefix if set).
|
||||
@@ -305,8 +307,8 @@ module XAuthIDAlias
|
||||
servers = server_settings if servers == nil
|
||||
|
||||
# check array index out of bound
|
||||
if (index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
||||
if (index.nil? || index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
|
||||
end
|
||||
|
||||
server = servers[index]
|
||||
|
||||
+9
-7
@@ -152,7 +152,7 @@ module DynamicServers
|
||||
@scheme = 'http'
|
||||
@host = 'petstore.swagger.io'
|
||||
@base_path = '/v2'
|
||||
@server_index = 0
|
||||
@server_index = nil
|
||||
@server_operation_index = {}
|
||||
@server_variables = {}
|
||||
@server_operation_variables = {}
|
||||
@@ -200,10 +200,12 @@ module DynamicServers
|
||||
|
||||
# Returns base URL for specified operation based on server settings
|
||||
def base_url(operation = nil)
|
||||
index = server_operation_index[operation]
|
||||
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
|
||||
|
||||
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
if operation_server_settings.key?(operation) then
|
||||
index = server_operation_index.fetch(operation, server_index)
|
||||
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
else
|
||||
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets API key (with prefix if set).
|
||||
@@ -342,8 +344,8 @@ module DynamicServers
|
||||
servers = server_settings if servers == nil
|
||||
|
||||
# check array index out of bound
|
||||
if (index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
||||
if (index.nil? || index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
|
||||
end
|
||||
|
||||
server = servers[index]
|
||||
|
||||
+9
-7
@@ -152,7 +152,7 @@ module Petstore
|
||||
@scheme = 'http'
|
||||
@host = 'petstore.swagger.io'
|
||||
@base_path = '/v2'
|
||||
@server_index = 0
|
||||
@server_index = nil
|
||||
@server_operation_index = {}
|
||||
@server_variables = {}
|
||||
@server_operation_variables = {}
|
||||
@@ -200,10 +200,12 @@ module Petstore
|
||||
|
||||
# Returns base URL for specified operation based on server settings
|
||||
def base_url(operation = nil)
|
||||
index = server_operation_index[operation]
|
||||
return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if index == nil
|
||||
|
||||
server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
if operation_server_settings.key?(operation) then
|
||||
index = server_operation_index.fetch(operation, server_index)
|
||||
server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation])
|
||||
else
|
||||
server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets API key (with prefix if set).
|
||||
@@ -258,8 +260,8 @@ module Petstore
|
||||
servers = server_settings if servers == nil
|
||||
|
||||
# check array index out of bound
|
||||
if (index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
||||
if (index.nil? || index < 0 || index >= servers.size)
|
||||
fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}"
|
||||
end
|
||||
|
||||
server = servers[index]
|
||||
|
||||
Reference in New Issue
Block a user