Skip to content

Commit

Permalink
Merge pull request #51 from truemail-rb/develop
Browse files Browse the repository at this point in the history
truemail-client v0.5.2
  • Loading branch information
bestwebua authored Nov 8, 2023
2 parents 8450137 + 1c31aae commit 30a5138
Show file tree
Hide file tree
Showing 13 changed files with 135 additions and 110 deletions.
12 changes: 6 additions & 6 deletions .circleci/gemspecs/latest
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ Gem::Specification.new do |spec|

spec.add_development_dependency 'bundler-audit', '~> 0.9.1'
spec.add_development_dependency 'fasterer', '~> 0.10.1'
spec.add_development_dependency 'ffaker', '~> 2.21'
spec.add_development_dependency 'ffaker', '~> 2.23'
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
spec.add_development_dependency 'pry-byebug', '~> 3.10', '>= 3.10.1'
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
spec.add_development_dependency 'rake', '~> 13.1'
spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.4'
spec.add_development_dependency 'rspec', '~> 3.12'
spec.add_development_dependency 'rubocop', '~> 1.56'
spec.add_development_dependency 'rubocop-performance', '~> 1.19'
spec.add_development_dependency 'rubocop-rspec', '~> 2.23', '>= 2.23.2'
spec.add_development_dependency 'rubocop', '~> 1.57', '>= 1.57.2'
spec.add_development_dependency 'rubocop-performance', '~> 1.19', '>= 1.19.1'
spec.add_development_dependency 'rubocop-rspec', '~> 2.25'
spec.add_development_dependency 'simplecov', '~> 0.22.0'
spec.add_development_dependency 'webmock', '~> 3.18', '>= 3.18.1'
spec.add_development_dependency 'webmock', '~> 3.19', '>= 3.19.1'
end
2 changes: 1 addition & 1 deletion .codeclimate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ checks:
plugins:
rubocop:
enabled: true
channel: rubocop-1-56
channel: rubocop-1-57
config:
file: .circleci/linter_configs/.rubocop.yml

Expand Down
1 change: 1 addition & 0 deletions .reek.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ detectors:

exclude_paths:
- spec/support/helpers
- spec/truemail/client/rspec_helper
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.2] - 2023-11-08

### Updated

- Updated development dependencies
- Updated gemspecs
- Updated `reek`/`codeclimate` configs
- Updated gem version

## [0.5.1] - 2023-08-14

### Updated
Expand Down
2 changes: 1 addition & 1 deletion lib/truemail/client/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

module Truemail
module Client
VERSION = '0.5.1'
VERSION = '0.5.2'
end
end
4 changes: 2 additions & 2 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
mocks.verify_partial_doubles = true
end

config.include ConfigurationHelper
config.include RequestHelper
config.include Truemail::Client::RspecHelper::Configuration
config.include Truemail::Client::RspecHelper::Request
config.example_status_persistence_file_path = '.rspec_status'
config.disable_monkey_patching!
config.order = :random
Expand Down
34 changes: 34 additions & 0 deletions spec/support/helpers/configuration.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# frozen_string_literal: true

require 'securerandom'

module Truemail
module Client
module RspecHelper
module Configuration
def configuration_block(**configuration_settings)
lambda do |config|
configuration_settings.each do |attribute, value|
config.public_send(:"#{attribute}=", value)
end
end
end

def create_token
::SecureRandom.uuid
end

def configure_client(**configuration_settings)
Truemail::Client.reset_configuration!
configuration_settings[:host] = FFaker::Internet.domain_name unless configuration_settings[:host]
configuration_settings[:token] = create_token unless configuration_settings[:token]
Truemail::Client.configure(&configuration_block(**configuration_settings))
end

def client_configuration
Truemail::Client.configuration
end
end
end
end
end
28 changes: 0 additions & 28 deletions spec/support/helpers/configuration_helper.rb

This file was deleted.

72 changes: 72 additions & 0 deletions spec/support/helpers/request.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# frozen_string_literal: true

module Truemail
module Client
module RspecHelper
module Request
def have_sent_request_with(**request_settings) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
request = Truemail::Client::RspecHelper::Request::Request.new(**request_settings)

Truemail::Client::RspecHelper::Request::HOST_PARAMS.each do |attribute|
request.public_send(:"#{attribute}=", request_settings[attribute] || client_configuration.public_send(attribute))
end

authorization = request.type.eql?(:public) ? {} : { 'Authorization' => request.token }
request_params = request.params
path = ::URI::HTTP.build(
path: request.endpoint,
query: request_params.empty? ? nil : ::URI.encode_www_form(request_params)
).request_uri

url = "#{request.secure_connection ? 'https' : 'http'}://#{request.host}:#{request.port}#{path}"

stub_request(request.method, url).with(
headers: {
'Accept' => request.accept,
'Content-Type' => request.content_type,
'Host' => "#{request.host}:#{request.port}",
'User-Agent' => request.user_agent
}.merge(authorization)
).to_return(response(**request_params))
end

private

HOST_PARAMS = %i[secure_connection host port token].freeze
REQUEST_PARAMS = %i[method accept content_type user_agent endpoint type params].freeze
Request = ::Struct.new(*(HOST_PARAMS | REQUEST_PARAMS), keyword_init: true)

def body(email) # rubocop:disable Metrics/MethodLength
{
configuration: {
blacklisted_domains: nil,
blacklisted_mx_ip_addresses: nil,
dns: nil,
email_pattern: 'default gem value',
smtp_error_body_pattern: 'default gem value',
smtp_safe_check: true,
validation_type_by_domain: nil,
whitelist_validation: false,
whitelisted_domains: nil,
not_rfc_mx_lookup_flow: false
},
date: ::Time.now,
email: email,
errors: nil,
smtp_debug: nil,
success: true,
validation_type: 'smtp'
}.to_json
end

def response(email: nil, **)
{
status: 200,
body: email ? body(email) : '',
headers: {}
}
end
end
end
end
end
66 changes: 0 additions & 66 deletions spec/support/helpers/request_helper.rb

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

RSpec.describe ConfigurationHelper, type: :helper do
RSpec.describe Truemail::Client::RspecHelper::Configuration, type: :helper do
describe '#configuration_block' do
let(:configuration_params) { { param_1: 1, param_2: 2 } }
let(:configuration_instance) { ::Struct.new(*configuration_params.keys).new }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

RSpec.describe RequestHelper, type: :helper do
RSpec.describe Truemail::Client::RspecHelper::Request, type: :helper do
describe '#have_sent_request_with' do
let(:secure_connection) { true }
let(:host) { FFaker::Internet.domain_name }
Expand Down
11 changes: 7 additions & 4 deletions truemail-client.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,16 @@ Gem::Specification.new do |spec|
'bug_tracker_uri' => 'https://github.com/truemail-rb/truemail-ruby-client/issues'
}

current_ruby_version = ::Gem::Version.new(::RUBY_VERSION)
ffaker_version = current_ruby_version >= ::Gem::Version.new('3.0.0') ? '~> 2.23' : '~> 2.21'

spec.required_ruby_version = '>= 2.5.0'
spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib)/|.ruby-version|truemail.gemspec|LICENSE}) }
spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib)/|.ruby-version|truemail-client.gemspec|LICENSE}) }
spec.require_paths = %w[lib]

spec.add_development_dependency 'ffaker', '~> 2.21'
spec.add_development_dependency 'ffaker', ffaker_version
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
spec.add_development_dependency 'rake', '~> 13.1'
spec.add_development_dependency 'rspec', '~> 3.12'
spec.add_development_dependency 'webmock', '~> 3.18', '>= 3.18.1'
spec.add_development_dependency 'webmock', '~> 3.19', '>= 3.19.1'
end

0 comments on commit 30a5138

Please sign in to comment.