From 2071172afdd11c98f25e994e87cacc021403a8e1 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Sun, 27 Jan 2019 11:41:40 +0800
Subject: [PATCH] fix index check, add test cases

---
 .../src/main/resources/ruby-client/configuration.mustache     | 4 ++--
 samples/client/petstore/ruby/lib/petstore/configuration.rb    | 4 ++--
 .../client/petstore/ruby/lib/petstore/configuration.rb        | 4 ++--
 .../openapi3/client/petstore/ruby/spec/configuration_spec.rb  | 4 ++++
 4 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache b/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache
index dcfb0004228..d0d190ff2f5 100644
--- a/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache
+++ b/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache
@@ -261,8 +261,8 @@ module {{moduleName}}
       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}"
+      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]
diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb
index e560956b89e..71376ac3848 100644
--- a/samples/client/petstore/ruby/lib/petstore/configuration.rb
+++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb
@@ -245,8 +245,8 @@ module Petstore
       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}"
+      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]
diff --git a/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb b/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb
index 586e02c6264..908147a4978 100644
--- a/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb
+++ b/samples/openapi3/client/petstore/ruby/lib/petstore/configuration.rb
@@ -278,8 +278,8 @@ module Petstore
       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}"
+      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]
diff --git a/samples/openapi3/client/petstore/ruby/spec/configuration_spec.rb b/samples/openapi3/client/petstore/ruby/spec/configuration_spec.rb
index e666b7bc004..b45eeea4d0a 100644
--- a/samples/openapi3/client/petstore/ruby/spec/configuration_spec.rb
+++ b/samples/openapi3/client/petstore/ruby/spec/configuration_spec.rb
@@ -51,5 +51,9 @@ describe Petstore::Configuration do
     it 'should raise error due to invalid enum value' do
       expect{config.server_url(1, version: "v6")}.to raise_error(ArgumentError)
     end
+
+    it 'should raise error due to invalid index' do
+      expect{config.server_url(2)}.to raise_error(ArgumentError)
+    end
   end
 end
-- 
GitLab