smtp_mock 1.0.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|