From 4854b79a318baab025f97c57fa4e9b9de153cf42 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 25 Apr 2016 22:23:23 +0800 Subject: [PATCH] add pattern check to ruby model --- .../src/main/resources/ruby/model.mustache | 22 +++++++++++++++++-- ...ith-fake-endpoints-models-for-testing.yaml | 2 +- samples/client/petstore/ruby/README.md | 2 +- .../ruby/lib/petstore/models/format_test.rb | 8 +++++++ .../ruby/lib/petstore/models/order.rb | 2 +- .../petstore/ruby/lib/petstore/models/pet.rb | 2 +- 6 files changed, 32 insertions(+), 6 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/ruby/model.mustache b/modules/swagger-codegen/src/main/resources/ruby/model.mustache index e3b5c3851d22..b95b55bcee93 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/model.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/model.mustache @@ -62,7 +62,7 @@ module {{moduleName}}{{#models}}{{#model}}{{#description}} invalid_properties = Array.new {{#isEnum}} allowed_values = [{{#allowableValues}}{{#values}}"{{{this}}}"{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}] - if @{{{name}}} && !allowed_values.include?(@{{{name}}}) + if @{{{name}}} && !allowed_values.include?({{{name}}}) invalid_properties.push("invalid value for '{{{name}}}', must be one of #{allowed_values}.") end @@ -96,6 +96,12 @@ module {{moduleName}}{{#models}}{{#model}}{{#description}} end {{/minimum}} + {{#pattern}} + if @{{{name}}} !~ Regexp.new({{{pattern}}}) + invalid_properties.push("invalid value for '{{{name}}}', must conform to the pattern {{{pattern}}}.") + end + + {{/pattern}} {{/hasValidation}} return invalid_properties end @@ -141,6 +147,12 @@ module {{moduleName}}{{#models}}{{#model}}{{#description}} end {{/minimum}} + {{#pattern}} + if @{{{name}}} !~ Regexp.new({{{pattern}}}) + return false + end + + {{/pattern}} {{/hasValidation}} {{/vars}} end @@ -151,7 +163,7 @@ module {{moduleName}}{{#models}}{{#model}}{{#description}} # @param [Object] {{{name}}} Object to be assigned def {{{name}}}=({{{name}}}) allowed_values = [{{#allowableValues}}{{#values}}"{{{this}}}"{{^-last}}, {{/-last}}{{/values}}{{/allowableValues}}] - if {{{name}}} && !allowed_values.include?(@{{{name}}}) + if {{{name}}} && !allowed_values.include?({{{name}}}) fail ArgumentError, "invalid value for '{{{name}}}', must be one of #{allowed_values}." end @{{{name}}} = {{{name}}} @@ -191,6 +203,12 @@ module {{moduleName}}{{#models}}{{#model}}{{#description}} end {{/minimum}} + {{#pattern}} + if @{{{name}}} !~ Regexp.new({{{pattern}}}) + fail ArgumentError, "invalid value for '{{{name}}}', must conform to the pattern {{{pattern}}}." + end + + {{/pattern}} @{{{name}}} = {{{name}}} end diff --git a/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml index b5df273cfdbb..d77eaac6efd0 100644 --- a/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml @@ -787,7 +787,7 @@ definitions: minimum: 67.8 string: type: string - pattern: /[a‑z]/i + pattern: /[a-z]/i byte: type: string format: byte diff --git a/samples/client/petstore/ruby/README.md b/samples/client/petstore/ruby/README.md index a7dd757d991d..9882a3021ec7 100644 --- a/samples/client/petstore/ruby/README.md +++ b/samples/client/petstore/ruby/README.md @@ -8,7 +8,7 @@ This SDK is automatically generated by the [Swagger Codegen](https://github.com/ - API version: 1.0.0 - Package version: 1.0.0 -- Build date: 2016-04-25T21:47:45.004+08:00 +- Build date: 2016-04-25T22:22:56.750+08:00 - Build package: class io.swagger.codegen.languages.RubyClientCodegen ## Installation diff --git a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb index 02a996abe509..e4373bb955f1 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb @@ -190,6 +190,10 @@ module Petstore return false end + if @string !~ Regexp.new(/[a-z]/i) + return false + end + if @byte.nil? return false end @@ -309,6 +313,10 @@ module Petstore fail ArgumentError, "string cannot be nil" end + if @string !~ Regexp.new(/[a-z]/i) + fail ArgumentError, "invalid value for 'string', must conform to the pattern /[a-z]/i." + end + @string = string end diff --git a/samples/client/petstore/ruby/lib/petstore/models/order.rb b/samples/client/petstore/ruby/lib/petstore/models/order.rb index 1ae2a898024b..b243b70cfb87 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/order.rb @@ -102,7 +102,7 @@ module Petstore # @return true if the model is valid def valid? allowed_values = ["placed", "approved", "delivered"] - if @status && !allowed_values.include?(status) + if @status && !allowed_values.include?(@status) return false end end diff --git a/samples/client/petstore/ruby/lib/petstore/models/pet.rb b/samples/client/petstore/ruby/lib/petstore/models/pet.rb index abd1252a9350..cdd312f1dad6 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/pet.rb @@ -112,7 +112,7 @@ module Petstore end allowed_values = ["available", "pending", "sold"] - if @status && !allowed_values.include?(status) + if @status && !allowed_values.include?(@status) return false end end