newman_scenario 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 974c64e5aba070897acfef6b3156b1e72373760c2daabeee9abc5972c30f60d6
4
- data.tar.gz: 5b4c7294a9dd87669272f4c4632e4c165872d7840b5b50ec9ca59437a0db13cd
3
+ metadata.gz: a249bfa843b4d5696be896e2ac9066cd3891da46cbcc0348ca29b587b6f742ad
4
+ data.tar.gz: 6c4f66cb953c7ffdf5dacb496889123425ecf4143eefaa83aaf438d42d4bdbcf
5
5
  SHA512:
6
- metadata.gz: 607faa6bb4ab1a8cc839028146f0c61b80463433c89a9b4ec83931d2eca5693ec1e2f6d00437a1145c774f39c8fc6c90ffe270cf95416c56929f1021681b3875
7
- data.tar.gz: 453b185f054f60e2c6a3fb429a2627ffd8294098d33b6dd417030710dcfae0d08905dbe26264eedab66c9e1548a6dfadb2d84e5d82013e420c089cc43b97ea07
6
+ metadata.gz: 4dec924de1eea41bce0cc3ca79605521cc33235c254469819126104bf93bbf48ae12b75434e23d35071131f3cf72048b12670b68e1dea9aa57b4a51cd1750623
7
+ data.tar.gz: 1e925af5a9c6865e52d4bf8d06f39a88f48448244ffb2613595882325850c86816888d469c7baf6ff0439f59b15f4e578f8e1d7ba5d2eaa773e934cbd6bec688
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- newman_scenario (0.1.2)
4
+ newman_scenario (0.1.3)
5
5
  dotenv (= 2.7.5)
6
6
  httparty (= 0.16.2)
7
7
  thor (= 1.0.1)
@@ -20,7 +20,7 @@ GEM
20
20
  pastel (0.7.3)
21
21
  equatable (~> 0.6)
22
22
  tty-color (~> 0.5)
23
- rake (10.5.0)
23
+ rake (12.3.3)
24
24
  rspec (3.9.0)
25
25
  rspec-core (~> 3.9.0)
26
26
  rspec-expectations (~> 3.9.0)
@@ -54,7 +54,7 @@ PLATFORMS
54
54
  DEPENDENCIES
55
55
  bundler (~> 2.0)
56
56
  newman_scenario!
57
- rake (~> 10.0)
57
+ rake (~> 12.3)
58
58
  rspec (~> 3.0)
59
59
 
60
60
  BUNDLED WITH
data/README.md CHANGED
@@ -5,15 +5,18 @@ It supports:
5
5
  - loading a Postman environment file against the requests.
6
6
  - running a "folder" of requests
7
7
 
8
- This is great, but if you want to perform the same request in multiple "folder", you
8
+ It's awesome, but if you want to perform the same request in multiple "folder", you
9
9
  will end up duplicating this requests, which make it hard to maintain.
10
10
 
11
- Also, it can be clumbersome to add new "scenario" ("folder") from Postman.
11
+ Also, it can be clumbersome to add new "scenario" ("folder") from [Postman](https://www.postman.com).
12
+
13
+ At @babylist, we (I?) use it to feed some pre-built scenario ("create a user", "sign-in", "add a product to the cart", "checkout").
14
+ Even if using [Postman](https://www.postman.com) , you can group your requests in a folder ("checkout flow") and run `newman --folder "checkout flow"`, it can be tricky to maintain, if you're re-using "create a user" in different scenarios.
12
15
 
13
16
  Here comes `NewmanScenario`.
14
17
 
15
- It basically allow you to cherry pick some requests to be chained, saved them, and run
16
- the newly created "scenario".
18
+ It basically allow you to cherry pick some requests to be chained, saved them (locally), and run
19
+ the newly created (locally) "scenario".
17
20
 
18
21
  The newly builded scenarios are just a list of requests, store in a json format file.
19
22
  The file is store in the current working directory under `newman_scenarios.json`
@@ -39,21 +42,22 @@ Or install it yourself as:
39
42
 
40
43
  ### Using configure`
41
44
 
42
- configure will guide you to set Postman related collection id and environments ids, and
45
+ configure will guide you to set Postman related collection and environments (fetch from [Postman](https://www.postman.com) ), and
43
46
  stores them in `.env`
44
47
 
45
- $ newman_scenario configure
48
+ $ newman_scenario configure
46
49
 
47
50
  ### Setting `.env` manually
48
51
 
49
52
  Add this to your `ENV` or `.env`
50
53
 
51
54
  ```
52
- POSTMAN_API_KEY: POSTMAN_API_KEY (https://YOURPOSTMAN.postman.co/settings/me/api-keys)
53
- # postman environments ids (extract from) in json format
54
- NEWMAN_SCENARIO_ENVIRONMENTS: {"staging1": "7361507-b4fcda81-db77-0000-AAAA-XXXXXX","staging3": "7361507-5f29f2c7-efff-0000-AAAA-XXXXX","staging5": "7361507-f360c483-6277-0000-AAAA-XXXXX","local": "2d98e3c9-27dc-0000-AAAA-XXXXX"}
55
- # postman collection id (extract from)
56
- NEWMAN_SCENARIO_COLLECTION_ID: 7361507-9627fa69-1fe0-0000-AAAA-XXXXXX
55
+ # from https://YOURPOSTMAN.postman.co/settings/me/api-keys
56
+ POSTMAN_API_KEY: POSTMAN_API_KEY ()
57
+ # postman environments id/name in json format
58
+ NEWMAN_SCENARIO_ENVIRONMENTS: {"staging1": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","staging3": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","staging5": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","local": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
59
+ # postman collection id
60
+ NEWMAN_SCENARIO_COLLECTION_ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
57
61
  ```
58
62
 
59
63
  ### Rails App
@@ -63,9 +67,9 @@ NEWMAN_SCENARIO_COLLECTION_ID: 7361507-9627fa69-1fe0-0000-AAAA-XXXXXX
63
67
  require 'newman_scenario'
64
68
 
65
69
  NewmanScenario::Scenario.configure(
66
- default_api_key: 'PMAK-XXXX-XXXX', # ENV['POSTMAN_API_KEY'], no default value
67
- default_collection_id: 'ABCDEF-XXXXX-XXXX-0000-AAAA-XXXXXX', # ENV['NEWMAN_SCENARIO_COLLECTION_ID'], no default value
68
- default_environment_ids: { staging: 'YXZ-XXXXX-XXXX-0000-AAAA-XXXXXX', production: 'ABC-XXXXX-XXXX-0000-AAAA-XXXXXX'}, # ENV['NEWMAN_SCENARIO_ENVIRONMENTS'] (json format), no default value
70
+ default_api_key: 'PMAK-xxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', # ENV['POSTMAN_API_KEY'], no default value
71
+ default_collection_id: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', # ENV['NEWMAN_SCENARIO_COLLECTION_ID'], no default value
72
+ default_environment_ids: { staging: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', production: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}, # ENV['NEWMAN_SCENARIO_ENVIRONMENTS'] (json format), no default value
69
73
  default_custom_scenarios_file_path: 'newman-scenarios.json', # ENV['NEWMAN_SCENARIO_CUSTOM_COLLECTION_FILE_PATH'], default: `newman_scenarios.json`
70
74
  default_last_scenario_file_path: '/tmp/last_newman_scenario.json' # ENV['NEWMAN_SCENARIO_LAST_SCENARIO_FILE_PATH'], default: `last_newman_scenario.json`
71
75
  )
@@ -77,24 +81,16 @@ NewmanScenario::Scenario.configure(
77
81
 
78
82
  ### Stand alone
79
83
 
80
- ```
81
- # will prompt you to select a environment (by it's name, see configuration)
82
- # and create or re-use a `NewmanScenario`
83
- # newly created scenario can be saved
84
- newman_scenario
84
+ > running the gem itself will prompt you to select a environment (by it's name, see configuration)
85
+ and create or re-use a `NewmanScenario` newly created scenario which can be saved.
85
86
 
86
- # will run the previous created scenario 'Signup' against staging3 environment (with no extra prompt)
87
- newman_scenario staging3 Signup
88
- ```
87
+ $ newman_scenario
89
88
 
90
- ### Within App
89
+ > run with a environment name and/or a scenario name will run the previous created scenario 'Signup' against staging3 environment (with no extra prompt)
91
90
 
92
- ```ruby
93
- require 'newman_scenario'
91
+ $ newman_scenario staging3 Signup
94
92
 
95
- # will run the previous created scenario 'Signup' against staging3 environment (with no extra prompt)
96
- NewmanScenario::Scenario.new.run(scenario_name: 'Signup', environment_name: 'staging3', no_prompt: true)
97
- ```
93
+ ### Within App
98
94
 
99
95
  ```ruby
100
96
  require 'newman_scenario'
@@ -108,6 +104,10 @@ NewmanScenario::Scenario.new.run
108
104
  NewmanScenario::Scenario.new.run(scenario_name: 'Signup', environment_name: 'staging3', no_prompt: true)
109
105
  ```
110
106
 
107
+ ## How it works
108
+
109
+ Beside all the "trivial" Postman collection and environments fetching, it basically scan your collection, cherry pick the requests which match request names stored for a "custom" scenario, create a brand new (local) collection which requests and run this new scenario (collection) using `newman`
110
+
111
111
  ## Roadmap
112
112
 
113
113
  - [x] `NewmanScenario::Scenario.run`
@@ -10,9 +10,10 @@ module NewmanScenario
10
10
  class Scenario
11
11
  DEFAULT_CUSTOM_SCENARIOS_FILE_PATH = 'newman_scenarios.json'.freeze
12
12
  DEFAULT_LAST_SCENARIO_FILE_PATH = '/tmp/last_newman_scenario.json'.freeze
13
+ DEBUG = false
13
14
 
14
15
  @default_collection_id = ENV['NEWMAN_SCENARIO_COLLECTION_ID']
15
- @default_environment_ids = nil
16
+ @default_environments = nil
16
17
  @default_api_key = ENV['POSTMAN_API_KEY']
17
18
  @default_custom_scenarios_file_path = ENV['NEWMAN_SCENARIO_CUSTOM_COLLECTION_FILE_PATH'] || DEFAULT_CUSTOM_SCENARIOS_FILE_PATH
18
19
  @default_last_scenario_file_path = ENV['NEWMAN_SCENARIO_LAST_SCENARIO_FILE_PATH'] || DEFAULT_LAST_SCENARIO_FILE_PATH
@@ -20,21 +21,31 @@ module NewmanScenario
20
21
  class << self
21
22
  attr_accessor :default_api_key
22
23
  attr_accessor :default_collection_id
23
- attr_accessor :default_environment_ids
24
+ attr_accessor :default_environments
24
25
  attr_accessor :default_custom_scenarios_file_path
25
26
  attr_accessor :default_last_scenario_file_path
26
27
 
27
- def configure(default_api_key: nil, default_collection_id: nil, default_environment_ids: nil, default_custom_scenarios_file_path: nil, default_last_scenario_file_path: nil)
28
+ def configure(default_api_key: nil, default_collection_id: nil, default_environments: nil, default_custom_scenarios_file_path: nil, default_last_scenario_file_path: nil)
28
29
  self.default_api_key = default_api_key || prompt.ask('Postman API Key (https://YOURPOSTMAN.postman.co/settings/me/api-keys):', value: ENV['POSTMAN_API_KEY'].to_s)
29
- collections = fetch_postman('/collections', api_key: self.default_api_key).parsed_response&.fetch('collections', nil) || []
30
+ collections = nil
31
+ environments = nil
32
+ if prompt.yes?('Using workspace?')
33
+ workspaces = fetch_postman('/workspaces', api_key: self.default_api_key).parsed_response&.fetch('workspaces', nil) || []
34
+ workspaces = workspaces.map { |workspace| workspace.slice('name', 'id').values }.to_h
35
+ workspace = prompt.select('Workspace', workspaces)
36
+ workspace = fetch_postman("/workspaces/#{workspace}", api_key: self.default_api_key).parsed_response&.fetch('workspace', nil) || {}
37
+ collections = workspace['collections']
38
+ environments = workspace['environments']
39
+ end
40
+ collections ||= fetch_postman('/collections', api_key: self.default_api_key).parsed_response&.fetch('collections', nil) || []
30
41
  collections = collections.map { |collection| collection.slice('name', 'id').values }.to_h
31
42
  self.default_collection_id = default_collection_id || prompt.select('Postman Collection', collections, default: 1)
32
- self.default_environment_ids = default_environment_ids
33
- unless self.default_environment_ids
34
- environments = fetch_postman('/environments', api_key: self.default_api_key).parsed_response&.fetch('environments', nil) || []
43
+ self.default_environments = default_environments
44
+ unless self.default_environments
45
+ environments ||= fetch_postman('/environments', api_key: self.default_api_key).parsed_response&.fetch('environments', nil) || []
35
46
  environments = environments.map { |environment| environment.slice('name', 'id').values }.to_h
36
47
  environment_ids = prompt.multi_select('Postman Collection', environments)
37
- self.default_environment_ids = environments.select { |_, id| environment_ids.include?(id) }
48
+ self.default_environments = environments.select { |_, id| environment_ids.include?(id) }
38
49
  end
39
50
  self.default_custom_scenarios_file_path = default_custom_scenarios_file_path || prompt.ask('Custom scenarios file path:', value: DEFAULT_CUSTOM_SCENARIOS_FILE_PATH)
40
51
  self.default_last_scenario_file_path = default_last_scenario_file_path || prompt.ask('Last scenario file path:', value: DEFAULT_LAST_SCENARIO_FILE_PATH)
@@ -42,7 +53,7 @@ module NewmanScenario
42
53
  envs = {
43
54
  POSTMAN_API_KEY: self.default_api_key,
44
55
  NEWMAN_SCENARIO_COLLECTION_ID: self.default_collection_id,
45
- NEWMAN_SCENARIO_ENVIRONMENTS: self.default_environment_ids.to_json,
56
+ NEWMAN_SCENARIO_ENVIRONMENTS: self.default_environments.to_json,
46
57
  NEWMAN_SCENARIO_CUSTOM_COLLECTION_FILE_PATH: self.default_custom_scenarios_file_path,
47
58
  NEWMAN_SCENARIO_LAST_SCENARIO_FILE_PATH: self.default_last_scenario_file_path,
48
59
  }
@@ -51,7 +62,7 @@ module NewmanScenario
51
62
  existing_lines.each { |line| file.puts line }
52
63
  file.puts "POSTMAN_API_KEY: #{self.default_api_key}"
53
64
  file.puts "NEWMAN_SCENARIO_COLLECTION_ID: #{self.default_collection_id}"
54
- file.puts "NEWMAN_SCENARIO_ENVIRONMENTS: #{self.default_environment_ids.to_json}"
65
+ file.puts "NEWMAN_SCENARIO_ENVIRONMENTS: #{self.default_environments.to_json}"
55
66
  file.puts "NEWMAN_SCENARIO_CUSTOM_COLLECTION_FILE_PATH: #{self.default_custom_scenarios_file_path}"
56
67
  file.puts "NEWMAN_SCENARIO_LAST_SCENARIO_FILE_PATH: #{self.default_last_scenario_file_path}"
57
68
  end
@@ -59,6 +70,7 @@ module NewmanScenario
59
70
  end
60
71
 
61
72
  def fetch_postman(url_path, expected_response_codes: [200], api_key: nil)
73
+ puts "fetching #{url_path}" if DEBUG
62
74
  response = HTTParty.get("https://api.getpostman.com#{url_path}", headers: { 'X-Api-Key' => api_key})
63
75
  raise Error, "Invalid response code: #{response.code}" unless expected_response_codes.include?(response.code)
64
76
 
@@ -73,18 +85,18 @@ module NewmanScenario
73
85
  end
74
86
 
75
87
  attr_accessor :collection_id
76
- attr_accessor :environment_ids
88
+ attr_accessor :environments
77
89
  attr_accessor :api_key
78
90
  attr_accessor :custom_collection_file_path
79
91
  attr_accessor :last_scenario_file_path
80
92
 
81
- def initialize(collection_id: nil, environment_ids: nil, api_key: nil, custom_collection_file_path: nil, last_scenario_file_path: nil)
93
+ def initialize(collection_id: nil, environments: nil, api_key: nil, custom_collection_file_path: nil, last_scenario_file_path: nil)
82
94
  self.collection_id ||= self.class.default_collection_id
83
95
  raise ConfigurationError, 'Missing Collection Id' unless self.collection_id
84
96
 
85
- self.environment_ids ||= self.class.default_environment_ids
86
- self.environment_ids ||= JSON.parse(ENV['NEWMAN_SCENARIO_ENVIRONMENTS'], symbolize_names: true) if ENV['NEWMAN_SCENARIO_ENVIRONMENTS']
87
- raise ConfigurationError, 'Missing Environment Ids' unless self.environment_ids
97
+ self.environments ||= self.class.default_environments
98
+ self.environments ||= JSON.parse(ENV['NEWMAN_SCENARIO_ENVIRONMENTS'], symbolize_names: true) if ENV['NEWMAN_SCENARIO_ENVIRONMENTS']
99
+ raise ConfigurationError, 'Missing Environment Ids' unless self.environments
88
100
 
89
101
  self.api_key ||= self.class.default_api_key
90
102
  raise ConfigurationError, 'Missing Postman API Key' unless self.api_key
@@ -105,8 +117,8 @@ module NewmanScenario
105
117
  def run(environment_name: nil, scenario_name: nil, bail: true, no_prompt: false)
106
118
  return if `which newman`.empty? && !prompt_to_install_newman
107
119
 
108
- environment = environment_ids[environment_name.to_sym] if environment_name
109
- environment ||= prompt.select("Environment", environment_ids, default: 1)
120
+ environment = environments[environment_name.to_sym] if environment_name
121
+ environment ||= prompt.select('Environment', environments, default: 1)
110
122
  load_postman_environment(environment, no_prompt: no_prompt)
111
123
  collection = JSON.parse(File.read("/tmp/postman-collection-#{collection_id}.json"), symbolize_names: true)[:collection]
112
124
  unless File.exist?(last_scenario_file_path) && (!scenario_name && prompt.yes?('Replay last scenario?'))
@@ -123,7 +135,7 @@ module NewmanScenario
123
135
  all_request_names = extract_all_requests.call(collection, '')
124
136
  loop do
125
137
  scenario_requests.delete('duplicate')
126
- scenario_requests += prompt.multi_select("Requests (type to filter prefix, choose duplicate to perform action multiple times)", ['duplicate'] + all_request_names, cycle: true, filter: true)
138
+ scenario_requests += prompt.multi_select('Requests (type to filter prefix, choose duplicate to perform action multiple times)', ['duplicate'] + all_request_names, cycle: true, filter: true)
127
139
  break unless scenario_requests.include?('duplicate')
128
140
 
129
141
  end
@@ -194,7 +206,7 @@ module NewmanScenario
194
206
  if no_prompt
195
207
  false
196
208
  else
197
- !prompt.no?("Refetch postman config?")
209
+ !prompt.no?('Refetch postman config?')
198
210
  end
199
211
  if File.file?("/tmp/postman-environment-#{environment}.json") && !reload
200
212
  prompt.ok "reusing env /tmp/postman-environment-#{environment}.json"
@@ -203,7 +215,7 @@ module NewmanScenario
203
215
  fetch_postman_to_file("/environments/#{environment}", "/tmp/postman-environment-#{environment}.json")
204
216
  end
205
217
  if File.file?('/tmp/postman-collection.json') && !reload
206
- prompt.ok "reusing collection /tmp/postman-collection.json"
218
+ prompt.ok 'reusing collection /tmp/postman-collection.json'
207
219
  else
208
220
  prompt.ok "fetching collection #{collection_id}"
209
221
  fetch_postman_to_file("/collections/#{collection_id}", "/tmp/postman-collection-#{collection_id}.json")
@@ -1,3 +1,3 @@
1
1
  module NewmanScenario
2
- VERSION = "0.1.2"
2
+ VERSION = '0.1.3'
3
3
  end
@@ -1,14 +1,14 @@
1
1
  lib = File.expand_path("lib", __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "newman_scenario/version"
3
+ require 'newman_scenario/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "newman_scenario"
6
+ spec.name = 'newman_scenario'
7
7
  spec.version = NewmanScenario::VERSION
8
- spec.authors = ["Hugues Bernet-Rollande"]
9
- spec.email = ["hugues@xdev.fr"]
8
+ spec.authors = ['Hugues Bernet-Rollande']
9
+ spec.email = ['hugues@xdev.fr']
10
10
 
11
- spec.summary = "Allow to run re-usable collection of requests using newman"
11
+ spec.summary = 'Allow to run re-usable collection of requests using newman'
12
12
  spec.description = <<~EOF
13
13
  Postman doesn't support re-using the same requests in multiple scenario.
14
14
  Duplicating request will make it hard to maintain them.
@@ -18,29 +18,29 @@ Gem::Specification.new do |spec|
18
18
 
19
19
  NewmanScenario try to fill this gap.
20
20
  EOF
21
- spec.homepage = "https://github.com/huguesbr/newman_scenario"
22
- spec.license = "MIT"
21
+ spec.homepage = 'https://github.com/huguesbr/newman_scenario'
22
+ spec.license = 'MIT'
23
23
 
24
- spec.metadata["homepage_uri"] = spec.homepage
25
- spec.metadata["source_code_uri"] = "https://github.com/huguesbr/newman_scenario"
26
- spec.metadata["changelog_uri"] = "https://github.com/huguesbr/newman_scenario/README.md"
24
+ spec.metadata['homepage_uri'] = spec.homepage
25
+ spec.metadata['source_code_uri'] = 'https://github.com/huguesbr/newman_scenario'
26
+ spec.metadata['changelog_uri'] = 'https://github.com/huguesbr/newman_scenario/README.md'
27
27
 
28
28
  # Specify which files should be added to the gem when it is released.
29
29
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
30
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
31
31
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
32
  end
33
- spec.bindir = "bin"
33
+ spec.bindir = 'bin'
34
34
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
- spec.require_paths = ["lib"]
36
- spec.executables = ["newman_scenario"]
35
+ spec.require_paths = ['lib']
36
+ spec.executables = ['newman_scenario']
37
37
 
38
38
  spec.add_dependency 'tty-prompt', '0.19.0'
39
39
  spec.add_dependency 'httparty', '0.16.2'
40
40
  spec.add_dependency 'thor', '1.0.1'
41
41
  spec.add_dependency 'dotenv', '2.7.5'
42
42
 
43
- spec.add_development_dependency "bundler", "~> 2.0"
44
- spec.add_development_dependency "rake", "~> 10.0"
45
- spec.add_development_dependency "rspec", "~> 3.0"
43
+ spec.add_development_dependency 'bundler', '~> 2.0'
44
+ spec.add_development_dependency 'rake', '~> 12.3'
45
+ spec.add_development_dependency 'rspec', '~> 3.0'
46
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newman_scenario
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hugues Bernet-Rollande
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '12.3'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
96
+ version: '12.3'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement