From c6e055ab6c0c77c4707b77f0f17a2df28d6c1ae3 Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Mon, 16 Jan 2023 22:32:19 +0100 Subject: [PATCH 1/7] Technical/Update CircleCI config (#72) * Added checking of default gemspec config * Update CircleCI config --- .circleci/config.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6b58974..88c8624 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -163,6 +163,20 @@ jobs: name: Running compatibility tests command: bundle exec rspec + rubygems-deps-ruby: + parameters: + ruby-version: + type: string + + <<: *defaults + + steps: + - checkout + + - run: + name: Building rubygems dependencies from default gemspec on minimal Ruby version + command: bundle install + releasing-gem-from-ruby: parameters: ruby-version: @@ -196,11 +210,16 @@ workflows: matrix: parameters: ruby-version: ["2.5", "2.6", "2.7", "3.0", "3.1"] + - rubygems-deps-ruby: + matrix: + parameters: + ruby-version: ["2.5"] - releasing-gem-from-ruby: requires: - linters-ruby - tests-ruby - compatibility-ruby + - rubygems-deps-ruby matrix: parameters: ruby-version: ["2.5"] From fe4d0a1cba796a3724932ee25e8b2fed1138189d Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Sun, 22 Jan 2023 17:28:26 +0100 Subject: [PATCH 2/7] Technical/Update CircleCI config (#73) --- .circleci/config.yml | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 88c8624..6fe2e54 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,13 +11,6 @@ orbs: ruby: circleci/ruby@2.0.0 references: - restore_bundle_cache: &restore_bundle_cache - restore_cache: - keys: - - ruby-smtp-mock-{{ checksum "smtp_mock.gemspec" }} - paths: - - ~/vendor/bundle - bundle_install: &bundle_install run: name: Installing gems @@ -25,17 +18,10 @@ references: bundle config set --local path '~/vendor/bundle' bundle install - save_bundle_cache: &save_bundle_cache - save_cache: - key: ruby-smtp-mock-{{ checksum "smtp_mock.gemspec" }} - paths: - - ~/vendor/bundle - - system_dependencies: &system_dependencies + install_system_dependencies: &install_system_dependencies run: - name: Installing system requirements - command: | - bundle exec smtp_mock -s -i ~ + name: Installing system dependencies + command: bundle exec smtp_mock -s -i ~ install_linters: &install_linters run: @@ -55,6 +41,11 @@ references: curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter chmod +x ./cc-test-reporter + use_latest_bundler: &use_latest_bundler + run: + name: Using latest bundler + command: gem install bundler + use_latest_gemspec: &use_latest_gemspec run: name: Using latest gemspec @@ -76,10 +67,9 @@ jobs: steps: - checkout + - <<: *use_latest_bundler - <<: *use_latest_gemspec - - <<: *restore_bundle_cache - <<: *bundle_install - - <<: *save_bundle_cache - <<: *install_linters - run: @@ -112,11 +102,10 @@ jobs: steps: - checkout + - <<: *use_latest_bundler - <<: *use_latest_gemspec - - <<: *restore_bundle_cache - <<: *bundle_install - - <<: *save_bundle_cache - - <<: *system_dependencies + - <<: *install_system_dependencies - <<: *install_codeclimate_reporter - run: @@ -157,7 +146,7 @@ jobs: with-cache: false path: '~/vendor/custom_bundle' - - <<: *system_dependencies + - <<: *install_system_dependencies - run: name: Running compatibility tests From b6c51f45286c680ed32a1bc62316fb4d7da3becb Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Thu, 26 Jan 2023 13:06:46 +0100 Subject: [PATCH 3/7] Technical/Update default gemspec (#74) --- smtp_mock.gemspec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/smtp_mock.gemspec b/smtp_mock.gemspec index dfd0a3e..523d388 100644 --- a/smtp_mock.gemspec +++ b/smtp_mock.gemspec @@ -22,7 +22,8 @@ Gem::Specification.new do |spec| 'bug_tracker_uri' => 'https://github.com/mocktools/ruby-smtp-mock/issues' } - dry_struct_version = ::Gem::Version.new(::RUBY_VERSION) >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4' + current_ruby_version = ::Gem::Version.new(::RUBY_VERSION) + dry_struct_version = current_ruby_version >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4' spec.required_ruby_version = '>= 2.5.0' spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib|tmp)/|.ruby-version|smtp_mock.gemspec|LICENSE}) } @@ -33,6 +34,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'dry-struct', dry_struct_version spec.add_development_dependency 'ffaker', '~> 2.21' + spec.add_development_dependency 'net-smtp', '~> 0.3.3' if current_ruby_version >= ::Gem::Version.new('3.1.0') spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6' spec.add_development_dependency 'rspec', '~> 3.12' end From e2ed32f7ba182dda37809668e94b684e250e140b Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Thu, 17 Aug 2023 23:52:10 +0200 Subject: [PATCH 4/7] Technical/Update CircleCI Ruby image (#75) * Updated CircleCI config * Updated rubocop config * Fixed rubocop issues * Fixed markdownlint issues --- .circleci/config.yml | 2 +- .circleci/linter_configs/.rubocop.yml | 3 +++ CODE_OF_CONDUCT.md | 2 +- lib/smtp_mock/cli/resolver.rb | 2 +- lib/smtp_mock/test_framework/rspec.rb | 4 ++-- lib/smtp_mock/test_framework/rspec/helper.rb | 2 +- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6fe2e54..b472f74 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,7 +8,7 @@ defaults: &defaults - image: cimg/ruby:<< parameters.ruby-version >> orbs: - ruby: circleci/ruby@2.0.0 + ruby: circleci/ruby@2.1.0 references: bundle_install: &bundle_install diff --git a/.circleci/linter_configs/.rubocop.yml b/.circleci/linter_configs/.rubocop.yml index 26ed510..fec78fe 100644 --- a/.circleci/linter_configs/.rubocop.yml +++ b/.circleci/linter_configs/.rubocop.yml @@ -88,6 +88,9 @@ Layout/EmptyLineAfterGuardClause: Gemspec/RequireMFA: Enabled: false +Gemspec/DevelopmentDependencies: + Enabled: false + # Performance ----------------------------------------------------------------- Performance/MethodObjectAsBlock: diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f2ffd6f..65624b3 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -55,7 +55,7 @@ further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at admin@bestweb.com.ua. All +reported by contacting the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. diff --git a/lib/smtp_mock/cli/resolver.rb b/lib/smtp_mock/cli/resolver.rb index 76bfcfc..72a04ec 100644 --- a/lib/smtp_mock/cli/resolver.rb +++ b/lib/smtp_mock/cli/resolver.rb @@ -73,7 +73,7 @@ def install_to(install_path) end def as_sudo - return 'sudo ' if sudo + 'sudo ' if sudo end def current_smtpmock_path diff --git a/lib/smtp_mock/test_framework/rspec.rb b/lib/smtp_mock/test_framework/rspec.rb index e9359b8..f9b2c3e 100644 --- a/lib/smtp_mock/test_framework/rspec.rb +++ b/lib/smtp_mock/test_framework/rspec.rb @@ -2,8 +2,8 @@ require 'rspec/core' require_relative '../../smtp_mock' -require_relative './rspec/interface' -require_relative './rspec/helper' +require_relative 'rspec/interface' +require_relative 'rspec/helper' RSpec.configure do |config| config.after { SmtpMock::TestFramework::RSpec::Interface.stop_server! } diff --git a/lib/smtp_mock/test_framework/rspec/helper.rb b/lib/smtp_mock/test_framework/rspec/helper.rb index 1bf3428..b62b21e 100644 --- a/lib/smtp_mock/test_framework/rspec/helper.rb +++ b/lib/smtp_mock/test_framework/rspec/helper.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require_relative './interface' +require_relative 'interface' module SmtpMock module TestFramework From 0ee0be86977f00dabe06f3f4a644a32056592c11 Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Wed, 23 Aug 2023 10:47:50 +0200 Subject: [PATCH 5/7] Technical/Update gem development dependencies (#76) --- .circleci/gemspecs/latest | 10 +++++----- .codeclimate.yml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.circleci/gemspecs/latest b/.circleci/gemspecs/latest index 2b824d6..6cb2a6c 100644 --- a/.circleci/gemspecs/latest +++ b/.circleci/gemspecs/latest @@ -20,15 +20,15 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'dry-struct', '~> 1.6' spec.add_development_dependency 'bundler-audit', '~> 0.9.1' - spec.add_development_dependency 'fasterer', '~> 0.10.0' + spec.add_development_dependency 'fasterer', '~> 0.10.1' spec.add_development_dependency 'ffaker', '~> 2.21' spec.add_development_dependency 'net-smtp', '~> 0.3.3' 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 'reek', '~> 6.1', '>= 6.1.3' + spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.4' spec.add_development_dependency 'rspec', '~> 3.12' - spec.add_development_dependency 'rubocop', '~> 1.42' - spec.add_development_dependency 'rubocop-performance', '~> 1.15', '>= 1.15.2' - spec.add_development_dependency 'rubocop-rspec', '~> 2.16' + spec.add_development_dependency 'rubocop', '~> 1.56', '>= 1.56.1' + spec.add_development_dependency 'rubocop-performance', '~> 1.19' + spec.add_development_dependency 'rubocop-rspec', '~> 2.23', '>= 2.23.2' spec.add_development_dependency 'simplecov', '~> 0.22.0' end diff --git a/.codeclimate.yml b/.codeclimate.yml index efdbcc3..bda81fe 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -9,7 +9,7 @@ checks: plugins: rubocop: enabled: true - channel: rubocop-1-42 + channel: rubocop-1-56 config: file: .circleci/linter_configs/.rubocop.yml From 7bdde4016440a815b0a7ac7094cefec21add6103 Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Tue, 17 Oct 2023 20:09:41 +0200 Subject: [PATCH 6/7] Technical/Update gem development dependencies (#77) * Updated gem development dependencies * Updated reek config * Changed namespace for rspec helpers --- .circleci/gemspecs/latest | 10 ++-- .reek.yml | 12 +++-- smtp_mock.gemspec | 2 +- .../rspec_helper/client/smtp_client_spec.rb} | 2 +- .../rspec_helper/context_generator_spec.rb} | 2 +- .../rspec_helper/dependency_spec.rb} | 2 +- .../rspec_helper/server_spec.rb} | 2 +- spec/smtp_mock_spec.rb | 2 +- spec/spec_helper.rb | 8 +-- spec/support/helpers/client.rb | 48 ++++++++++++++++++ spec/support/helpers/client_helper.rb | 46 ----------------- spec/support/helpers/context_generator.rb | 49 +++++++++++++++++++ .../helpers/context_generator_helper.rb | 47 ------------------ spec/support/helpers/dependency.rb | 11 +++++ spec/support/helpers/dependency_helper.rb | 9 ---- spec/support/helpers/server.rb | 18 +++++++ spec/support/helpers/server_helper.rb | 16 ------ 17 files changed, 148 insertions(+), 138 deletions(-) rename spec/{support/helpers/client_helper_spec.rb => smtp_mock/rspec_helper/client/smtp_client_spec.rb} (96%) rename spec/{support/helpers/context_generator_helper_spec.rb => smtp_mock/rspec_helper/context_generator_spec.rb} (94%) rename spec/{support/helpers/dependency_helper_spec.rb => smtp_mock/rspec_helper/dependency_spec.rb} (76%) rename spec/{support/helpers/server_helper_spec.rb => smtp_mock/rspec_helper/server_spec.rb} (92%) create mode 100644 spec/support/helpers/client.rb delete mode 100644 spec/support/helpers/client_helper.rb create mode 100644 spec/support/helpers/context_generator.rb delete mode 100644 spec/support/helpers/context_generator_helper.rb create mode 100644 spec/support/helpers/dependency.rb delete mode 100644 spec/support/helpers/dependency_helper.rb create mode 100644 spec/support/helpers/server.rb delete mode 100644 spec/support/helpers/server_helper.rb diff --git a/.circleci/gemspecs/latest b/.circleci/gemspecs/latest index 6cb2a6c..6d50272 100644 --- a/.circleci/gemspecs/latest +++ b/.circleci/gemspecs/latest @@ -21,14 +21,14 @@ 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 'net-smtp', '~> 0.3.3' + spec.add_development_dependency 'ffaker', '~> 2.23' + spec.add_development_dependency 'net-smtp', '~> 0.4.0' 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 'reek', '~> 6.1', '>= 6.1.4' spec.add_development_dependency 'rspec', '~> 3.12' - spec.add_development_dependency 'rubocop', '~> 1.56', '>= 1.56.1' - 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.1' + spec.add_development_dependency 'rubocop-performance', '~> 1.19', '>= 1.19.1' + spec.add_development_dependency 'rubocop-rspec', '~> 2.24', '>= 2.24.1' spec.add_development_dependency 'simplecov', '~> 0.22.0' end diff --git a/.reek.yml b/.reek.yml index 2191a1c..acfd669 100644 --- a/.reek.yml +++ b/.reek.yml @@ -7,11 +7,13 @@ detectors: UtilityFunction: exclude: - SmtpMock::CommandLineArgsBuilder#to_camel_case - - SmtpMock::DependencyHelper#compose_command + - SmtpMock::Cli::Resolver#install_to - SmtpMock::ServerHelper - SmtpMock::TestFramework::RSpec::Helper#smtp_mock_server - - SmtpMock::ContextGeneratorHelper#random_message - - SmtpMock::Cli::Resolver#install_to + - SmtpMock::RspecHelper::ContextGenerator#random_message + - SmtpMock::RspecHelper::Dependency#compose_command + - SmtpMock::RspecHelper::Server#create_fake_servers + - SmtpMock::RspecHelper::Server#reset_err_log NestedIterators: exclude: @@ -20,9 +22,9 @@ detectors: TooManyStatements: exclude: - SmtpMock::Server#run - - SmtpMock::ServerHelper#create_fake_servers - SmtpMock::Cli::Resolver#install - SmtpMock::Cli::Resolver#resolve + - SmtpMock::RspecHelper::Server#create_fake_servers TooManyInstanceVariables: exclude: @@ -30,4 +32,4 @@ detectors: LongParameterList: exclude: - - SmtpMock::ClientHelper#smtp_request + - SmtpMock::RspecHelper::Client#smtp_request diff --git a/smtp_mock.gemspec b/smtp_mock.gemspec index 523d388..6a0a466 100644 --- a/smtp_mock.gemspec +++ b/smtp_mock.gemspec @@ -34,7 +34,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'dry-struct', dry_struct_version spec.add_development_dependency 'ffaker', '~> 2.21' - spec.add_development_dependency 'net-smtp', '~> 0.3.3' if current_ruby_version >= ::Gem::Version.new('3.1.0') + spec.add_development_dependency 'net-smtp', '~> 0.4.0' if current_ruby_version >= ::Gem::Version.new('3.1.0') spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6' spec.add_development_dependency 'rspec', '~> 3.12' end diff --git a/spec/support/helpers/client_helper_spec.rb b/spec/smtp_mock/rspec_helper/client/smtp_client_spec.rb similarity index 96% rename from spec/support/helpers/client_helper_spec.rb rename to spec/smtp_mock/rspec_helper/client/smtp_client_spec.rb index 0d3eeaa..142c676 100644 --- a/spec/support/helpers/client_helper_spec.rb +++ b/spec/smtp_mock/rspec_helper/client/smtp_client_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.describe SmtpMock::ClientHelper::SmtpClient, type: :helper do # rubocop:disable RSpec/FilePath +RSpec.describe SmtpMock::RspecHelper::Client::SmtpClient, type: :helper do subject(:smtp_client_instance) { described_class.new(host, port, net_class) } let(:host) { random_hostname } diff --git a/spec/support/helpers/context_generator_helper_spec.rb b/spec/smtp_mock/rspec_helper/context_generator_spec.rb similarity index 94% rename from spec/support/helpers/context_generator_helper_spec.rb rename to spec/smtp_mock/rspec_helper/context_generator_spec.rb index f53f1a8..5a47783 100644 --- a/spec/support/helpers/context_generator_helper_spec.rb +++ b/spec/smtp_mock/rspec_helper/context_generator_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.describe SmtpMock::ContextGeneratorHelper, type: :helper do # rubocop:disable RSpec/FilePath +RSpec.describe SmtpMock::RspecHelper::ContextGenerator, type: :helper do describe '#random_ip_v4_address' do it 'returns random ip v4 address' do expect(FFaker::Internet).to receive(:ip_v4_address).and_call_original diff --git a/spec/support/helpers/dependency_helper_spec.rb b/spec/smtp_mock/rspec_helper/dependency_spec.rb similarity index 76% rename from spec/support/helpers/dependency_helper_spec.rb rename to spec/smtp_mock/rspec_helper/dependency_spec.rb index 7e0bf4c..f131958 100644 --- a/spec/support/helpers/dependency_helper_spec.rb +++ b/spec/smtp_mock/rspec_helper/dependency_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.describe SmtpMock::DependencyHelper, type: :helper do # rubocop:disable RSpec/FilePath +RSpec.describe SmtpMock::RspecHelper::Dependency, type: :helper do describe '#compose_command' do let(:command_line_args) { '-a -b 42' } diff --git a/spec/support/helpers/server_helper_spec.rb b/spec/smtp_mock/rspec_helper/server_spec.rb similarity index 92% rename from spec/support/helpers/server_helper_spec.rb rename to spec/smtp_mock/rspec_helper/server_spec.rb index 64633d8..c20ff59 100644 --- a/spec/support/helpers/server_helper_spec.rb +++ b/spec/smtp_mock/rspec_helper/server_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.describe SmtpMock::ServerHelper, type: :helper do # rubocop:disable RSpec/FilePath +RSpec.describe SmtpMock::RspecHelper::Server, type: :helper do describe '#create_fake_servers' do subject(:fake_servers) { create_fake_servers(**options) } diff --git a/spec/smtp_mock_spec.rb b/spec/smtp_mock_spec.rb index 86d8a51..bce10e2 100644 --- a/spec/smtp_mock_spec.rb +++ b/spec/smtp_mock_spec.rb @@ -118,7 +118,7 @@ rcptto: rcptto, message: random_message ) - end.to raise_error(SmtpMock::ClientHelper::SmtpClient::Error, expected_response_message) + end.to raise_error(SmtpMock::RspecHelper::Client::SmtpClient::Error, expected_response_message) smtp_mock_server.stop! end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b572797..a8def71 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -19,10 +19,10 @@ config.disable_monkey_patching! config.order = :random - config.include SmtpMock::ContextGeneratorHelper - config.include SmtpMock::DependencyHelper - config.include SmtpMock::ServerHelper - config.include SmtpMock::ClientHelper + config.include SmtpMock::RspecHelper::ContextGenerator + config.include SmtpMock::RspecHelper::Dependency + config.include SmtpMock::RspecHelper::Server + config.include SmtpMock::RspecHelper::Client ::Kernel.srand(config.seed) end diff --git a/spec/support/helpers/client.rb b/spec/support/helpers/client.rb new file mode 100644 index 0000000..365688d --- /dev/null +++ b/spec/support/helpers/client.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +module SmtpMock + module RspecHelper + module Client + class SmtpClient + require 'net/smtp' + + UNDEFINED_VERSION = '0.0.0' + + Error = ::Class.new(::StandardError) + + def initialize(host, port, net_class = ::Net::SMTP) + @net_class = net_class + @net_smtp_version = resolve_net_smtp_version + @net_smtp = old_net_smtp? ? net_class.new(host, port) : net_class.new(host, port, tls_verify: false) + end + + def start(helo_domain, &block) + return net_smtp.start(helo_domain, &block) if net_smtp_version < '0.2.0' + return net_smtp.start(helo_domain, tls_verify: false, &block) if old_net_smtp? + net_smtp.start(helo: helo_domain, &block) + end + + private + + attr_reader :net_class, :net_smtp_version, :net_smtp + + def resolve_net_smtp_version + return net_class::VERSION if net_class.const_defined?(:VERSION) + SmtpMock::RspecHelper::Client::SmtpClient::UNDEFINED_VERSION + end + + def old_net_smtp? + net_smtp_version < '0.3.0' + end + end + + def smtp_request(host:, port:, mailfrom:, rcptto:, message:, helo_domain: nil) # rubocop:disable Metrics/ParameterLists + SmtpMock::RspecHelper::Client::SmtpClient.new(host, port).start(helo_domain) do |session| + session.send_message(message, mailfrom, rcptto) + rescue ::Net::SMTPFatalError => error + raise SmtpMock::RspecHelper::Client::SmtpClient::Error, error.message.strip + end + end + end + end +end diff --git a/spec/support/helpers/client_helper.rb b/spec/support/helpers/client_helper.rb deleted file mode 100644 index 18a4f82..0000000 --- a/spec/support/helpers/client_helper.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -module SmtpMock - module ClientHelper - class SmtpClient - require 'net/smtp' - - UNDEFINED_VERSION = '0.0.0' - - Error = ::Class.new(::StandardError) - - def initialize(host, port, net_class = ::Net::SMTP) - @net_class = net_class - @net_smtp_version = resolve_net_smtp_version - @net_smtp = old_net_smtp? ? net_class.new(host, port) : net_class.new(host, port, tls_verify: false) - end - - def start(helo_domain, &block) - return net_smtp.start(helo_domain, &block) if net_smtp_version < '0.2.0' - return net_smtp.start(helo_domain, tls_verify: false, &block) if old_net_smtp? - net_smtp.start(helo: helo_domain, &block) - end - - private - - attr_reader :net_class, :net_smtp_version, :net_smtp - - def resolve_net_smtp_version - return net_class::VERSION if net_class.const_defined?(:VERSION) - SmtpMock::ClientHelper::SmtpClient::UNDEFINED_VERSION - end - - def old_net_smtp? - net_smtp_version < '0.3.0' - end - end - - def smtp_request(host:, port:, mailfrom:, rcptto:, message:, helo_domain: nil) # rubocop:disable Metrics/ParameterLists - SmtpMock::ClientHelper::SmtpClient.new(host, port).start(helo_domain) do |session| - session.send_message(message, mailfrom, rcptto) - rescue ::Net::SMTPFatalError => error - raise SmtpMock::ClientHelper::SmtpClient::Error, error.message.strip - end - end - end -end diff --git a/spec/support/helpers/context_generator.rb b/spec/support/helpers/context_generator.rb new file mode 100644 index 0000000..77bf370 --- /dev/null +++ b/spec/support/helpers/context_generator.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +module SmtpMock + module RspecHelper + module ContextGenerator + def random_ip_v4_address + ffaker.ip_v4_address + end + + def random_hostname + ffaker.domain_name + end + + def random_email + ffaker.email + end + + def random_pid + random.rand(1_000..2_000) + end + + def random_port_number + random.rand(49_152..65_535) + end + + def random_signal + random.rand(1..39) + end + + def random_message + FFaker::Lorem.sentence + end + + def random_sem_version + ::Array.new(3) { rand(0..42) }.join('.') + end + + private + + def ffaker + FFaker::Internet + end + + def random + ::Random + end + end + end +end diff --git a/spec/support/helpers/context_generator_helper.rb b/spec/support/helpers/context_generator_helper.rb deleted file mode 100644 index 823f293..0000000 --- a/spec/support/helpers/context_generator_helper.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -module SmtpMock - module ContextGeneratorHelper - def random_ip_v4_address - ffaker.ip_v4_address - end - - def random_hostname - ffaker.domain_name - end - - def random_email - ffaker.email - end - - def random_pid - random.rand(1_000..2_000) - end - - def random_port_number - random.rand(49_152..65_535) - end - - def random_signal - random.rand(1..39) - end - - def random_message - FFaker::Lorem.sentence - end - - def random_sem_version - ::Array.new(3) { rand(0..42) }.join('.') - end - - private - - def ffaker - FFaker::Internet - end - - def random - ::Random - end - end -end diff --git a/spec/support/helpers/dependency.rb b/spec/support/helpers/dependency.rb new file mode 100644 index 0000000..fe7accb --- /dev/null +++ b/spec/support/helpers/dependency.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module SmtpMock + module RspecHelper + module Dependency + def compose_command(command_line_args) + SmtpMock::Dependency.compose_command(command_line_args) + end + end + end +end diff --git a/spec/support/helpers/dependency_helper.rb b/spec/support/helpers/dependency_helper.rb deleted file mode 100644 index 8372a5c..0000000 --- a/spec/support/helpers/dependency_helper.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -module SmtpMock - module DependencyHelper - def compose_command(command_line_args) - SmtpMock::Dependency.compose_command(command_line_args) - end - end -end diff --git a/spec/support/helpers/server.rb b/spec/support/helpers/server.rb new file mode 100644 index 0000000..7ad650f --- /dev/null +++ b/spec/support/helpers/server.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module SmtpMock + module RspecHelper + module Server + def create_fake_servers(active: 1, inactive: 1) + server = ::Struct.new(:active?, :stop!) + active_servers = ::Array.new(active) { server.new(true, true) } + inactive_servers = ::Array.new(inactive) { server.new } + (active_servers + inactive_servers).shuffle + end + + def reset_err_log + SmtpMock::Server::Process.instance_variable_set(:@err_log, nil) + end + end + end +end diff --git a/spec/support/helpers/server_helper.rb b/spec/support/helpers/server_helper.rb deleted file mode 100644 index 1ebd008..0000000 --- a/spec/support/helpers/server_helper.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -module SmtpMock - module ServerHelper - def create_fake_servers(active: 1, inactive: 1) - server = ::Struct.new(:active?, :stop!) - active_servers = ::Array.new(active) { server.new(true, true) } - inactive_servers = ::Array.new(inactive) { server.new } - (active_servers + inactive_servers).shuffle - end - - def reset_err_log - SmtpMock::Server::Process.instance_variable_set(:@err_log, nil) - end - end -end From bd02b0526f0001edfc5a238d7cdf6de943d2a8f6 Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Tue, 17 Oct 2023 20:14:39 +0200 Subject: [PATCH 7/7] Technical/Update gem version (#78) * Updated gem version * Updated changelog --- CHANGELOG.md | 9 +++++++++ lib/smtp_mock/version.rb | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d10ddc..a12bcbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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). +## [1.3.5] - 2023-10-17 + +### Updated + +- Updated gem development dependencies +- Updated RSpec structure +- Updated linters configs +- Updated gem version + ## [1.3.4] - 2023-01-11 ### Updated diff --git a/lib/smtp_mock/version.rb b/lib/smtp_mock/version.rb index ccba5be..212e2b3 100644 --- a/lib/smtp_mock/version.rb +++ b/lib/smtp_mock/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module SmtpMock - VERSION = '1.3.4' + VERSION = '1.3.5' end