forked from loafle/openapi-generator-original
Add "servers" support to Ruby API client (#1280)
* update ruby samples with OAS3 spec * add server support to ruby api client * minor format change * minor format fix, skip form models * better exception and add test for invaid value * remove exception test code
This commit is contained in:
parent
2b88a1d26f
commit
a55533c178
@ -27,6 +27,6 @@ fi
|
|||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
ags="generate -t modules/openapi-generator/src/main/resources/ruby-client -i modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml -g ruby -c bin/ruby-petstore.json -o samples/client/petstore/ruby $@"
|
ags="generate -t modules/openapi-generator/src/main/resources/ruby-client -i modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml -g ruby -c bin/ruby-petstore.json -o samples/client/petstore/ruby -DskipFormModel=true $@"
|
||||||
|
|
||||||
java $JAVA_OPTS -jar $executable $ags
|
java $JAVA_OPTS -jar $executable $ags
|
||||||
|
@ -10,7 +10,7 @@ echo "Please press CTRL+C to stop or the script will continue in 5 seconds."
|
|||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# LIST OF SCRIPTS:
|
# LIST OF SCRIPTS:
|
||||||
./bin/ruby-client-petstore.sh > /dev/null 2>&1
|
./bin/openapi3/ruby-client-petstore.sh > /dev/null 2>&1
|
||||||
./bin/java-petstore-all.sh > /dev/null 2>&1
|
./bin/java-petstore-all.sh > /dev/null 2>&1
|
||||||
./bin/java-jaxrs-petstore-server-all.sh > /dev/null 2>&1
|
./bin/java-jaxrs-petstore-server-all.sh > /dev/null 2>&1
|
||||||
./bin/spring-all-pestore.sh > /dev/null 2>&1
|
./bin/spring-all-pestore.sh > /dev/null 2>&1
|
||||||
|
@ -168,7 +168,7 @@ public class URLPathUtils {
|
|||||||
*/
|
*/
|
||||||
public static String getHost(OpenAPI openAPI) {
|
public static String getHost(OpenAPI openAPI) {
|
||||||
if (openAPI.getServers() != null && openAPI.getServers().size() > 0) {
|
if (openAPI.getServers() != null && openAPI.getServers().size() > 0) {
|
||||||
return sanitizeUrl(openAPI.getServers().get(0).getUrl());
|
return sanitizeUrl(getServerURL(openAPI.getServers().get(0)).toString());
|
||||||
}
|
}
|
||||||
return LOCAL_HOST;
|
return LOCAL_HOST;
|
||||||
}
|
}
|
||||||
|
@ -219,5 +219,70 @@ module {{moduleName}}
|
|||||||
{{/authMethods}}
|
{{/authMethods}}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns an array of Server setting
|
||||||
|
def server_settings
|
||||||
|
[
|
||||||
|
{{#servers}}
|
||||||
|
{
|
||||||
|
url: "{{{url}}}",
|
||||||
|
description: "{{{description}}}{{^description}}No descriptoin provided{{/description}}",
|
||||||
|
{{#variables}}
|
||||||
|
{{#-first}}
|
||||||
|
variables: {
|
||||||
|
{{/-first}}
|
||||||
|
{{{name}}}: {
|
||||||
|
description: "{{{description}}}{{^description}}No descriptoin provided{{/description}}",
|
||||||
|
default_value: "{{{defaultValue}}}",
|
||||||
|
{{#enumValues}}
|
||||||
|
{{#-first}}
|
||||||
|
enum_values: [
|
||||||
|
{{/-first}}
|
||||||
|
"{{{.}}}"{{^-last}},{{/-last}}
|
||||||
|
{{#-last}}
|
||||||
|
]
|
||||||
|
{{/-last}}
|
||||||
|
{{/enumValues}}
|
||||||
|
}{{^-last}},{{/-last}}
|
||||||
|
{{#-last}}
|
||||||
|
}
|
||||||
|
{{/-last}}
|
||||||
|
{{/variables}}
|
||||||
|
}{{^-last}},{{/-last}}
|
||||||
|
{{/servers}}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns URL based on server settings
|
||||||
|
#
|
||||||
|
# @param index array index of the server settings
|
||||||
|
# @param variables hash of variable and the corresponding value
|
||||||
|
def server_url(index, variables = {})
|
||||||
|
servers = server_settings
|
||||||
|
|
||||||
|
# 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}"
|
||||||
|
end
|
||||||
|
|
||||||
|
server = servers[index]
|
||||||
|
url = server[:url]
|
||||||
|
|
||||||
|
# go through variable and assign a value
|
||||||
|
server[:variables].each do |name, variable|
|
||||||
|
if variables.key?(name)
|
||||||
|
if (server[:variables][name][:enum_values].include? variables[name])
|
||||||
|
url.gsub! "{" + name.to_s + "}", variables[name]
|
||||||
|
else
|
||||||
|
fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
|
||||||
|
end
|
||||||
|
else
|
||||||
|
# use default value
|
||||||
|
url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
url
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -968,7 +968,28 @@ paths:
|
|||||||
required:
|
required:
|
||||||
- requiredFile
|
- requiredFile
|
||||||
servers:
|
servers:
|
||||||
- url: 'http://petstore.swagger.io:80/v2'
|
- url: 'http://{server}.swagger.io:{port}/v2'
|
||||||
|
description: petstore server
|
||||||
|
variables:
|
||||||
|
server:
|
||||||
|
enum:
|
||||||
|
- 'petstore'
|
||||||
|
- 'qa-petstore'
|
||||||
|
- 'dev-petstore'
|
||||||
|
default: 'petstore'
|
||||||
|
port:
|
||||||
|
enum:
|
||||||
|
- 80
|
||||||
|
- 8080
|
||||||
|
default: 80
|
||||||
|
- url: https://api.gigantic-server.com:8080/{version}
|
||||||
|
description: The production API server
|
||||||
|
variables:
|
||||||
|
version:
|
||||||
|
enum:
|
||||||
|
- 'v1'
|
||||||
|
- 'v2'
|
||||||
|
default: 'v2'
|
||||||
components:
|
components:
|
||||||
requestBodies:
|
requestBodies:
|
||||||
UserArray:
|
UserArray:
|
||||||
|
@ -58,7 +58,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: */*
|
- **Accept**: */*
|
||||||
|
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: */*
|
- **Accept**: */*
|
||||||
|
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: */*
|
- **Accept**: */*
|
||||||
|
|
||||||
|
|
||||||
@ -196,7 +196,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: */*
|
- **Accept**: */*
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: application/xml, application/json
|
- **Accept**: application/xml, application/json
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: Not defined
|
- **Accept**: Not defined
|
||||||
|
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: Not defined
|
- **Accept**: Not defined
|
||||||
|
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: Not defined
|
- **Accept**: Not defined
|
||||||
|
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ No authorization required
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: application/json
|
||||||
- **Accept**: Not defined
|
- **Accept**: Not defined
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,6 +46,8 @@ module Petstore
|
|||||||
header_params = {}
|
header_params = {}
|
||||||
# HTTP header 'Accept' (if needed)
|
# HTTP header 'Accept' (if needed)
|
||||||
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
@ -93,6 +95,8 @@ module Petstore
|
|||||||
header_params = {}
|
header_params = {}
|
||||||
# HTTP header 'Accept' (if needed)
|
# HTTP header 'Accept' (if needed)
|
||||||
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
@ -140,6 +144,8 @@ module Petstore
|
|||||||
header_params = {}
|
header_params = {}
|
||||||
# HTTP header 'Accept' (if needed)
|
# HTTP header 'Accept' (if needed)
|
||||||
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
@ -187,6 +193,8 @@ module Petstore
|
|||||||
header_params = {}
|
header_params = {}
|
||||||
# HTTP header 'Accept' (if needed)
|
# HTTP header 'Accept' (if needed)
|
||||||
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
header_params['Accept'] = @api_client.select_header_accept(['*/*'])
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
@ -585,7 +593,7 @@ module Petstore
|
|||||||
|
|
||||||
# query parameters
|
# query parameters
|
||||||
query_params = {}
|
query_params = {}
|
||||||
query_params[:'enum_query_string_array'] = @api_client.build_collection_param(opts[:'enum_query_string_array'], :csv) if !opts[:'enum_query_string_array'].nil?
|
query_params[:'enum_query_string_array'] = @api_client.build_collection_param(opts[:'enum_query_string_array'], :multi) if !opts[:'enum_query_string_array'].nil?
|
||||||
query_params[:'enum_query_string'] = opts[:'enum_query_string'] if !opts[:'enum_query_string'].nil?
|
query_params[:'enum_query_string'] = opts[:'enum_query_string'] if !opts[:'enum_query_string'].nil?
|
||||||
query_params[:'enum_query_integer'] = opts[:'enum_query_integer'] if !opts[:'enum_query_integer'].nil?
|
query_params[:'enum_query_integer'] = opts[:'enum_query_integer'] if !opts[:'enum_query_integer'].nil?
|
||||||
query_params[:'enum_query_double'] = opts[:'enum_query_double'] if !opts[:'enum_query_double'].nil?
|
query_params[:'enum_query_double'] = opts[:'enum_query_double'] if !opts[:'enum_query_double'].nil?
|
||||||
|
@ -208,6 +208,8 @@ module Petstore
|
|||||||
header_params = {}
|
header_params = {}
|
||||||
# HTTP header 'Accept' (if needed)
|
# HTTP header 'Accept' (if needed)
|
||||||
header_params['Accept'] = @api_client.select_header_accept(['application/xml', 'application/json'])
|
header_params['Accept'] = @api_client.select_header_accept(['application/xml', 'application/json'])
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
|
@ -50,6 +50,8 @@ module Petstore
|
|||||||
|
|
||||||
# header parameters
|
# header parameters
|
||||||
header_params = {}
|
header_params = {}
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
@ -98,6 +100,8 @@ module Petstore
|
|||||||
|
|
||||||
# header parameters
|
# header parameters
|
||||||
header_params = {}
|
header_params = {}
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
@ -146,6 +150,8 @@ module Petstore
|
|||||||
|
|
||||||
# header parameters
|
# header parameters
|
||||||
header_params = {}
|
header_params = {}
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
@ -404,6 +410,8 @@ module Petstore
|
|||||||
|
|
||||||
# header parameters
|
# header parameters
|
||||||
header_params = {}
|
header_params = {}
|
||||||
|
# HTTP header 'Content-Type'
|
||||||
|
header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
|
||||||
|
|
||||||
# form parameters
|
# form parameters
|
||||||
form_params = {}
|
form_params = {}
|
||||||
|
@ -226,5 +226,80 @@ module Petstore
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns an array of Server setting
|
||||||
|
def server_settings
|
||||||
|
[
|
||||||
|
{
|
||||||
|
url: "http://{server}.swagger.io:{port}/v2",
|
||||||
|
description: "petstore server",
|
||||||
|
variables: {
|
||||||
|
server: {
|
||||||
|
description: "No descriptoin provided",
|
||||||
|
default_value: "petstore",
|
||||||
|
enum_values: [
|
||||||
|
"petstore",
|
||||||
|
"qa-petstore",
|
||||||
|
"dev-petstore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
port: {
|
||||||
|
description: "No descriptoin provided",
|
||||||
|
default_value: "80",
|
||||||
|
enum_values: [
|
||||||
|
"80",
|
||||||
|
"8080"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: "https://api.gigantic-server.com:8080/{version}",
|
||||||
|
description: "The production API server",
|
||||||
|
variables: {
|
||||||
|
version: {
|
||||||
|
description: "No descriptoin provided",
|
||||||
|
default_value: "v2",
|
||||||
|
enum_values: [
|
||||||
|
"v1",
|
||||||
|
"v2"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns URL based on server settings
|
||||||
|
#
|
||||||
|
# @param index array index of the server settings
|
||||||
|
# @param variables hash of variable and the corresponding value
|
||||||
|
def server_url(index, variables = {})
|
||||||
|
servers = server_settings
|
||||||
|
|
||||||
|
# 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}"
|
||||||
|
end
|
||||||
|
|
||||||
|
server = servers[index]
|
||||||
|
url = server[:url]
|
||||||
|
|
||||||
|
# go through variable and assign a value
|
||||||
|
server[:variables].each do |name, variable|
|
||||||
|
if variables.key?(name)
|
||||||
|
if (server[:variables][name][:enum_values].include? variables[name])
|
||||||
|
url.gsub! "{" + name.to_s + "}", variables[name]
|
||||||
|
else
|
||||||
|
fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
|
||||||
|
end
|
||||||
|
else
|
||||||
|
# use default value
|
||||||
|
url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
url
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
=begin
|
=begin
|
||||||
#Swagger Petstore
|
#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: \" \\
|
#This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
|
||||||
|
|
||||||
OpenAPI spec version: 1.0.0
|
OpenAPI spec version: 1.0.0
|
||||||
Contact: apiteam@swagger.io
|
|
||||||
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
Generated by: https://openapi-generator.tech
|
||||||
Swagger Codegen version: 3.0.0-SNAPSHOT
|
OpenAPI Generator version: 3.3.2-SNAPSHOT
|
||||||
|
|
||||||
=end
|
=end
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ module Petstore
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Attribute type mapping.
|
# Attribute type mapping.
|
||||||
def self.swagger_types
|
def self.openapi_types
|
||||||
{
|
{
|
||||||
:'param' => :'String',
|
:'param' => :'String',
|
||||||
:'param2' => :'String'
|
:'param2' => :'String'
|
||||||
@ -102,7 +102,7 @@ module Petstore
|
|||||||
# @return [Object] Returns the model itself
|
# @return [Object] Returns the model itself
|
||||||
def build_from_hash(attributes)
|
def build_from_hash(attributes)
|
||||||
return nil unless attributes.is_a?(Hash)
|
return nil unless attributes.is_a?(Hash)
|
||||||
self.class.swagger_types.each_pair do |key, type|
|
self.class.openapi_types.each_pair do |key, type|
|
||||||
if type =~ /\AArray<(.*)>/i
|
if type =~ /\AArray<(.*)>/i
|
||||||
# check to ensure the input is an array given that the the attribute
|
# check to ensure the input is an array given that the the attribute
|
||||||
# is documented as an array but the input is not
|
# is documented as an array but the input is not
|
||||||
|
@ -195,10 +195,6 @@ module Petstore
|
|||||||
invalid_properties.push('invalid value for "byte", byte cannot be nil.')
|
invalid_properties.push('invalid value for "byte", byte cannot be nil.')
|
||||||
end
|
end
|
||||||
|
|
||||||
if @byte !~ Regexp.new(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/)
|
|
||||||
invalid_properties.push('invalid value for "byte", must conform to the pattern /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.')
|
|
||||||
end
|
|
||||||
|
|
||||||
if @date.nil?
|
if @date.nil?
|
||||||
invalid_properties.push('invalid value for "date", date cannot be nil.')
|
invalid_properties.push('invalid value for "date", date cannot be nil.')
|
||||||
end
|
end
|
||||||
@ -234,7 +230,6 @@ module Petstore
|
|||||||
return false if !@double.nil? && @double < 67.8
|
return false if !@double.nil? && @double < 67.8
|
||||||
return false if !@string.nil? && @string !~ Regexp.new(/[a-z]/i)
|
return false if !@string.nil? && @string !~ Regexp.new(/[a-z]/i)
|
||||||
return false if @byte.nil?
|
return false if @byte.nil?
|
||||||
return false if @byte !~ Regexp.new(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/)
|
|
||||||
return false if @date.nil?
|
return false if @date.nil?
|
||||||
return false if @password.nil?
|
return false if @password.nil?
|
||||||
return false if @password.to_s.length > 64
|
return false if @password.to_s.length > 64
|
||||||
@ -326,20 +321,6 @@ module Petstore
|
|||||||
@string = string
|
@string = string
|
||||||
end
|
end
|
||||||
|
|
||||||
# Custom attribute writer method with validation
|
|
||||||
# @param [Object] byte Value to be assigned
|
|
||||||
def byte=(byte)
|
|
||||||
if byte.nil?
|
|
||||||
fail ArgumentError, 'byte cannot be nil'
|
|
||||||
end
|
|
||||||
|
|
||||||
if byte !~ Regexp.new(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/)
|
|
||||||
fail ArgumentError, 'invalid value for "byte", must conform to the pattern /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.'
|
|
||||||
end
|
|
||||||
|
|
||||||
@byte = byte
|
|
||||||
end
|
|
||||||
|
|
||||||
# Custom attribute writer method with validation
|
# Custom attribute writer method with validation
|
||||||
# @param [Object] password Value to be assigned
|
# @param [Object] password Value to be assigned
|
||||||
def password=(password)
|
def password=(password)
|
||||||
|
@ -22,4 +22,34 @@ describe Petstore::Configuration do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'server settings' do
|
||||||
|
it 'should return an array of server settings' do
|
||||||
|
expect(config.auth_settings).not_to be_empty
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should get the first url' do
|
||||||
|
url = config.server_url(0, server: "dev-petstore", port: "8080")
|
||||||
|
expect(url).to eq("http://dev-petstore.swagger.io:8080/v2")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should get the first url with default values' do
|
||||||
|
url = config.server_url(0)
|
||||||
|
expect(url).to eq("http://petstore.swagger.io:80/v2")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should get the second url with default values' do
|
||||||
|
url = config.server_url(1)
|
||||||
|
expect(url).to eq("https://api.gigantic-server.com:8080/v2")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should get the second url' do
|
||||||
|
url = config.server_url(1, version: "v1")
|
||||||
|
expect(url).to eq("https://api.gigantic-server.com:8080/v1")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should raise error due to invalid enum value' do
|
||||||
|
expect{config.server_url(1, version: "v6")}.to raise_error(ArgumentError)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user