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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33e54a07175e2b3e8245c8934d9839082a28e02f51d958127135342187e87326
4
- data.tar.gz: cf9ff702f31049e1bc849bcde4f3cee662a5e76d77adf7f2404e634c35e9a53a
3
+ metadata.gz: 70712db1d51d5327492ecb730f29e5019b68c33529c81bdacc96422917dcae1d
4
+ data.tar.gz: e70d2ea9e434ee4242e5ad9317894cec1ff89afa2e49e549554c68dae1ed6828
5
5
  SHA512:
6
- metadata.gz: 4e13797075610d3a5d99917a8d4584014ef320bc8a522a2785061b24d1fe842dda34d9cee834af07918ae9b826de3566244bdd0b693ac632363bebe6302874dc
7
- data.tar.gz: 490d7e3e2688ef984bd2de0a90a90ee9946120ae0eb2b532eb561e4e8b102b0ef6e8e6d4cfe80df6edd111e4e15e03c84e58b7c1e0bd35186c19c89835e41a04
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.4.0
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.9"
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.20'
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
@@ -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.0.1'
35
- spec.add_development_dependency 'fasterer', '~> 0.9.0'
36
- spec.add_development_dependency 'ffaker', '~> 2.20'
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.58.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.26'
44
- spec.add_development_dependency 'rubocop-performance', '~> 1.13', '>= 1.13.3'
45
- spec.add_development_dependency 'rubocop-rspec', '~> 2.9'
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
@@ -7,7 +7,7 @@ checks:
7
7
  plugins:
8
8
  rubocop:
9
9
  enabled: true
10
- channel: rubocop-1-26
10
+ channel: rubocop-1-32
11
11
 
12
12
  reek:
13
13
  enabled: true
@@ -12,7 +12,7 @@ cd ruby-smtp-mock
12
12
  Configure latest Ruby environment:
13
13
 
14
14
  ```bash
15
- echo 'ruby-3.1.1' > .ruby-version
15
+ echo 'ruby-3.1.2' > .ruby-version
16
16
  cp .circleci/gemspec_latest smtp_mock.gemspec
17
17
  ```
18
18
 
@@ -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
- Naming/BlockForwarding:
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
- Style/HashEachMethods:
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
- Layout/SpaceBeforeBrackets:
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
- Security/IoMethods:
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
- Performance/Sum:
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/IdenticalEqualityAssertion:
384
- Enabled: true
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
- | `msg_msg_received: 'Message has been received'` | Custom received message body message |
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/MethodLength, Metrics/AbcSize
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
- parser.on('-iPATH', '--install=PATH', 'Install smtpmock to the existing path') do |argument|
18
- self.install_path = argument
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
- parser.on('-u', '--uninstall', 'Uninstall smtpmock') do
27
- return if not_installed? # rubocop:disable Lint/NonLocalExitFromIterator
24
+ opt_parser.parse(command_line_args) # TODO: add error handler
25
+ end
28
26
 
29
- ::Kernel.system("#{as_sudo}unlink #{SmtpMock::Dependency::SYMLINK}")
30
- ::Kernel.system("rm #{current_smtpmock_path}")
31
- self.message = 'smtpmock was uninstalled successfully'
32
- end
27
+ private
33
28
 
34
- parser.on('-g', '--upgrade', 'Upgrade to latest version of smtpmock') do
35
- return if not_installed? # rubocop:disable Lint/NonLocalExitFromIterator
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
- install_to(current_smtpmock_path[%r{(.+)/.+}, 1])
38
- self.message = 'smtpmock was upgraded successfully'
39
- end
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
- parser.on('-h', '--help', 'Prints help') { self.message = parser.to_s }
40
+ def uninstall
41
+ lambda do |_|
42
+ return if not_installed?
42
43
 
43
- self.success = true
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
- opt_parser.parse(command_line_args) # TODO: add error handler
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
- private
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
@@ -3,7 +3,7 @@
3
3
  module SmtpMock
4
4
  module Cli
5
5
  Command = ::Struct.new(:install_path, :sudo, :success, :message) do
6
- include Resolver
6
+ include SmtpMock::Cli::Resolver
7
7
  end
8
8
 
9
9
  def self.call(command_line_args, command = SmtpMock::Cli::Command)
@@ -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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SmtpMock
4
- VERSION = '1.0.1'
4
+ VERSION = '1.2.1'
5
5
  end
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.20'
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.0.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-03-10 00:00:00.000000000 Z
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.20'
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.20'
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
- rubyforge_project:
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