Skip to content

Commit a9b27f6

Browse files
authored
Feature/Ability to use multiple RCPT TO (#56)
* Updated SmtpMock::Types::Bool, tests * Updated codeclimate/circleci configs * Updated gemspecs * Updated gem runtime/development dependencies * Updated gem documentation, version
1 parent c08e098 commit a9b27f6

10 files changed

Lines changed: 37 additions & 16 deletions

File tree

.circleci/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defaults: &defaults
66
- image: cimg/ruby:<< parameters.ruby-version >>
77

88
orbs:
9-
ruby: circleci/ruby@1.8.0
9+
ruby: circleci/ruby@2.0.0
1010

1111
references:
1212
restore_bundle_cache: &restore_bundle_cache
@@ -122,7 +122,7 @@ jobs:
122122
- checkout
123123
- <<: *use_compatible_gemspec
124124
- ruby/install-deps:
125-
bundler-version: "2.3.23"
125+
bundler-version: "2.3.26"
126126
with-cache: false
127127
path: './vendor/custom_bundle'
128128
- <<: *system_dependencies

.circleci/gemspec_compatible

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@ Gem::Specification.new do |spec|
2323
}
2424

2525
spec.required_ruby_version = '>= 2.5.0'
26+
dry_struct_version = ::Gem::Version.new(::RUBY_VERSION) >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4'
2627

2728
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
2829
spec.executables = %w[smtp_mock]
2930
spec.require_paths = %w[lib]
3031

31-
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
32+
spec.add_runtime_dependency 'dry-struct', dry_struct_version
3233

3334
spec.add_development_dependency 'ffaker', '~> 2.21'
3435
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
35-
spec.add_development_dependency 'rspec', '~> 3.11'
36+
spec.add_development_dependency 'rspec', '~> 3.12'
3637
end

.circleci/gemspec_latest

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ Gem::Specification.new do |spec|
2929
spec.require_paths = %w[lib]
3030
spec.post_install_message = 'smtpmock is required system dependency. For more details run: `bundle exec smtp_mock -h`'
3131

32-
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
32+
spec.add_runtime_dependency 'dry-struct', '~> 1.6'
3333

3434
spec.add_development_dependency 'bundler-audit', '~> 0.9.1'
3535
spec.add_development_dependency 'fasterer', '~> 0.10.0'
3636
spec.add_development_dependency 'ffaker', '~> 2.21'
37-
spec.add_development_dependency 'net-smtp', '~> 0.3.2'
37+
spec.add_development_dependency 'net-smtp', '~> 0.3.3'
3838
spec.add_development_dependency 'overcommit', '~> 0.59.1'
3939
spec.add_development_dependency 'pry-byebug', '~> 3.10', '>= 3.10.1'
4040
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
4141
spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.1'
42-
spec.add_development_dependency 'rspec', '~> 3.11'
43-
spec.add_development_dependency 'rubocop', '~> 1.36'
44-
spec.add_development_dependency 'rubocop-performance', '~> 1.15'
45-
spec.add_development_dependency 'rubocop-rspec', '~> 2.13', '>= 2.13.2'
42+
spec.add_development_dependency 'rspec', '~> 3.12'
43+
spec.add_development_dependency 'rubocop', '~> 1.39'
44+
spec.add_development_dependency 'rubocop-performance', '~> 1.15', '>= 1.15.1'
45+
spec.add_development_dependency 'rubocop-rspec', '~> 2.15'
4646
spec.add_development_dependency 'simplecov', '~> 0.21.2'
4747
end

.codeclimate.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ checks:
77
plugins:
88
rubocop:
99
enabled: true
10-
channel: rubocop-1-36
10+
channel: rubocop-1-39
1111

1212
reek:
1313
enabled: true

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
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+
## [1.3.0] - 2022-11-19
6+
7+
### Added
8+
9+
- Added ability to configure multiple `RCPT TO` receiving scenario
10+
11+
### Updated
12+
13+
- Updated `SmtpMock::Types::Bool`, tests
14+
- Updated codeclimate/circleci configs
15+
- Updated gemspecs
16+
- Updated gem runtime/development dependencies
17+
- Updated gem documentation, version
18+
519
## [1.2.2] - 2022-10-05
620

721
### Fixed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
[![CircleCI](https://circleci.com/gh/mocktools/ruby-smtp-mock/tree/master.svg?style=svg)](https://circleci.com/gh/mocktools/ruby-smtp-mock/tree/master)
66
[![Gem Version](https://badge.fury.io/rb/smtp_mock.svg)](https://badge.fury.io/rb/smtp_mock)
77
[![Downloads](https://img.shields.io/gem/dt/smtp_mock.svg?colorA=004d99&colorB=0073e6)](https://rubygems.org/gems/smtp_mock)
8+
[![In Awesome Ruby](https://raw.githubusercontent.com/sindresorhus/awesome/main/media/mentioned-badge.svg)](https://github.com/markets/awesome-ruby)
89
[![GitHub](https://img.shields.io/github/license/mocktools/ruby-smtp-mock)](LICENSE.txt)
910
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v1.4%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)
1011

@@ -95,6 +96,7 @@ This gem includes easy system dependency manager. Run `bundle exec smtp_mock` wi
9596
| `session_timeout: 60` | Session timeout in seconds. It's equal to 30 seconds by default |
9697
| `shutdown_timeout: 5` | Graceful shutdown timeout in seconds. It's equal to 1 second by default |
9798
| `fail_fast: true` | Enables fail fast scenario. Disabled by default |
99+
| `multiple_rcptto: true` | Enables multiple `RCPT TO` receiving scenario. Disabled by default |
98100
| `multiple_message_receiving: true` | Enables multiple message receiving scenario. Disabled by default |
99101
| `blacklisted_helo_domains: %w[a.com b.com]` | Blacklisted `HELO` domains |
100102
| `blacklisted_mailfrom_emails: %w[a@a.com b@b.com]` | Blacklisted `MAIL FROM` emails |

lib/smtp_mock/command_line_args_builder.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class CommandLineArgsBuilder < Dry::Struct
1414
blacklisted_rcptto_emails
1515
not_registered_emails
1616
].freeze,
17-
SmtpMock::Types::Bool.constrained(eql: true) => %i[log fail_fast multiple_message_receiving].freeze,
17+
SmtpMock::Types::Bool.constrained(eql: true) => %i[log fail_fast multiple_rcptto multiple_message_receiving].freeze,
1818
SmtpMock::Types::Integer.constrained(gteq: 1) => %i[
1919
port
2020
session_timeout

lib/smtp_mock/version.rb

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

33
module SmtpMock
4-
VERSION = '1.2.2'
4+
VERSION = '1.3.0'
55
end

smtp_mock.gemspec

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,18 @@ Gem::Specification.new do |spec|
2323
}
2424

2525
spec.required_ruby_version = '>= 2.5.0'
26+
current_ruby_version = ::Gem::Version.new(::RUBY_VERSION)
27+
dry_struct_version = current_ruby_version >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4'
2628

2729
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
2830
spec.executables = %w[smtp_mock]
2931
spec.require_paths = %w[lib]
3032
spec.post_install_message = 'smtpmock is required system dependency. For more details run: `bundle exec smtp_mock -h`'
3133

32-
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
34+
spec.add_runtime_dependency 'dry-struct', dry_struct_version
3335

3436
spec.add_development_dependency 'ffaker', '~> 2.21'
35-
spec.add_development_dependency 'net-smtp', '~> 0.3.2' if ::RUBY_VERSION >= '3.1.0'
37+
spec.add_development_dependency 'net-smtp', '~> 0.3.3' if current_ruby_version >= ::Gem::Version.new('3.1.0')
3638
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
37-
spec.add_development_dependency 'rspec', '~> 3.11'
39+
spec.add_development_dependency 'rspec', '~> 3.12'
3840
end

spec/smtp_mock/command_line_args_builder_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
session_timeout: session_timeout,
5656
shutdown_timeout: shutdown_timeout,
5757
fail_fast: true,
58+
multiple_rcptto: true,
5859
multiple_message_receiving: true,
5960
msg_size_limit: msg_size_limit,
6061
blacklisted_helo_domains: blacklisted_helo_domains,
@@ -96,6 +97,7 @@
9697
-msgRsetReceived="v"
9798
-msgSizeLimit=#{msg_size_limit}
9899
-multipleMessageReceiving
100+
-multipleRcptto
99101
-notRegisteredEmails="#{not_registered_emails.join(',')}"
100102
-port=#{port}
101103
-sessionTimeout=#{session_timeout}

0 commit comments

Comments
 (0)