From de1c294d70c61bde323b7c2028c21b03c022d250 Mon Sep 17 00:00:00 2001 From: Chris Butler Date: Tue, 1 May 2018 10:29:47 -0400 Subject: [PATCH 1/2] fix rubocop linting issues --- .rubocop.yml | 2 ++ lib/cli.rb | 2 +- lib/mockserver/model/enum.rb | 8 ++++++++ lib/mockserver/model/expectation.rb | 12 ++++++------ lib/mockserver/model/forward.rb | 2 +- lib/mockserver/model/request.rb | 9 +++------ lib/mockserver/model/response.rb | 2 +- lib/mockserver/model/times.rb | 2 +- lib/mockserver/utility_methods.rb | 3 ++- mockserver-client.gemspec | 13 +++++++------ spec/integration/mock_client_integration_spec.rb | 1 + spec/mockserver/builder_spec.rb | 1 + spec/mockserver/mock_client_spec.rb | 1 + spec/mockserver/model/dsl_spec.rb | 1 + 14 files changed, 36 insertions(+), 23 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index c981028..b92f36d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -5,6 +5,8 @@ AllCops: Exclude: - Gemfile +Style/Encoding: + Enabled: false Style/SymbolArray: EnforcedStyle: brackets Style/LineLength: diff --git a/lib/cli.rb b/lib/cli.rb index f642fad..c84cf2f 100644 --- a/lib/cli.rb +++ b/lib/cli.rb @@ -51,7 +51,7 @@ def to_struct(hash) # @param mockserver [Boolean] true to use mockserver, false to use proxy # @yieldparam [AbstractClient] a mockserver or a proxy client # @yieldparam [Struct] a struct created from options hash - def execute_command(mockserver = false, data_required = false, error_msg = '--data option must be provided', &_) + def execute_command(mockserver = false, data_required = false, error_msg = '--data option must be provided', &_arg) print_parameters(options) struct_options = to_struct({ data: nil }.merge(options)) if data_required && !options['data'] diff --git a/lib/mockserver/model/enum.rb b/lib/mockserver/model/enum.rb index efe45d5..9c5e60c 100644 --- a/lib/mockserver/model/enum.rb +++ b/lib/mockserver/model/enum.rb @@ -35,6 +35,14 @@ def pre_process_value(value) def to_s @value.to_s end + + def as_json(_arg) + @value.to_s + end + + def to_json(_arg) + "\"#{@value}\"" + end end # Subclass of Enum that has a list of symbols as allowed values. diff --git a/lib/mockserver/model/expectation.rb b/lib/mockserver/model/expectation.rb index 1d67242..3ae418e 100644 --- a/lib/mockserver/model/expectation.rb +++ b/lib/mockserver/model/expectation.rb @@ -46,7 +46,7 @@ def populate_from_payload(payload) # Method to setup the request on the expectation object # @yieldparam [Request] the request that this expectation references # @return [Expectation] this object according to the the builder pattern - def request(&_) + def request(&_arg) if block_given? @request ||= Request.new yield @request @@ -57,7 +57,7 @@ def request(&_) # Method to setup the response on the expectation object # @yieldparam [Response] the response that this expectation references # @return [Expectation] this object according to the the builder pattern - def response(&_) + def response(&_arg) if block_given? @response ||= Response.new yield @response @@ -68,7 +68,7 @@ def response(&_) # Method to setup the request on the expectation object # @yieldparam [Forward] the forward object that this expectation references # @return [Expectation] this object according to the the builder pattern - def forward(&_) + def forward(&_arg) if block_given? @forward ||= Forward.new yield @forward @@ -96,8 +96,8 @@ def forward=(forward) # Override to_json method # @return [String] the json representation for this object - def to_json(*p) - to_hash.to_json(*p) + def to_json(*param) + to_hash.to_json(*param) end # Convert to hash @@ -124,7 +124,7 @@ def child_class # DSL method for creating expectation module DSL - def expectation(&_) + def expectation(&_arg) expectation = Expectation.new yield expectation if block_given? expectation diff --git a/lib/mockserver/model/forward.rb b/lib/mockserver/model/forward.rb index 15df4d4..62dd501 100644 --- a/lib/mockserver/model/forward.rb +++ b/lib/mockserver/model/forward.rb @@ -32,7 +32,7 @@ class Forward < Hashie::Dash # DSL methods for forward module DSL - def forward(&_) + def forward(&_arg) obj = Forward.new yield obj if block_given? obj diff --git a/lib/mockserver/model/request.rb b/lib/mockserver/model/request.rb index c0ef766..1aec688 100644 --- a/lib/mockserver/model/request.rb +++ b/lib/mockserver/model/request.rb @@ -32,11 +32,10 @@ class Request < Hashie::Trash property :cookies, default: Cookies.new([]) property :headers, default: Headers.new([]) property :body, transform_with: (lambda do |body| - if body && body.type.to_s == 'BINARY' + if body&.type&.to_s == 'BINARY' body.type = :STRING body.value = Base64.decode64(body.value) end - body end) @@ -67,7 +66,7 @@ def child_class # DSL methods related to requests module DSL - def request(method, path, &_) + def request(method, path, &_arg) obj = Request.new(method: method, path: path) yield obj if block_given? obj @@ -76,9 +75,7 @@ def request(method, path, &_) def request_from_json(payload) body = payload['body'] - if body && body.is_a?(String) - payload['body'] = { 'type' => :STRING, 'value' => body } - end + payload['body'] = { 'type' => :STRING, 'value' => body } if body&.is_a?(String) request = Request.new(symbolize_keys(payload)) yield request if block_given? diff --git a/lib/mockserver/model/response.rb b/lib/mockserver/model/response.rb index ad56432..1881e64 100644 --- a/lib/mockserver/model/response.rb +++ b/lib/mockserver/model/response.rb @@ -32,7 +32,7 @@ class Response < Hashie::Dash # DSL Methods for a response module DSL - def response(&_) + def response(&_arg) obj = Response.new yield obj if block_given? obj diff --git a/lib/mockserver/model/times.rb b/lib/mockserver/model/times.rb index c9029f2..6a030a4 100644 --- a/lib/mockserver/model/times.rb +++ b/lib/mockserver/model/times.rb @@ -54,7 +54,7 @@ def at_least(num) Times.new(remaining_times: num, unlimited: true) end - def times(&_) + def times(&_arg) obj = once yield obj if block_given? obj diff --git a/lib/mockserver/utility_methods.rb b/lib/mockserver/utility_methods.rb index 0fdc2de..61f8739 100644 --- a/lib/mockserver/utility_methods.rb +++ b/lib/mockserver/utility_methods.rb @@ -16,7 +16,7 @@ module MockServer::UtilityMethods # @return [Hash] the transformed hash # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength def camelized_hash(obj) - obj = obj && obj.respond_to?(:to_hash) ? obj.to_hash : obj + obj = obj&.respond_to?(:to_hash) ? obj.to_hash : obj if obj.is_a?(Hash) obj.each_with_object({}) do |(k, v), acc| @@ -58,3 +58,4 @@ def parse_string_to_json(response) response end end +# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength diff --git a/mockserver-client.gemspec b/mockserver-client.gemspec index 4fb1886..89cc8ef 100644 --- a/mockserver-client.gemspec +++ b/mockserver-client.gemspec @@ -1,7 +1,6 @@ -# coding: utf-8 # frozen_string_literal: true -lib = File.expand_path('../lib', __FILE__) +lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'mockserver/version' @@ -14,8 +13,8 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength spec.summary = 'A Ruby client for MockServer' spec.description = 'A Ruby Client for MockServer that enables easy mocking of any system you integrate with via HTTP or HTTPS (i.e. services, web sites, etc)' - spec.required_ruby_version = '>= 2.0' - spec.required_rubygems_version = '~> 2.0' + spec.required_ruby_version = '>= 2.3' + spec.required_rubygems_version = '~> 2.3' spec.files = `git ls-files -z`.split("\x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } @@ -25,16 +24,18 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength spec.add_development_dependency 'bundler', '~> 1' spec.add_development_dependency 'rake', '~> 10.3' spec.add_development_dependency 'rspec', '~> 3.0' + spec.add_development_dependency 'rubocop', '~> 0.23' spec.add_development_dependency 'simplecov', '~> 0.8' spec.add_development_dependency 'webmock' - spec.add_development_dependency 'rubocop', '~> 0.23' + spec.add_dependency 'activesupport', '>= 4.1' + spec.add_dependency 'colorize', '~> 0.7' spec.add_dependency 'hashie', '~> 3.0' spec.add_dependency 'json', '~> 1.8' spec.add_dependency 'json_pure', '~> 1.8' spec.add_dependency 'activesupport', '~> 4.1' spec.add_dependency 'rest-client' spec.add_dependency 'logging_factory', '~> 0.0.2' + spec.add_dependency 'rest-client', '>= 1.7' spec.add_dependency 'thor', '~> 0.19' - spec.add_dependency 'colorize', '~> 0.7' end diff --git a/spec/integration/mock_client_integration_spec.rb b/spec/integration/mock_client_integration_spec.rb index 9aa9554..64fd0a9 100644 --- a/spec/integration/mock_client_integration_spec.rb +++ b/spec/integration/mock_client_integration_spec.rb @@ -170,3 +170,4 @@ def setup_request(request) it_behaves_like 'a successful mock response' end end +# rubocop:enable Metrics/BlockLength diff --git a/spec/mockserver/builder_spec.rb b/spec/mockserver/builder_spec.rb index 50112ac..92838c8 100644 --- a/spec/mockserver/builder_spec.rb +++ b/spec/mockserver/builder_spec.rb @@ -135,3 +135,4 @@ end end end +# rubocop:enable Metrics/BlockLength diff --git a/spec/mockserver/mock_client_spec.rb b/spec/mockserver/mock_client_spec.rb index 48d9c46..3d0d4ce 100644 --- a/spec/mockserver/mock_client_spec.rb +++ b/spec/mockserver/mock_client_spec.rb @@ -79,3 +79,4 @@ expect(client.retrieve(request(:POST, '/login')).code).to eq(200) end end +# rubocop:enable Metrics/BlockLength diff --git a/spec/mockserver/model/dsl_spec.rb b/spec/mockserver/model/dsl_spec.rb index 15b454d..364eaa8 100644 --- a/spec/mockserver/model/dsl_spec.rb +++ b/spec/mockserver/model/dsl_spec.rb @@ -51,3 +51,4 @@ end end end +# rubocop:enable Metrics/BlockLength From 1e92693ea9c311af8f49dec025d493b644aa7701 Mon Sep 17 00:00:00 2001 From: Christopher Dwan Date: Thu, 20 Oct 2016 10:24:31 -0700 Subject: [PATCH 2/2] Update json requirements to work with a Rails 5 project - Locking the json to an old version seems uneccessary - Forcing multi_json and json_pure monkeypatching broke our test suite - removed the json_pure and so far so good --- Rakefile | 2 +- lib/mockserver-client.rb | 14 -------------- mockserver-client.gemspec | 5 +---- 3 files changed, 2 insertions(+), 19 deletions(-) diff --git a/Rakefile b/Rakefile index 13c06f9..711f856 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,5 @@ -# frozen_string_literal: true # encoding: UTF-8 +# frozen_string_literal: true require 'bundler/gem_tasks' require 'rubocop/rake_task' diff --git a/lib/mockserver-client.rb b/lib/mockserver-client.rb index 2bc84ed..2f12def 100644 --- a/lib/mockserver-client.rb +++ b/lib/mockserver-client.rb @@ -4,17 +4,3 @@ require_relative './mockserver/version' require_relative './mockserver/mock_server_client' require_relative './mockserver/proxy_client' - -# Setup serialization correctly with multi_json -require 'json/pure' - -# To fix serialization bugs. See: http://prettystatemachine.blogspot.com/2010/09/typeerrors-in-tojson-make-me-briefly.html -# rubocop:disable Lint/UnifiedInteger -class Fixnum - def to_json(_) - to_s - end -end - -require 'multi_json' -MultiJson.use(:json_pure) diff --git a/mockserver-client.gemspec b/mockserver-client.gemspec index 89cc8ef..c838c5b 100644 --- a/mockserver-client.gemspec +++ b/mockserver-client.gemspec @@ -31,10 +31,7 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength spec.add_dependency 'activesupport', '>= 4.1' spec.add_dependency 'colorize', '~> 0.7' spec.add_dependency 'hashie', '~> 3.0' - spec.add_dependency 'json', '~> 1.8' - spec.add_dependency 'json_pure', '~> 1.8' - spec.add_dependency 'activesupport', '~> 4.1' - spec.add_dependency 'rest-client' + spec.add_dependency 'json', '>= 1.8' spec.add_dependency 'logging_factory', '~> 0.0.2' spec.add_dependency 'rest-client', '>= 1.7' spec.add_dependency 'thor', '~> 0.19'