Skip to content

Commit 30a5138

Browse files
authored
Merge pull request #51 from truemail-rb/develop
truemail-client v0.5.2
2 parents 8450137 + 1c31aae commit 30a5138

File tree

13 files changed

+135
-110
lines changed

13 files changed

+135
-110
lines changed

.circleci/gemspecs/latest

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ Gem::Specification.new do |spec|
2828

2929
spec.add_development_dependency 'bundler-audit', '~> 0.9.1'
3030
spec.add_development_dependency 'fasterer', '~> 0.10.1'
31-
spec.add_development_dependency 'ffaker', '~> 2.21'
31+
spec.add_development_dependency 'ffaker', '~> 2.23'
3232
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
3333
spec.add_development_dependency 'pry-byebug', '~> 3.10', '>= 3.10.1'
34-
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
34+
spec.add_development_dependency 'rake', '~> 13.1'
3535
spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.4'
3636
spec.add_development_dependency 'rspec', '~> 3.12'
37-
spec.add_development_dependency 'rubocop', '~> 1.56'
38-
spec.add_development_dependency 'rubocop-performance', '~> 1.19'
39-
spec.add_development_dependency 'rubocop-rspec', '~> 2.23', '>= 2.23.2'
37+
spec.add_development_dependency 'rubocop', '~> 1.57', '>= 1.57.2'
38+
spec.add_development_dependency 'rubocop-performance', '~> 1.19', '>= 1.19.1'
39+
spec.add_development_dependency 'rubocop-rspec', '~> 2.25'
4040
spec.add_development_dependency 'simplecov', '~> 0.22.0'
41-
spec.add_development_dependency 'webmock', '~> 3.18', '>= 3.18.1'
41+
spec.add_development_dependency 'webmock', '~> 3.19', '>= 3.19.1'
4242
end

.codeclimate.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ checks:
99
plugins:
1010
rubocop:
1111
enabled: true
12-
channel: rubocop-1-56
12+
channel: rubocop-1-57
1313
config:
1414
file: .circleci/linter_configs/.rubocop.yml
1515

.reek.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ detectors:
2121

2222
exclude_paths:
2323
- spec/support/helpers
24+
- spec/truemail/client/rspec_helper

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
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).
44

5+
## [0.5.2] - 2023-11-08
6+
7+
### Updated
8+
9+
- Updated development dependencies
10+
- Updated gemspecs
11+
- Updated `reek`/`codeclimate` configs
12+
- Updated gem version
13+
514
## [0.5.1] - 2023-08-14
615

716
### Updated

lib/truemail/client/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
module Truemail
44
module Client
5-
VERSION = '0.5.1'
5+
VERSION = '0.5.2'
66
end
77
end

spec/spec_helper.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
mocks.verify_partial_doubles = true
1616
end
1717

18-
config.include ConfigurationHelper
19-
config.include RequestHelper
18+
config.include Truemail::Client::RspecHelper::Configuration
19+
config.include Truemail::Client::RspecHelper::Request
2020
config.example_status_persistence_file_path = '.rspec_status'
2121
config.disable_monkey_patching!
2222
config.order = :random

spec/support/helpers/configuration.rb

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# frozen_string_literal: true
2+
3+
require 'securerandom'
4+
5+
module Truemail
6+
module Client
7+
module RspecHelper
8+
module Configuration
9+
def configuration_block(**configuration_settings)
10+
lambda do |config|
11+
configuration_settings.each do |attribute, value|
12+
config.public_send(:"#{attribute}=", value)
13+
end
14+
end
15+
end
16+
17+
def create_token
18+
::SecureRandom.uuid
19+
end
20+
21+
def configure_client(**configuration_settings)
22+
Truemail::Client.reset_configuration!
23+
configuration_settings[:host] = FFaker::Internet.domain_name unless configuration_settings[:host]
24+
configuration_settings[:token] = create_token unless configuration_settings[:token]
25+
Truemail::Client.configure(&configuration_block(**configuration_settings))
26+
end
27+
28+
def client_configuration
29+
Truemail::Client.configuration
30+
end
31+
end
32+
end
33+
end
34+
end

spec/support/helpers/configuration_helper.rb

Lines changed: 0 additions & 28 deletions
This file was deleted.

spec/support/helpers/request.rb

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# frozen_string_literal: true
2+
3+
module Truemail
4+
module Client
5+
module RspecHelper
6+
module Request
7+
def have_sent_request_with(**request_settings) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
8+
request = Truemail::Client::RspecHelper::Request::Request.new(**request_settings)
9+
10+
Truemail::Client::RspecHelper::Request::HOST_PARAMS.each do |attribute|
11+
request.public_send(:"#{attribute}=", request_settings[attribute] || client_configuration.public_send(attribute))
12+
end
13+
14+
authorization = request.type.eql?(:public) ? {} : { 'Authorization' => request.token }
15+
request_params = request.params
16+
path = ::URI::HTTP.build(
17+
path: request.endpoint,
18+
query: request_params.empty? ? nil : ::URI.encode_www_form(request_params)
19+
).request_uri
20+
21+
url = "#{request.secure_connection ? 'https' : 'http'}://#{request.host}:#{request.port}#{path}"
22+
23+
stub_request(request.method, url).with(
24+
headers: {
25+
'Accept' => request.accept,
26+
'Content-Type' => request.content_type,
27+
'Host' => "#{request.host}:#{request.port}",
28+
'User-Agent' => request.user_agent
29+
}.merge(authorization)
30+
).to_return(response(**request_params))
31+
end
32+
33+
private
34+
35+
HOST_PARAMS = %i[secure_connection host port token].freeze
36+
REQUEST_PARAMS = %i[method accept content_type user_agent endpoint type params].freeze
37+
Request = ::Struct.new(*(HOST_PARAMS | REQUEST_PARAMS), keyword_init: true)
38+
39+
def body(email) # rubocop:disable Metrics/MethodLength
40+
{
41+
configuration: {
42+
blacklisted_domains: nil,
43+
blacklisted_mx_ip_addresses: nil,
44+
dns: nil,
45+
email_pattern: 'default gem value',
46+
smtp_error_body_pattern: 'default gem value',
47+
smtp_safe_check: true,
48+
validation_type_by_domain: nil,
49+
whitelist_validation: false,
50+
whitelisted_domains: nil,
51+
not_rfc_mx_lookup_flow: false
52+
},
53+
date: ::Time.now,
54+
email: email,
55+
errors: nil,
56+
smtp_debug: nil,
57+
success: true,
58+
validation_type: 'smtp'
59+
}.to_json
60+
end
61+
62+
def response(email: nil, **)
63+
{
64+
status: 200,
65+
body: email ? body(email) : '',
66+
headers: {}
67+
}
68+
end
69+
end
70+
end
71+
end
72+
end

spec/support/helpers/request_helper.rb

Lines changed: 0 additions & 66 deletions
This file was deleted.

spec/support/helpers/configuration_helper_spec.rb renamed to spec/truemail/client/rspec_helper/configuration_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
RSpec.describe ConfigurationHelper, type: :helper do
3+
RSpec.describe Truemail::Client::RspecHelper::Configuration, type: :helper do
44
describe '#configuration_block' do
55
let(:configuration_params) { { param_1: 1, param_2: 2 } }
66
let(:configuration_instance) { ::Struct.new(*configuration_params.keys).new }

spec/support/helpers/request_helper_spec.rb renamed to spec/truemail/client/rspec_helper/request_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
RSpec.describe RequestHelper, type: :helper do
3+
RSpec.describe Truemail::Client::RspecHelper::Request, type: :helper do
44
describe '#have_sent_request_with' do
55
let(:secure_connection) { true }
66
let(:host) { FFaker::Internet.domain_name }

truemail-client.gemspec

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ Gem::Specification.new do |spec|
2222
'bug_tracker_uri' => 'https://github.com/truemail-rb/truemail-ruby-client/issues'
2323
}
2424

25+
current_ruby_version = ::Gem::Version.new(::RUBY_VERSION)
26+
ffaker_version = current_ruby_version >= ::Gem::Version.new('3.0.0') ? '~> 2.23' : '~> 2.21'
27+
2528
spec.required_ruby_version = '>= 2.5.0'
26-
spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib)/|.ruby-version|truemail.gemspec|LICENSE}) }
29+
spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib)/|.ruby-version|truemail-client.gemspec|LICENSE}) }
2730
spec.require_paths = %w[lib]
2831

29-
spec.add_development_dependency 'ffaker', '~> 2.21'
32+
spec.add_development_dependency 'ffaker', ffaker_version
3033
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
31-
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
34+
spec.add_development_dependency 'rake', '~> 13.1'
3235
spec.add_development_dependency 'rspec', '~> 3.12'
33-
spec.add_development_dependency 'webmock', '~> 3.18', '>= 3.18.1'
36+
spec.add_development_dependency 'webmock', '~> 3.19', '>= 3.19.1'
3437
end

0 commit comments

Comments
 (0)