fakeit 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -3
- data/CHANGELOG.md +20 -17
- data/Gemfile +12 -1
- data/Gemfile.lock +94 -52
- data/README.md +2 -0
- data/Rakefile +3 -3
- data/bin/fakeit +2 -1
- data/fakeit.gemspec +28 -32
- data/lib/fakeit/app/app_builder.rb +2 -2
- data/lib/fakeit/app/helpers/body_parser.rb +7 -7
- data/lib/fakeit/app/helpers/response_builder.rb +5 -5
- data/lib/fakeit/app/options.rb +2 -2
- data/lib/fakeit/app/routes/config_route.rb +3 -3
- data/lib/fakeit/app/routes/openapi_route.rb +4 -4
- data/lib/fakeit/core_extensions/array_validator.rb +1 -1
- data/lib/fakeit/core_extensions/schema.rb +4 -4
- data/lib/fakeit/middleware/recorder.rb +2 -2
- data/lib/fakeit/openapi/example/array_example.rb +4 -4
- data/lib/fakeit/openapi/example/boolean_example.rb +1 -1
- data/lib/fakeit/openapi/example/integer_example.rb +2 -2
- data/lib/fakeit/openapi/example/number_example.rb +3 -3
- data/lib/fakeit/openapi/example/string_example.rb +20 -20
- data/lib/fakeit/openapi/loader.rb +5 -5
- data/lib/fakeit/openapi/operation.rb +4 -4
- data/lib/fakeit/openapi/schema.rb +11 -11
- data/lib/fakeit/openapi/specification.rb +3 -3
- data/lib/fakeit/validation/validator.rb +4 -4
- data/lib/fakeit/version.rb +1 -1
- data/lib/fakeit.rb +13 -11
- metadata +46 -91
@@ -3,7 +3,7 @@ module Fakeit
|
|
3
3
|
module Example
|
4
4
|
def array_example(options)
|
5
5
|
example_options = add_depth(options)
|
6
|
-
if example_options[:use_static][type:
|
6
|
+
if example_options[:use_static][type: "array", property: example_options[:property]]
|
7
7
|
generate_array_example(example_options, -> { non_empty_size })
|
8
8
|
else
|
9
9
|
generate_array_example(example_options, -> { random_array_size(example_options) })
|
@@ -14,7 +14,7 @@ module Fakeit
|
|
14
14
|
|
15
15
|
def generate_array_example(example_options, get_size)
|
16
16
|
size = retries = get_size[]
|
17
|
-
[].tap { generate_items(size, retries, example_options,
|
17
|
+
[].tap { generate_items(size, retries, example_options, it) }
|
18
18
|
end
|
19
19
|
|
20
20
|
def random_array_size(example_options)
|
@@ -33,7 +33,7 @@ module Fakeit
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
def add_depth(example_options) = {
|
36
|
+
def add_depth(example_options) = {**example_options, depth: example_options[:depth] + 1}
|
37
37
|
|
38
38
|
def need_retry?(item, result, retries) = uniqueItems && result.include?(item) && retries.positive?
|
39
39
|
|
@@ -41,7 +41,7 @@ module Fakeit
|
|
41
41
|
|
42
42
|
def min_array = minItems || 1
|
43
43
|
|
44
|
-
def max_array(depth) = maxItems || (min_array + (depth > 1 ? 2 : 9))
|
44
|
+
def max_array(depth) = maxItems || (min_array + ((depth > 1) ? 2 : 9))
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -2,7 +2,7 @@ module Fakeit
|
|
2
2
|
module Openapi
|
3
3
|
module Example
|
4
4
|
def boolean_example(example_options)
|
5
|
-
example_options[:use_static][type:
|
5
|
+
example_options[:use_static][type: "boolean", property: example_options[:property]] || Faker::Boolean.boolean
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
@@ -4,7 +4,7 @@ module Fakeit
|
|
4
4
|
DEFAULT_BITS = 32
|
5
5
|
|
6
6
|
def integer_example(example_options)
|
7
|
-
if example_options[:use_static][type:
|
7
|
+
if example_options[:use_static][type: "integer", property: example_options[:property]]
|
8
8
|
static_integer_example
|
9
9
|
else
|
10
10
|
random_integer_example
|
@@ -54,7 +54,7 @@ module Fakeit
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def int_bits
|
57
|
-
return DEFAULT_BITS unless
|
57
|
+
return DEFAULT_BITS unless /int\d+/.match?(format)
|
58
58
|
|
59
59
|
format[/\d+/].to_i
|
60
60
|
end
|
@@ -5,7 +5,7 @@ module Fakeit
|
|
5
5
|
MAX_NUM = (2**31) - 1
|
6
6
|
|
7
7
|
def number_example(example_options)
|
8
|
-
if example_options[:use_static][type:
|
8
|
+
if example_options[:use_static][type: "number", property: example_options[:property]]
|
9
9
|
static_number_example
|
10
10
|
else
|
11
11
|
random_number_example
|
@@ -14,11 +14,11 @@ module Fakeit
|
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
def static_number_example = (num_rand_end * num_multiple).then { multipleOf ?
|
17
|
+
def static_number_example = (num_rand_end * num_multiple).then { multipleOf ? it : it.round(2) }
|
18
18
|
|
19
19
|
def random_number_example
|
20
20
|
(Faker::Number.between(from: num_rand_begin, to: num_rand_end) * num_multiple)
|
21
|
-
.then { multipleOf ?
|
21
|
+
.then { multipleOf ? it : it.round(2) }
|
22
22
|
end
|
23
23
|
|
24
24
|
def num_rand_begin = multipleOf ? (min_num / multipleOf).ceil : min_num
|
@@ -2,34 +2,34 @@ module Fakeit
|
|
2
2
|
module Openapi
|
3
3
|
module Example
|
4
4
|
STATIC_FORMAT_HANDLERS = {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
"uri" => -> { "https://some.uri" },
|
6
|
+
"uuid" => -> { "11111111-1111-1111-1111-111111111111" },
|
7
|
+
"guid" => -> { "11111111-1111-1111-1111-111111111111" },
|
8
|
+
"email" => -> { "some@email.com" },
|
9
|
+
"date" => -> { Date.today.iso8601 },
|
10
|
+
"date-time" => lambda do
|
11
11
|
now = Time.now
|
12
12
|
Time.new(now.year, now.month, now.day, 0, 0, 0, now.utc_offset).iso8601
|
13
13
|
end,
|
14
|
-
|
15
|
-
|
14
|
+
"binary" => -> { "binary" },
|
15
|
+
"byte" => -> { "Ynl0ZQ==" }
|
16
16
|
}.freeze
|
17
17
|
|
18
18
|
RANDOM_FORMAT_HANDLERS = {
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
"uri" => -> { Faker::Internet.url },
|
20
|
+
"uuid" => -> { SecureRandom.uuid },
|
21
|
+
"guid" => -> { SecureRandom.uuid },
|
22
|
+
"email" => -> { Faker::Internet.email },
|
23
|
+
"date" => -> { Faker::Date.backward(days: 100).iso8601 },
|
24
|
+
"date-time" => -> { Faker::Time.backward(days: 100).iso8601 },
|
25
|
+
"binary" => -> { Faker::String.random(length: 1..30) },
|
26
|
+
"byte" => -> { Base64.strict_encode64(Faker::String.random(length: 1..30)) }
|
27
27
|
}.freeze
|
28
28
|
|
29
29
|
def string_example(example_options)
|
30
30
|
@string_pattern ||= Regexp.new(pattern) if pattern
|
31
31
|
|
32
|
-
if example_options[:use_static][type:
|
32
|
+
if example_options[:use_static][type: "string", property: example_options[:property]]
|
33
33
|
static_string_example
|
34
34
|
else
|
35
35
|
random_string_example
|
@@ -45,7 +45,7 @@ module Fakeit
|
|
45
45
|
elsif format then static_string_format
|
46
46
|
elsif length_constraint then static_string_with_length
|
47
47
|
else
|
48
|
-
|
48
|
+
"string"
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -67,7 +67,7 @@ module Fakeit
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
def static_string_with_length =
|
70
|
+
def static_string_with_length = "1" * max_string_length
|
71
71
|
|
72
72
|
def static_string_format = (STATIC_FORMAT_HANDLERS[format] || method(:unknown_format))[]
|
73
73
|
|
@@ -91,7 +91,7 @@ module Fakeit
|
|
91
91
|
|
92
92
|
def unknown_format
|
93
93
|
Logger.info("Unknown string format: #{format}")
|
94
|
-
|
94
|
+
"Unknown string format"
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
@@ -4,20 +4,20 @@ module Fakeit
|
|
4
4
|
def load(src)
|
5
5
|
URI
|
6
6
|
.open(src, &:read)
|
7
|
-
.then { parse(src,
|
8
|
-
.then { OpenAPIParser.parse(
|
7
|
+
.then { parse(src, it) }
|
8
|
+
.then { OpenAPIParser.parse(it, {strict_reference_validation: true}) }
|
9
9
|
end
|
10
10
|
|
11
11
|
private
|
12
12
|
|
13
13
|
def parse(src, content)
|
14
14
|
case File.extname(src)
|
15
|
-
when
|
15
|
+
when ".json"
|
16
16
|
JSON.parse(content)
|
17
|
-
when
|
17
|
+
when ".yml", ".yaml"
|
18
18
|
YAML.safe_load(content, [Date, Time])
|
19
19
|
else
|
20
|
-
raise
|
20
|
+
raise "Invalid openapi specification file"
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -12,8 +12,8 @@ module Fakeit
|
|
12
12
|
def headers
|
13
13
|
response_headers
|
14
14
|
.to_h
|
15
|
-
.transform_values {
|
16
|
-
.tap {
|
15
|
+
.transform_values { it.schema.to_example(example_options) }
|
16
|
+
.tap { it["Content-Type"] = response_content_type if response_content_type }
|
17
17
|
end
|
18
18
|
|
19
19
|
def body
|
@@ -31,11 +31,11 @@ module Fakeit
|
|
31
31
|
def serialise(body) = body.is_a?(String) ? body : JSON.generate(body)
|
32
32
|
|
33
33
|
def example_options
|
34
|
-
{
|
34
|
+
{use_example: @app_options.use_example, use_static: @app_options.method(:use_static?), depth: 0}
|
35
35
|
end
|
36
36
|
|
37
37
|
def response_content
|
38
|
-
response.last.content&.find { |k, _| k =~ %r{^application/.*json} || k ==
|
38
|
+
response.last.content&.find { |k, _| k =~ %r{^application/.*json} || k == "application/pdf" }
|
39
39
|
end
|
40
40
|
|
41
41
|
def response_schema = response_content&.last
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
1
|
+
require "fakeit/openapi/example/array_example"
|
2
|
+
require "fakeit/openapi/example/boolean_example"
|
3
|
+
require "fakeit/openapi/example/integer_example"
|
4
|
+
require "fakeit/openapi/example/number_example"
|
5
|
+
require "fakeit/openapi/example/object_example"
|
6
|
+
require "fakeit/openapi/example/string_example"
|
7
7
|
|
8
8
|
module Fakeit
|
9
9
|
module Openapi
|
@@ -32,20 +32,20 @@ module Fakeit
|
|
32
32
|
|
33
33
|
def all_of_example(example_options)
|
34
34
|
all_of
|
35
|
-
.select {
|
36
|
-
.map {
|
35
|
+
.select { it.type == "object" }
|
36
|
+
.map { it.to_example(example_options) }
|
37
37
|
.reduce(&:merge)
|
38
38
|
end
|
39
39
|
|
40
40
|
def any_of_example(example_options)
|
41
41
|
any_of_options(example_options)
|
42
|
-
.map {
|
42
|
+
.map { it.to_example(example_options) }
|
43
43
|
.reduce(&:merge)
|
44
44
|
end
|
45
45
|
|
46
46
|
def any_of_options(example_options)
|
47
47
|
any_of
|
48
|
-
.select {
|
48
|
+
.select { it.type == "object" }
|
49
49
|
.then do |options|
|
50
50
|
if example_options[:use_static][property: example_options[:property]]
|
51
51
|
options
|
@@ -56,7 +56,7 @@ module Fakeit
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def type_based_example(example_options)
|
59
|
-
send("#{type}_example", example_options) if %w[string integer number boolean array object].include?(type)
|
59
|
+
send(:"#{type}_example", example_options) if %w[string integer number boolean array object].include?(type)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -12,7 +12,7 @@ module Fakeit
|
|
12
12
|
|
13
13
|
@doc
|
14
14
|
.request_operation(method, path)
|
15
|
-
&.then { Operation.new(
|
15
|
+
&.then { Operation.new(it, options) }
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
@@ -24,8 +24,8 @@ module Fakeit
|
|
24
24
|
|
25
25
|
@mtime = new_mtime
|
26
26
|
@doc = Fakeit::Openapi.load(@spec_file)
|
27
|
-
rescue
|
28
|
-
Logger.warn(Rainbow(
|
27
|
+
rescue
|
28
|
+
Logger.warn(Rainbow("Invalid spec file, use previous snapshot instead").red)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -9,7 +9,7 @@ module Fakeit
|
|
9
9
|
validate_body(body) unless request_content_types.empty?
|
10
10
|
@operation.validate_path_params(options)
|
11
11
|
@operation.validate_request_parameter(params, headers, options)
|
12
|
-
rescue
|
12
|
+
rescue => e
|
13
13
|
raise ValidationError, e.message
|
14
14
|
end
|
15
15
|
|
@@ -19,12 +19,12 @@ module Fakeit
|
|
19
19
|
if request_content_types.include?(body[:media_type])
|
20
20
|
@operation.validate_request_body(body[:media_type], body[:data]) if can_validate?(body[:media_type])
|
21
21
|
else
|
22
|
-
raise ValidationError,
|
23
|
-
raise ValidationError,
|
22
|
+
raise ValidationError, "Invalid request content type" if body[:media_type]
|
23
|
+
raise ValidationError, "Request body is required" if request_body.required
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def can_validate?(media_type) = media_type =~ %r{^application/.*json} || media_type ==
|
27
|
+
def can_validate?(media_type) = media_type =~ %r{^application/.*json} || media_type == "multipart/form-data"
|
28
28
|
|
29
29
|
def request_content_types = request_body&.content&.keys.to_a
|
30
30
|
|
data/lib/fakeit/version.rb
CHANGED
data/lib/fakeit.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
1
|
+
require "base64"
|
2
|
+
require "faker"
|
3
|
+
require "json"
|
4
|
+
require "logger"
|
5
|
+
require "openapi_parser"
|
6
|
+
require "open-uri"
|
7
|
+
require "rack"
|
8
|
+
require "rackup"
|
9
|
+
require "rainbow"
|
10
|
+
require "regexp-examples"
|
11
|
+
require "webrick"
|
12
|
+
require "yaml"
|
11
13
|
|
12
|
-
Dir.glob(File.join(File.dirname(__FILE__),
|
14
|
+
Dir.glob(File.join(File.dirname(__FILE__), "fakeit", "**/*.rb")).each { require it }
|
13
15
|
|
14
16
|
module Fakeit
|
15
17
|
class << self
|
metadata
CHANGED
@@ -1,143 +1,100 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakeit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Feng
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
13
|
+
name: base64
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
16
|
- - "~>"
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rack-test
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '2.0'
|
34
|
-
type: :development
|
18
|
+
version: 0.2.0
|
19
|
+
type: :runtime
|
35
20
|
prerelease: false
|
36
21
|
version_requirements: !ruby/object:Gem::Requirement
|
37
22
|
requirements:
|
38
23
|
- - "~>"
|
39
24
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
25
|
+
version: 0.2.0
|
41
26
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
27
|
+
name: faker
|
43
28
|
requirement: !ruby/object:Gem::Requirement
|
44
29
|
requirements:
|
45
|
-
- -
|
30
|
+
- - '='
|
46
31
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
32
|
+
version: 3.5.1
|
33
|
+
type: :runtime
|
49
34
|
prerelease: false
|
50
35
|
version_requirements: !ruby/object:Gem::Requirement
|
51
36
|
requirements:
|
52
|
-
- -
|
37
|
+
- - '='
|
53
38
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
39
|
+
version: 3.5.1
|
55
40
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
41
|
+
name: logger
|
57
42
|
requirement: !ruby/object:Gem::Requirement
|
58
43
|
requirements:
|
59
|
-
- -
|
44
|
+
- - '='
|
60
45
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
46
|
+
version: '1.7'
|
47
|
+
type: :runtime
|
63
48
|
prerelease: false
|
64
49
|
version_requirements: !ruby/object:Gem::Requirement
|
65
50
|
requirements:
|
66
|
-
- -
|
51
|
+
- - '='
|
67
52
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
53
|
+
version: '1.7'
|
69
54
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
55
|
+
name: openapi_parser
|
71
56
|
requirement: !ruby/object:Gem::Requirement
|
72
57
|
requirements:
|
73
|
-
- -
|
58
|
+
- - '='
|
74
59
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
type: :
|
60
|
+
version: 2.2.6
|
61
|
+
type: :runtime
|
77
62
|
prerelease: false
|
78
63
|
version_requirements: !ruby/object:Gem::Requirement
|
79
64
|
requirements:
|
80
|
-
- -
|
65
|
+
- - '='
|
81
66
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
67
|
+
version: 2.2.6
|
83
68
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
69
|
+
name: ostruct
|
85
70
|
requirement: !ruby/object:Gem::Requirement
|
86
71
|
requirements:
|
87
72
|
- - "~>"
|
88
73
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
90
|
-
type: :
|
74
|
+
version: '0.6'
|
75
|
+
type: :runtime
|
91
76
|
prerelease: false
|
92
77
|
version_requirements: !ruby/object:Gem::Requirement
|
93
78
|
requirements:
|
94
79
|
- - "~>"
|
95
80
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
81
|
+
version: '0.6'
|
97
82
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
83
|
+
name: rack
|
99
84
|
requirement: !ruby/object:Gem::Requirement
|
100
85
|
requirements:
|
101
86
|
- - "~>"
|
102
87
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.18'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: faker
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 2.22.0
|
88
|
+
version: '3.1'
|
118
89
|
type: :runtime
|
119
90
|
prerelease: false
|
120
91
|
version_requirements: !ruby/object:Gem::Requirement
|
121
92
|
requirements:
|
122
|
-
- -
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 2.22.0
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: openapi_parser
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 1.0.0
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - '='
|
93
|
+
- - "~>"
|
137
94
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1
|
95
|
+
version: '3.1'
|
139
96
|
- !ruby/object:Gem::Dependency
|
140
|
-
name: rack
|
97
|
+
name: rack-cors
|
141
98
|
requirement: !ruby/object:Gem::Requirement
|
142
99
|
requirements:
|
143
100
|
- - "~>"
|
@@ -151,75 +108,75 @@ dependencies:
|
|
151
108
|
- !ruby/object:Gem::Version
|
152
109
|
version: '2.0'
|
153
110
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
111
|
+
name: rackup
|
155
112
|
requirement: !ruby/object:Gem::Requirement
|
156
113
|
requirements:
|
157
114
|
- - "~>"
|
158
115
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
116
|
+
version: '2.2'
|
160
117
|
type: :runtime
|
161
118
|
prerelease: false
|
162
119
|
version_requirements: !ruby/object:Gem::Requirement
|
163
120
|
requirements:
|
164
121
|
- - "~>"
|
165
122
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
123
|
+
version: '2.2'
|
167
124
|
- !ruby/object:Gem::Dependency
|
168
125
|
name: rainbow
|
169
126
|
requirement: !ruby/object:Gem::Requirement
|
170
127
|
requirements:
|
171
128
|
- - "~>"
|
172
129
|
- !ruby/object:Gem::Version
|
173
|
-
version: '3.
|
130
|
+
version: '3.1'
|
174
131
|
type: :runtime
|
175
132
|
prerelease: false
|
176
133
|
version_requirements: !ruby/object:Gem::Requirement
|
177
134
|
requirements:
|
178
135
|
- - "~>"
|
179
136
|
- !ruby/object:Gem::Version
|
180
|
-
version: '3.
|
137
|
+
version: '3.1'
|
181
138
|
- !ruby/object:Gem::Dependency
|
182
139
|
name: regexp-examples
|
183
140
|
requirement: !ruby/object:Gem::Requirement
|
184
141
|
requirements:
|
185
142
|
- - '='
|
186
143
|
- !ruby/object:Gem::Version
|
187
|
-
version: 1.
|
144
|
+
version: 1.6.0
|
188
145
|
type: :runtime
|
189
146
|
prerelease: false
|
190
147
|
version_requirements: !ruby/object:Gem::Requirement
|
191
148
|
requirements:
|
192
149
|
- - '='
|
193
150
|
- !ruby/object:Gem::Version
|
194
|
-
version: 1.
|
151
|
+
version: 1.6.0
|
195
152
|
- !ruby/object:Gem::Dependency
|
196
153
|
name: slop
|
197
154
|
requirement: !ruby/object:Gem::Requirement
|
198
155
|
requirements:
|
199
156
|
- - "~>"
|
200
157
|
- !ruby/object:Gem::Version
|
201
|
-
version: '4.
|
158
|
+
version: '4.10'
|
202
159
|
type: :runtime
|
203
160
|
prerelease: false
|
204
161
|
version_requirements: !ruby/object:Gem::Requirement
|
205
162
|
requirements:
|
206
163
|
- - "~>"
|
207
164
|
- !ruby/object:Gem::Version
|
208
|
-
version: '4.
|
165
|
+
version: '4.10'
|
209
166
|
- !ruby/object:Gem::Dependency
|
210
167
|
name: webrick
|
211
168
|
requirement: !ruby/object:Gem::Requirement
|
212
169
|
requirements:
|
213
170
|
- - "~>"
|
214
171
|
- !ruby/object:Gem::Version
|
215
|
-
version: '1.
|
172
|
+
version: '1.9'
|
216
173
|
type: :runtime
|
217
174
|
prerelease: false
|
218
175
|
version_requirements: !ruby/object:Gem::Requirement
|
219
176
|
requirements:
|
220
177
|
- - "~>"
|
221
178
|
- !ruby/object:Gem::Version
|
222
|
-
version: '1.
|
179
|
+
version: '1.9'
|
223
180
|
description: Create mock server from Openapi specification
|
224
181
|
email:
|
225
182
|
- realfengjia@foxmail.com
|
@@ -271,7 +228,6 @@ licenses:
|
|
271
228
|
- MIT
|
272
229
|
metadata:
|
273
230
|
rubygems_mfa_required: 'true'
|
274
|
-
post_install_message:
|
275
231
|
rdoc_options: []
|
276
232
|
require_paths:
|
277
233
|
- lib
|
@@ -279,15 +235,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
279
235
|
requirements:
|
280
236
|
- - ">="
|
281
237
|
- !ruby/object:Gem::Version
|
282
|
-
version: 3.
|
238
|
+
version: '3.4'
|
283
239
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
284
240
|
requirements:
|
285
241
|
- - ">="
|
286
242
|
- !ruby/object:Gem::Version
|
287
243
|
version: '0'
|
288
244
|
requirements: []
|
289
|
-
rubygems_version: 3.
|
290
|
-
signing_key:
|
245
|
+
rubygems_version: 3.6.8
|
291
246
|
specification_version: 4
|
292
247
|
summary: Create mock server from Openapi specification
|
293
248
|
test_files: []
|