smtp_mock 1.0.1 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +2 -2
- data/.circleci/gemspec_compatible +1 -1
- data/.circleci/gemspec_latest +8 -8
- data/.codeclimate.yml +1 -1
- data/.github/DEVELOPMENT_ENVIRONMENT_GUIDE.md +1 -1
- data/.github/FUNDING.yml +1 -0
- data/.reek.yml +2 -2
- data/.rubocop.yml +12 -291
- data/CHANGELOG.md +38 -0
- data/README.md +12 -1
- data/lib/smtp_mock/cli/resolver.rb +41 -25
- data/lib/smtp_mock/cli.rb +1 -1
- data/lib/smtp_mock/command_line_args_builder.rb +11 -1
- data/lib/smtp_mock/dependency.rb +2 -2
- data/lib/smtp_mock/version.rb +1 -1
- data/smtp_mock.gemspec +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70712db1d51d5327492ecb730f29e5019b68c33529c81bdacc96422917dcae1d
|
4
|
+
data.tar.gz: e70d2ea9e434ee4242e5ad9317894cec1ff89afa2e49e549554c68dae1ed6828
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38dd0ed89c25be25121fcfc4ddeb3261ba3cc3e75517510830b828ea895a662e273d11b2450bf1fe116f865f815ba19e59969a07cc2e44255bb8818a213adad4
|
7
|
+
data.tar.gz: 4755aa41982aacac8bf45935e69928d7379185b38e8049fe377d3be2ea8769b1d3e6a019d08f5e6d7daa31e6e0b9c89b7b9139b47b24d57c8e80aa8025b6a82f
|
data/.circleci/config.yml
CHANGED
@@ -6,7 +6,7 @@ defaults: &defaults
|
|
6
6
|
- image: cimg/ruby:<< parameters.ruby-version >>
|
7
7
|
|
8
8
|
orbs:
|
9
|
-
ruby: circleci/ruby@1.
|
9
|
+
ruby: circleci/ruby@1.8.0
|
10
10
|
|
11
11
|
references:
|
12
12
|
restore_bundle_cache: &restore_bundle_cache
|
@@ -122,7 +122,7 @@ jobs:
|
|
122
122
|
- checkout
|
123
123
|
- <<: *use_compatible_gemspec
|
124
124
|
- ruby/install-deps:
|
125
|
-
bundler-version: "2.3.
|
125
|
+
bundler-version: "2.3.18"
|
126
126
|
with-cache: false
|
127
127
|
path: './vendor/custom_bundle'
|
128
128
|
- <<: *system_dependencies
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
|
32
32
|
|
33
|
-
spec.add_development_dependency 'ffaker', '~> 2.
|
33
|
+
spec.add_development_dependency 'ffaker', '~> 2.21'
|
34
34
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
35
35
|
spec.add_development_dependency 'rspec', '~> 3.11'
|
36
36
|
end
|
data/.circleci/gemspec_latest
CHANGED
@@ -31,17 +31,17 @@ Gem::Specification.new do |spec|
|
|
31
31
|
|
32
32
|
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
|
33
33
|
|
34
|
-
spec.add_development_dependency 'bundler-audit', '~> 0.9.
|
35
|
-
spec.add_development_dependency 'fasterer', '~> 0.
|
36
|
-
spec.add_development_dependency 'ffaker', '~> 2.
|
34
|
+
spec.add_development_dependency 'bundler-audit', '~> 0.9.1'
|
35
|
+
spec.add_development_dependency 'fasterer', '~> 0.10.0'
|
36
|
+
spec.add_development_dependency 'ffaker', '~> 2.21'
|
37
37
|
spec.add_development_dependency 'net-smtp', '~> 0.3.1'
|
38
|
-
spec.add_development_dependency 'overcommit', '~> 0.
|
38
|
+
spec.add_development_dependency 'overcommit', '~> 0.59.1'
|
39
39
|
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
40
40
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
41
|
-
spec.add_development_dependency 'reek', '~> 6.1'
|
41
|
+
spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.1'
|
42
42
|
spec.add_development_dependency 'rspec', '~> 3.11'
|
43
|
-
spec.add_development_dependency 'rubocop', '~> 1.
|
44
|
-
spec.add_development_dependency 'rubocop-performance', '~> 1.
|
45
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 2.
|
43
|
+
spec.add_development_dependency 'rubocop', '~> 1.32'
|
44
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.14', '>= 1.14.3'
|
45
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.12', '>= 2.12.1'
|
46
46
|
spec.add_development_dependency 'simplecov', '~> 0.21.2'
|
47
47
|
end
|
data/.codeclimate.yml
CHANGED
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
github: [bestwebua]
|
data/.reek.yml
CHANGED
@@ -14,13 +14,13 @@ detectors:
|
|
14
14
|
NestedIterators:
|
15
15
|
exclude:
|
16
16
|
- SmtpMock::CommandLineArgsBuilder#define_attribute
|
17
|
-
- SmtpMock::Cli::Resolver#resolve
|
18
17
|
|
19
18
|
TooManyStatements:
|
20
19
|
exclude:
|
21
|
-
- SmtpMock::Cli::Resolver#resolve
|
22
20
|
- SmtpMock::Server#run
|
23
21
|
- SmtpMock::ServerHelper#create_fake_servers
|
22
|
+
- SmtpMock::Cli::Resolver#install
|
23
|
+
- SmtpMock::Cli::Resolver#resolve
|
24
24
|
|
25
25
|
TooManyInstanceVariables:
|
26
26
|
exclude:
|
data/.rubocop.yml
CHANGED
@@ -6,6 +6,9 @@ AllCops:
|
|
6
6
|
DisplayCopNames: true
|
7
7
|
DisplayStyleGuide: true
|
8
8
|
TargetRubyVersion: 2.5
|
9
|
+
NewCops: enable
|
10
|
+
|
11
|
+
# Metrics ---------------------------------------------------------------------
|
9
12
|
|
10
13
|
Metrics/ClassLength:
|
11
14
|
Max: 150
|
@@ -22,6 +25,8 @@ Metrics/CyclomaticComplexity:
|
|
22
25
|
Metrics/PerceivedComplexity:
|
23
26
|
Enabled: false
|
24
27
|
|
28
|
+
# Naming ----------------------------------------------------------------------
|
29
|
+
|
25
30
|
Naming/VariableNumber:
|
26
31
|
Enabled: false
|
27
32
|
|
@@ -31,8 +36,7 @@ Naming/RescuedExceptionsVariableName:
|
|
31
36
|
Naming/InclusiveLanguage:
|
32
37
|
Enabled: false
|
33
38
|
|
34
|
-
|
35
|
-
Enabled: true
|
39
|
+
# Style -----------------------------------------------------------------------
|
36
40
|
|
37
41
|
Style/Documentation:
|
38
42
|
Enabled: false
|
@@ -49,135 +53,11 @@ Style/ParallelAssignment:
|
|
49
53
|
Style/RescueStandardError:
|
50
54
|
Enabled: false
|
51
55
|
|
52
|
-
|
53
|
-
Enabled: true
|
54
|
-
|
55
|
-
Style/HashTransformKeys:
|
56
|
-
Enabled: true
|
57
|
-
|
58
|
-
Style/HashTransformValues:
|
59
|
-
Enabled: true
|
60
|
-
|
61
|
-
Style/AccessorGrouping:
|
62
|
-
Enabled: true
|
63
|
-
|
64
|
-
Style/ArrayCoercion:
|
65
|
-
Enabled: true
|
66
|
-
|
67
|
-
Style/BisectedAttrAccessor:
|
68
|
-
Enabled: true
|
69
|
-
|
70
|
-
Style/CaseLikeIf:
|
71
|
-
Enabled: true
|
72
|
-
|
73
|
-
Style/ExponentialNotation:
|
74
|
-
Enabled: true
|
75
|
-
|
76
|
-
Style/HashAsLastArrayItem:
|
77
|
-
Enabled: true
|
78
|
-
|
79
|
-
Style/HashLikeCase:
|
80
|
-
Enabled: true
|
81
|
-
|
82
|
-
Style/RedundantAssignment:
|
83
|
-
Enabled: true
|
84
|
-
|
85
|
-
Style/RedundantFetchBlock:
|
86
|
-
Enabled: true
|
87
|
-
|
88
|
-
Style/RedundantFileExtensionInRequire:
|
89
|
-
Enabled: true
|
90
|
-
|
91
|
-
Style/RedundantRegexpCharacterClass:
|
92
|
-
Enabled: true
|
93
|
-
|
94
|
-
Style/RedundantRegexpEscape:
|
95
|
-
Enabled: true
|
96
|
-
|
97
|
-
Style/SlicingWithRange:
|
98
|
-
Enabled: true
|
99
|
-
|
100
|
-
Style/ArgumentsForwarding:
|
101
|
-
Enabled: true
|
102
|
-
|
103
|
-
Style/CollectionCompact:
|
104
|
-
Enabled: true
|
105
|
-
|
106
|
-
Style/DocumentDynamicEvalDefinition:
|
107
|
-
Enabled: true
|
108
|
-
|
109
|
-
Style/NegatedIfElseCondition:
|
110
|
-
Enabled: true
|
111
|
-
|
112
|
-
Style/NilLambda:
|
113
|
-
Enabled: true
|
114
|
-
|
115
|
-
Style/RedundantArgument:
|
116
|
-
Enabled: true
|
117
|
-
|
118
|
-
Style/SwapValues:
|
119
|
-
Enabled: true
|
120
|
-
|
121
|
-
Style/EndlessMethod:
|
122
|
-
Enabled: true
|
123
|
-
|
124
|
-
Style/HashExcept:
|
125
|
-
Enabled: true
|
126
|
-
|
127
|
-
Style/IfWithBooleanLiteralBranches:
|
128
|
-
Enabled: true
|
129
|
-
|
130
|
-
Style/HashConversion:
|
131
|
-
Enabled: true
|
132
|
-
|
133
|
-
Style/StringChars:
|
134
|
-
Enabled: true
|
135
|
-
|
136
|
-
Style/InPatternThen:
|
137
|
-
Enabled: true
|
138
|
-
|
139
|
-
Style/MultilineInPatternThen:
|
140
|
-
Enabled: true
|
141
|
-
|
142
|
-
Style/QuotedSymbols:
|
143
|
-
Enabled: true
|
144
|
-
|
145
|
-
Style/RedundantSelfAssignmentBranch:
|
146
|
-
Enabled: true
|
147
|
-
|
148
|
-
Style/NumberedParameters:
|
149
|
-
Enabled: true
|
150
|
-
|
151
|
-
Style/NumberedParametersLimit:
|
152
|
-
Enabled: true
|
153
|
-
|
154
|
-
Style/SelectByRegexp:
|
155
|
-
Enabled: true
|
156
|
-
|
157
|
-
Style/FileRead:
|
158
|
-
Enabled: true
|
159
|
-
|
160
|
-
Style/FileWrite:
|
161
|
-
Enabled: true
|
162
|
-
|
163
|
-
Style/MapToHash:
|
164
|
-
Enabled: true
|
165
|
-
|
166
|
-
Style/OpenStructUse:
|
167
|
-
Enabled: true
|
168
|
-
|
169
|
-
Style/NestedFileDirname:
|
170
|
-
Enabled: true
|
56
|
+
# Layout ----------------------------------------------------------------------
|
171
57
|
|
172
58
|
Layout/LineLength:
|
173
59
|
Max: 150
|
174
60
|
|
175
|
-
Layout/EmptyLinesAroundAttributeAccessor:
|
176
|
-
Enabled: true
|
177
|
-
|
178
|
-
Layout/SpaceAroundMethodCallOperator:
|
179
|
-
Enabled: true
|
180
|
-
|
181
61
|
Layout/ClassStructure:
|
182
62
|
Enabled: true
|
183
63
|
Categories:
|
@@ -197,158 +77,17 @@ Layout/ClassStructure:
|
|
197
77
|
Layout/EmptyLineAfterGuardClause:
|
198
78
|
Enabled: false
|
199
79
|
|
200
|
-
|
201
|
-
Enabled: true
|
202
|
-
|
203
|
-
Layout/LineEndStringConcatenationIndentation:
|
204
|
-
Enabled: true
|
205
|
-
|
206
|
-
Lint/NonDeterministicRequireOrder:
|
207
|
-
Enabled: true
|
208
|
-
|
209
|
-
Lint/DeprecatedOpenSSLConstant:
|
210
|
-
Enabled: true
|
211
|
-
|
212
|
-
Lint/DuplicateElsifCondition:
|
213
|
-
Enabled: true
|
214
|
-
|
215
|
-
Lint/MixedRegexpCaptureTypes:
|
216
|
-
Enabled: true
|
217
|
-
|
218
|
-
Lint/RaiseException:
|
219
|
-
Enabled: true
|
220
|
-
|
221
|
-
Lint/StructNewOverride:
|
222
|
-
Enabled: true
|
223
|
-
|
224
|
-
Lint/DuplicateBranch:
|
225
|
-
Enabled: true
|
226
|
-
|
227
|
-
Lint/DuplicateRegexpCharacterClassElement:
|
228
|
-
Enabled: true
|
229
|
-
|
230
|
-
Lint/EmptyBlock:
|
231
|
-
Enabled: true
|
232
|
-
|
233
|
-
Lint/EmptyClass:
|
234
|
-
Enabled: true
|
235
|
-
|
236
|
-
Lint/NoReturnInBeginEndBlocks:
|
237
|
-
Enabled: true
|
238
|
-
|
239
|
-
Lint/ToEnumArguments:
|
240
|
-
Enabled: true
|
241
|
-
|
242
|
-
Lint/UnexpectedBlockArity:
|
243
|
-
Enabled: true
|
244
|
-
|
245
|
-
Lint/AmbiguousAssignment:
|
246
|
-
Enabled: true
|
247
|
-
|
248
|
-
Lint/DeprecatedConstants:
|
249
|
-
Enabled: true
|
250
|
-
|
251
|
-
Lint/LambdaWithoutLiteralBlock:
|
252
|
-
Enabled: true
|
253
|
-
|
254
|
-
Lint/RedundantDirGlobSort:
|
255
|
-
Enabled: true
|
256
|
-
|
257
|
-
Lint/UnmodifiedReduceAccumulator:
|
258
|
-
Enabled: true
|
259
|
-
|
260
|
-
Lint/NumberedParameterAssignment:
|
261
|
-
Enabled: true
|
262
|
-
|
263
|
-
Lint/OrAssignmentToConstant:
|
264
|
-
Enabled: true
|
265
|
-
|
266
|
-
Lint/SymbolConversion:
|
267
|
-
Enabled: true
|
268
|
-
|
269
|
-
Lint/TripleQuotes:
|
270
|
-
Enabled: true
|
271
|
-
|
272
|
-
Lint/EmptyInPattern:
|
273
|
-
Enabled: true
|
274
|
-
|
275
|
-
Lint/AmbiguousRange:
|
276
|
-
Enabled: true
|
277
|
-
|
278
|
-
Lint/AmbiguousOperatorPrecedence:
|
279
|
-
Enabled: true
|
280
|
-
|
281
|
-
Lint/IncompatibleIoSelectWithFiberScheduler:
|
282
|
-
Enabled: true
|
283
|
-
|
284
|
-
Lint/RequireRelativeSelfPath:
|
285
|
-
Enabled: true
|
286
|
-
|
287
|
-
Lint/UselessRuby2Keywords:
|
288
|
-
Enabled: true
|
289
|
-
|
290
|
-
Gemspec/DateAssignment:
|
291
|
-
Enabled: true
|
80
|
+
# Gemspec ---------------------------------------------------------------------
|
292
81
|
|
293
82
|
Gemspec/RequireMFA:
|
294
83
|
Enabled: false
|
295
84
|
|
296
|
-
|
297
|
-
Enabled: true
|
298
|
-
|
299
|
-
Performance/AncestorsInclude:
|
300
|
-
Enabled: true
|
301
|
-
|
302
|
-
Performance/BigDecimalWithNumericArgument:
|
303
|
-
Enabled: true
|
304
|
-
|
305
|
-
Performance/RedundantSortBlock:
|
306
|
-
Enabled: true
|
307
|
-
|
308
|
-
Performance/RedundantStringChars:
|
309
|
-
Enabled: true
|
310
|
-
|
311
|
-
Performance/ReverseFirst:
|
312
|
-
Enabled: true
|
313
|
-
|
314
|
-
Performance/SortReverse:
|
315
|
-
Enabled: true
|
316
|
-
|
317
|
-
Performance/Squeeze:
|
318
|
-
Enabled: true
|
319
|
-
|
320
|
-
Performance/StringInclude:
|
321
|
-
Enabled: true
|
322
|
-
|
323
|
-
Performance/BlockGivenWithExplicitBlock:
|
324
|
-
Enabled: true
|
325
|
-
|
326
|
-
Performance/CollectionLiteralInLoop:
|
327
|
-
Enabled: true
|
328
|
-
|
329
|
-
Performance/ConstantRegexp:
|
330
|
-
Enabled: true
|
85
|
+
# Performance -----------------------------------------------------------------
|
331
86
|
|
332
87
|
Performance/MethodObjectAsBlock:
|
333
88
|
Enabled: false
|
334
89
|
|
335
|
-
|
336
|
-
Enabled: true
|
337
|
-
|
338
|
-
Performance/RedundantEqualityComparisonBlock:
|
339
|
-
Enabled: true
|
340
|
-
|
341
|
-
Performance/RedundantSplitRegexpArgument:
|
342
|
-
Enabled: true
|
343
|
-
|
344
|
-
Performance/MapCompact:
|
345
|
-
Enabled: true
|
346
|
-
|
347
|
-
Performance/ConcurrentMonotonicTime:
|
348
|
-
Enabled: true
|
349
|
-
|
350
|
-
Performance/StringIdentifierArgument:
|
351
|
-
Enabled: true
|
90
|
+
# RSpec -----------------------------------------------------------------------
|
352
91
|
|
353
92
|
RSpec/ExampleLength:
|
354
93
|
Enabled: false
|
@@ -380,23 +119,5 @@ RSpec/MultipleMemoizedHelpers:
|
|
380
119
|
RSpec/StubbedMock:
|
381
120
|
Enabled: false
|
382
121
|
|
383
|
-
RSpec/
|
384
|
-
Enabled:
|
385
|
-
|
386
|
-
RSpec/Rails/AvoidSetupHook:
|
387
|
-
Enabled: true
|
388
|
-
|
389
|
-
RSpec/ExcessiveDocstringSpacing:
|
390
|
-
Enabled: true
|
391
|
-
|
392
|
-
RSpec/SubjectDeclaration:
|
393
|
-
Enabled: true
|
394
|
-
|
395
|
-
RSpec/FactoryBot/SyntaxMethods:
|
396
|
-
Enabled: true
|
397
|
-
|
398
|
-
RSpec/BeEq:
|
399
|
-
Enabled: true
|
400
|
-
|
401
|
-
RSpec/BeNil:
|
402
|
-
Enabled: true
|
122
|
+
RSpec/VerifiedDoubleReference:
|
123
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,44 @@
|
|
2
2
|
|
3
3
|
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).
|
4
4
|
|
5
|
+
## [1.2.1] - 2022-07-27
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
|
9
|
+
- Fixed documentation
|
10
|
+
|
11
|
+
### Updated
|
12
|
+
|
13
|
+
- Updated gem documentation, version
|
14
|
+
|
15
|
+
## [1.2.0] - 2022-07-27
|
16
|
+
|
17
|
+
### Added
|
18
|
+
|
19
|
+
- Added ability to use `RSET` SMTP command
|
20
|
+
- Added ability to configure multiple message receiving flow during one session
|
21
|
+
- Added ability to configure SMTP command delay responses
|
22
|
+
|
23
|
+
### Updated
|
24
|
+
|
25
|
+
- Updated gemspecs
|
26
|
+
- Updated tests
|
27
|
+
- Updated rubocop/codeclimate/circleci configs
|
28
|
+
- Updated gem development dependencies
|
29
|
+
- Updated gem documentation, version
|
30
|
+
|
31
|
+
## [1.1.0] - 2022-05-17
|
32
|
+
|
33
|
+
### Added
|
34
|
+
|
35
|
+
- Ability to check `smtpmock` version from cli
|
36
|
+
|
37
|
+
### Updated
|
38
|
+
|
39
|
+
- Updated gemspecs
|
40
|
+
- Updated codeclimate/circleci configs
|
41
|
+
- Updated gem development dependencies
|
42
|
+
- Updated gem version
|
5
43
|
|
6
44
|
## [1.0.1] - 2022-03-10
|
7
45
|
|
data/README.md
CHANGED
@@ -80,6 +80,7 @@ This gem includes easy system dependency manager. Run `bundle exec smtp_mock` wi
|
|
80
80
|
| `-i`, `--install=PATH` | Install `smtpmock` to the existing path | `bundle exec smtp_mock -i ~/existent_dir` |
|
81
81
|
| `-u`, `--uninstall` | Uninstall `smtpmock` | `bundle exec smtp_mock -u` |
|
82
82
|
| `-g`, `--upgrade` | Upgrade to latest version of `smtpmock` | `bundle exec smtp_mock -g` |
|
83
|
+
| `-v`, `--version` | Prints current version of `smtpmock` | `bundle exec smtp_mock -v` |
|
83
84
|
| `-h`, `--help` | Prints help | `bundle exec smtp_mock -h` |
|
84
85
|
|
85
86
|
### DSL
|
@@ -94,10 +95,18 @@ This gem includes easy system dependency manager. Run `bundle exec smtp_mock` wi
|
|
94
95
|
| `session_timeout: 60` | Session timeout in seconds. It's equal to 30 seconds by default |
|
95
96
|
| `shutdown_timeout: 5` | Graceful shutdown timeout in seconds. It's equal to 1 second by default |
|
96
97
|
| `fail_fast: true` | Enables fail fast scenario. Disabled by default |
|
98
|
+
| `multiple_message_receiving: true` | Enables multiple message receiving scenario. Disabled by default |
|
97
99
|
| `blacklisted_helo_domains: %w[a.com b.com]` | Blacklisted `HELO` domains |
|
98
100
|
| `blacklisted_mailfrom_emails: %w[a@a.com b@b.com]` | Blacklisted `MAIL FROM` emails |
|
99
101
|
| `blacklisted_rcptto_emails: %w[c@c.com d@d.com]` | blacklisted `RCPT TO` emails |
|
100
102
|
| `not_registered_emails: %w[e@e.com f@f.com]` | Not registered (non-existent) `RCPT TO` emails |
|
103
|
+
| `response_delay_helo: 2` | `HELO` response delay in seconds. It's equal to 0 seconds by default |
|
104
|
+
| `response_delay_mailfrom: 2` | `MAIL FROM` response delay in seconds. It's equal to 0 seconds by default |
|
105
|
+
| `response_delay_rcptto: 2` | `RCPT TO` response delay in seconds. It's equal to 0 seconds by default |
|
106
|
+
| `response_delay_data: 2` | `DATA` response delay in seconds. It's equal to 0 seconds by default |
|
107
|
+
| `response_delay_message: 2` | Message response delay in seconds. It's equal to 0 seconds by default |
|
108
|
+
| `response_delay_rset: 2` | `RSET` response delay in seconds. It's equal to 0 seconds by default |
|
109
|
+
| `response_delay_quit: 2` | `QUIT` response delay in seconds. It's equal to 0 seconds by default |
|
101
110
|
| `msg_size_limit: 42` | Message body size limit in bytes. It's equal to 10485760 bytes by default |
|
102
111
|
| `msg_greeting: 'Greeting message'` | Custom server greeting message |
|
103
112
|
| `msg_invalid_cmd: 'Invalid command message'` | Custom invalid command message |
|
@@ -117,7 +126,9 @@ This gem includes easy system dependency manager. Run `bundle exec smtp_mock` wi
|
|
117
126
|
| `msg_invalid_cmd_data_sequence: 'Invalid command DATA sequence message'` | Custom invalid command `DATA` sequence message |
|
118
127
|
| `msg_data_received: 'DATA received message'` | Custom `DATA` received message |
|
119
128
|
| `msg_msg_size_is_too_big: 'Message size is too big'` | Custom size is too big message |
|
120
|
-
| `
|
129
|
+
| `msg_invalid_cmd_rset_sequence: 'Invalid command RSET sequence message'` | Custom invalid command `RSET` sequence message |
|
130
|
+
| `msg_invalid_cmd_rset_arg: 'Invalid command RSET argument message'` | Custom invalid command `RSET` argument message |
|
131
|
+
| `msg_rset_received: 'RSET received message'` | Custom `RSET` received message |
|
121
132
|
| `msg_quit_cmd: 'Quit command message'` | Custom quit command message |
|
122
133
|
|
123
134
|
#### Example of usage
|
@@ -8,45 +8,61 @@ module SmtpMock
|
|
8
8
|
USE_CASE = 'Usage: smtp_mock [options], example: `bundle exec smtp_mock -s -i ~/existent_dir`'
|
9
9
|
DOWNLOAD_SCRIPT = 'https://raw.githubusercontent.com/mocktools/go-smtp-mock/master/script/download.sh'
|
10
10
|
|
11
|
-
def resolve(command_line_args) # rubocop:disable Metrics/
|
11
|
+
def resolve(command_line_args) # rubocop:disable Metrics/AbcSize
|
12
12
|
opt_parser = ::OptionParser.new do |parser|
|
13
13
|
parser.banner = SmtpMock::Cli::Resolver::USE_CASE
|
14
|
-
|
15
14
|
parser.on('-s', '--sudo', 'Run command as sudo') { self.sudo = true }
|
15
|
+
parser.on('-iPATH', '--install=PATH', 'Install smtpmock to the existing path', &install)
|
16
|
+
parser.on('-u', '--uninstall', 'Uninstall smtpmock', &uninstall)
|
17
|
+
parser.on('-g', '--upgrade', 'Upgrade to latest version of smtpmock', &upgrade)
|
18
|
+
parser.on('-v', '--version', 'Prints current smtpmock version', &version)
|
19
|
+
parser.on('-h', '--help', 'Prints help') { self.message = parser.to_s }
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
return self.message = 'smtpmock is already installed' if ::File.exist?(binary_path)
|
20
|
-
|
21
|
-
install_to(install_path)
|
22
|
-
::Kernel.system("#{as_sudo}ln -s #{binary_path} #{SmtpMock::Dependency::SYMLINK}")
|
23
|
-
self.message = 'smtpmock was installed successfully'
|
24
|
-
end
|
21
|
+
self.success = true
|
22
|
+
end
|
25
23
|
|
26
|
-
|
27
|
-
|
24
|
+
opt_parser.parse(command_line_args) # TODO: add error handler
|
25
|
+
end
|
28
26
|
|
29
|
-
|
30
|
-
::Kernel.system("rm #{current_smtpmock_path}")
|
31
|
-
self.message = 'smtpmock was uninstalled successfully'
|
32
|
-
end
|
27
|
+
private
|
33
28
|
|
34
|
-
|
35
|
-
|
29
|
+
def install
|
30
|
+
lambda do |argument|
|
31
|
+
self.install_path = argument
|
32
|
+
return self.message = 'smtpmock is already installed' if ::File.exist?(binary_path)
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
install_to(install_path)
|
35
|
+
::Kernel.system("#{as_sudo}ln -s #{binary_path} #{SmtpMock::Dependency::SYMLINK}")
|
36
|
+
self.message = 'smtpmock was installed successfully'
|
37
|
+
end
|
38
|
+
end
|
40
39
|
|
41
|
-
|
40
|
+
def uninstall
|
41
|
+
lambda do |_|
|
42
|
+
return if not_installed?
|
42
43
|
|
43
|
-
|
44
|
+
::Kernel.system("#{as_sudo}unlink #{SmtpMock::Dependency::SYMLINK}")
|
45
|
+
::Kernel.system("rm #{current_smtpmock_path}")
|
46
|
+
self.message = 'smtpmock was uninstalled successfully'
|
44
47
|
end
|
48
|
+
end
|
45
49
|
|
46
|
-
|
50
|
+
def upgrade
|
51
|
+
lambda do |_|
|
52
|
+
return if not_installed?
|
53
|
+
|
54
|
+
install_to(current_smtpmock_path[%r{(.+)/.+}, 1])
|
55
|
+
self.message = 'smtpmock was upgraded successfully'
|
56
|
+
end
|
47
57
|
end
|
48
58
|
|
49
|
-
|
59
|
+
def version
|
60
|
+
lambda do |_|
|
61
|
+
return if not_installed?
|
62
|
+
|
63
|
+
self.message = SmtpMock::Dependency.version
|
64
|
+
end
|
65
|
+
end
|
50
66
|
|
51
67
|
def binary_path
|
52
68
|
"#{install_path}/smtpmock"
|
data/lib/smtp_mock/cli.rb
CHANGED
@@ -14,11 +14,18 @@ module SmtpMock
|
|
14
14
|
blacklisted_rcptto_emails
|
15
15
|
not_registered_emails
|
16
16
|
].freeze,
|
17
|
-
SmtpMock::Types::Bool.constrained(eql: true) => %i[log fail_fast].freeze,
|
17
|
+
SmtpMock::Types::Bool.constrained(eql: true) => %i[log fail_fast multiple_message_receiving].freeze,
|
18
18
|
SmtpMock::Types::Integer.constrained(gteq: 1) => %i[
|
19
19
|
port
|
20
20
|
session_timeout
|
21
21
|
shutdown_timeout
|
22
|
+
response_delay_helo
|
23
|
+
response_delay_mailfrom
|
24
|
+
response_delay_rcptto
|
25
|
+
response_delay_data
|
26
|
+
response_delay_message
|
27
|
+
response_delay_rset
|
28
|
+
response_delay_quit
|
22
29
|
msg_size_limit
|
23
30
|
].freeze,
|
24
31
|
SmtpMock::Types::String => %i[
|
@@ -41,6 +48,9 @@ module SmtpMock
|
|
41
48
|
msg_data_received
|
42
49
|
msg_msg_size_is_too_big
|
43
50
|
msg_msg_received
|
51
|
+
msg_invalid_cmd_rset_sequence
|
52
|
+
msg_invalid_cmd_rset_arg
|
53
|
+
msg_rset_received
|
44
54
|
msg_quit_cmd
|
45
55
|
].freeze
|
46
56
|
}.freeze
|
data/lib/smtp_mock/dependency.rb
CHANGED
@@ -26,8 +26,6 @@ module SmtpMock
|
|
26
26
|
"#{SmtpMock::Dependency::BINARY_SHORTCUT} #{command_line_args}".strip
|
27
27
|
end
|
28
28
|
|
29
|
-
private
|
30
|
-
|
31
29
|
def version
|
32
30
|
::Kernel.public_send(
|
33
31
|
:`,
|
@@ -35,6 +33,8 @@ module SmtpMock
|
|
35
33
|
)[SmtpMock::Dependency::VERSION_REGEX_PATTERN, 1]
|
36
34
|
end
|
37
35
|
|
36
|
+
private
|
37
|
+
|
38
38
|
def minimal_version?(current_version)
|
39
39
|
!!current_version && current_version >= SmtpMock::SMTPMOCK_MIN_VERSION
|
40
40
|
end
|
data/lib/smtp_mock/version.rb
CHANGED
data/smtp_mock.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
|
32
32
|
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
|
33
33
|
|
34
|
-
spec.add_development_dependency 'ffaker', '~> 2.
|
34
|
+
spec.add_development_dependency 'ffaker', '~> 2.21'
|
35
35
|
spec.add_development_dependency 'net-smtp', '~> 0.3.1' if ::RUBY_VERSION >= '3.1.0'
|
36
36
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
37
37
|
spec.add_development_dependency 'rspec', '~> 3.11'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smtp_mock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladislav Trotsenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-struct
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2.
|
33
|
+
version: '2.21'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
40
|
+
version: '2.21'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- ".codeclimate.yml"
|
88
88
|
- ".github/BRANCH_NAMING_CONVENTION.md"
|
89
89
|
- ".github/DEVELOPMENT_ENVIRONMENT_GUIDE.md"
|
90
|
+
- ".github/FUNDING.yml"
|
90
91
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
91
92
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
92
93
|
- ".github/ISSUE_TEMPLATE/issue_report.md"
|
@@ -152,8 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
153
|
- !ruby/object:Gem::Version
|
153
154
|
version: '0'
|
154
155
|
requirements: []
|
155
|
-
|
156
|
-
rubygems_version: 2.7.3
|
156
|
+
rubygems_version: 3.2.20
|
157
157
|
signing_key:
|
158
158
|
specification_version: 4
|
159
159
|
summary: smtp_mock
|