smtp_mock 1.0.0 → 1.2.0
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 +11 -3
- data/.circleci/gemspec_compatible +3 -6
- data/.circleci/gemspec_latest +47 -0
- data/.codeclimate.yml +1 -1
- data/.github/DEVELOPMENT_ENVIRONMENT_GUIDE.md +26 -0
- data/.github/FUNDING.yml +1 -0
- data/.reek.yml +2 -2
- data/.rubocop.yml +12 -282
- data/.ruby-version +1 -1
- data/CHANGELOG.md +42 -0
- data/CONTRIBUTING.md +4 -2
- 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 +4 -15
- metadata +10 -153
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61d44a5dae5f6ba3f2a8b9dfea9ef79f66d87cc229d0f2b67351e93898e81c99
|
4
|
+
data.tar.gz: 211930e92b9075fb4d0afbb70729814344752ceb5a8839408f4d0e24449cae0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d3615059b8c883c0cb3fb71be0bcabb7bdd1c31489d2e2c2585aaa81823f83f6386dfaff15b17854bc22ffd7224514e15765a52556c8e5a08cc6d55d969da3c
|
7
|
+
data.tar.gz: 4a58ac1a1e53a7b04f204dae54ee57d572189d02f2a09b0c73cd3d3e76ccddd86bd7dda95dc1e00a10b7411cbb704c8801c7e8285507bda915a0f8538dd0761e
|
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
|
@@ -40,9 +40,15 @@ references:
|
|
40
40
|
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
41
41
|
chmod +x ./cc-test-reporter
|
42
42
|
|
43
|
+
use_latest_gemspec: &use_latest_gemspec
|
44
|
+
run:
|
45
|
+
name: Using latest gemspec
|
46
|
+
command: |
|
47
|
+
cp .circleci/gemspec_latest smtp_mock.gemspec
|
48
|
+
|
43
49
|
use_compatible_gemspec: &use_compatible_gemspec
|
44
50
|
run:
|
45
|
-
name:
|
51
|
+
name: Using compatible gemspec
|
46
52
|
command: |
|
47
53
|
cp .circleci/gemspec_compatible smtp_mock.gemspec
|
48
54
|
|
@@ -57,6 +63,7 @@ jobs:
|
|
57
63
|
steps:
|
58
64
|
- checkout
|
59
65
|
|
66
|
+
- <<: *use_latest_gemspec
|
60
67
|
- <<: *restore_bundle_cache
|
61
68
|
- <<: *bundle_install
|
62
69
|
- <<: *save_bundle_cache
|
@@ -77,6 +84,7 @@ jobs:
|
|
77
84
|
steps:
|
78
85
|
- checkout
|
79
86
|
|
87
|
+
- <<: *use_latest_gemspec
|
80
88
|
- <<: *restore_bundle_cache
|
81
89
|
- <<: *bundle_install
|
82
90
|
- <<: *save_bundle_cache
|
@@ -114,7 +122,7 @@ jobs:
|
|
114
122
|
- checkout
|
115
123
|
- <<: *use_compatible_gemspec
|
116
124
|
- ruby/install-deps:
|
117
|
-
bundler-version: "2.3.
|
125
|
+
bundler-version: "2.3.18"
|
118
126
|
with-cache: false
|
119
127
|
path: './vendor/custom_bundle'
|
120
128
|
- <<: *system_dependencies
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require 'smtp_mock/version'
|
3
|
+
require_relative 'lib/smtp_mock/version'
|
6
4
|
|
7
5
|
Gem::Specification.new do |spec|
|
8
6
|
spec.name = 'smtp_mock'
|
@@ -32,8 +30,7 @@ Gem::Specification.new do |spec|
|
|
32
30
|
|
33
31
|
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
|
34
32
|
|
35
|
-
spec.add_development_dependency 'ffaker', '~> 2.
|
36
|
-
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
33
|
+
spec.add_development_dependency 'ffaker', '~> 2.21'
|
37
34
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
38
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.11'
|
39
36
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/smtp_mock/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'smtp_mock'
|
7
|
+
spec.version = SmtpMock::VERSION
|
8
|
+
spec.authors = ['Vladislav Trotsenko']
|
9
|
+
spec.email = ['admin@bestweb.com.ua']
|
10
|
+
|
11
|
+
spec.summary = %(smtp_mock)
|
12
|
+
spec.description = %(💎 Ruby SMTP mock. Mimic any SMTP server behaviour for your test environment.)
|
13
|
+
|
14
|
+
spec.homepage = 'https://github.com/mocktools/ruby-smtp-mock'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.metadata = {
|
18
|
+
'homepage_uri' => 'https://github.com/mocktools/ruby-smtp-mock',
|
19
|
+
'changelog_uri' => 'https://github.com/mocktools/ruby-smtp-mock/blob/master/CHANGELOG.md',
|
20
|
+
'source_code_uri' => 'https://github.com/mocktools/ruby-smtp-mock',
|
21
|
+
'documentation_uri' => 'https://github.com/mocktools/ruby-smtp-mock/blob/master/README.md',
|
22
|
+
'bug_tracker_uri' => 'https://github.com/mocktools/ruby-smtp-mock/issues'
|
23
|
+
}
|
24
|
+
|
25
|
+
spec.required_ruby_version = '>= 2.5.0'
|
26
|
+
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
28
|
+
spec.executables = %w[smtp_mock]
|
29
|
+
spec.require_paths = %w[lib]
|
30
|
+
spec.post_install_message = 'smtpmock is required system dependency. For more details run: `bundle exec smtp_mock -h`'
|
31
|
+
|
32
|
+
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
|
33
|
+
|
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
|
+
spec.add_development_dependency 'net-smtp', '~> 0.3.1'
|
38
|
+
spec.add_development_dependency 'overcommit', '~> 0.59.1'
|
39
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
40
|
+
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
41
|
+
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.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
|
+
spec.add_development_dependency 'simplecov', '~> 0.21.2'
|
47
|
+
end
|
data/.codeclimate.yml
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Development environment guide
|
2
|
+
|
3
|
+
## Preparing
|
4
|
+
|
5
|
+
Clone `smtp_mock` repository:
|
6
|
+
|
7
|
+
```bash
|
8
|
+
git clone https://github.com/mocktools/ruby-smtp-mock.git
|
9
|
+
cd ruby-smtp-mock
|
10
|
+
```
|
11
|
+
|
12
|
+
Configure latest Ruby environment:
|
13
|
+
|
14
|
+
```bash
|
15
|
+
echo 'ruby-3.1.2' > .ruby-version
|
16
|
+
cp .circleci/gemspec_latest smtp_mock.gemspec
|
17
|
+
```
|
18
|
+
|
19
|
+
## Commiting
|
20
|
+
|
21
|
+
Commit your changes excluding `.ruby-version`, `smtp_mock.gemspec`
|
22
|
+
|
23
|
+
```bash
|
24
|
+
git add . ':!.ruby-version' ':!smtp_mock.gemspec'
|
25
|
+
git commit -m 'Your new awesome smtp_mock feature'
|
26
|
+
```
|
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,132 +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
|
56
|
+
# Layout ----------------------------------------------------------------------
|
168
57
|
|
169
58
|
Layout/LineLength:
|
170
59
|
Max: 150
|
171
60
|
|
172
|
-
Layout/EmptyLinesAroundAttributeAccessor:
|
173
|
-
Enabled: true
|
174
|
-
|
175
|
-
Layout/SpaceAroundMethodCallOperator:
|
176
|
-
Enabled: true
|
177
|
-
|
178
61
|
Layout/ClassStructure:
|
179
62
|
Enabled: true
|
180
63
|
Categories:
|
@@ -194,158 +77,17 @@ Layout/ClassStructure:
|
|
194
77
|
Layout/EmptyLineAfterGuardClause:
|
195
78
|
Enabled: false
|
196
79
|
|
197
|
-
|
198
|
-
Enabled: true
|
199
|
-
|
200
|
-
Layout/LineEndStringConcatenationIndentation:
|
201
|
-
Enabled: true
|
202
|
-
|
203
|
-
Lint/NonDeterministicRequireOrder:
|
204
|
-
Enabled: true
|
205
|
-
|
206
|
-
Lint/DeprecatedOpenSSLConstant:
|
207
|
-
Enabled: true
|
208
|
-
|
209
|
-
Lint/DuplicateElsifCondition:
|
210
|
-
Enabled: true
|
211
|
-
|
212
|
-
Lint/MixedRegexpCaptureTypes:
|
213
|
-
Enabled: true
|
214
|
-
|
215
|
-
Lint/RaiseException:
|
216
|
-
Enabled: true
|
217
|
-
|
218
|
-
Lint/StructNewOverride:
|
219
|
-
Enabled: true
|
220
|
-
|
221
|
-
Lint/DuplicateBranch:
|
222
|
-
Enabled: true
|
223
|
-
|
224
|
-
Lint/DuplicateRegexpCharacterClassElement:
|
225
|
-
Enabled: true
|
226
|
-
|
227
|
-
Lint/EmptyBlock:
|
228
|
-
Enabled: true
|
229
|
-
|
230
|
-
Lint/EmptyClass:
|
231
|
-
Enabled: true
|
232
|
-
|
233
|
-
Lint/NoReturnInBeginEndBlocks:
|
234
|
-
Enabled: true
|
235
|
-
|
236
|
-
Lint/ToEnumArguments:
|
237
|
-
Enabled: true
|
238
|
-
|
239
|
-
Lint/UnexpectedBlockArity:
|
240
|
-
Enabled: true
|
241
|
-
|
242
|
-
Lint/AmbiguousAssignment:
|
243
|
-
Enabled: true
|
244
|
-
|
245
|
-
Lint/DeprecatedConstants:
|
246
|
-
Enabled: true
|
247
|
-
|
248
|
-
Lint/LambdaWithoutLiteralBlock:
|
249
|
-
Enabled: true
|
250
|
-
|
251
|
-
Lint/RedundantDirGlobSort:
|
252
|
-
Enabled: true
|
253
|
-
|
254
|
-
Lint/UnmodifiedReduceAccumulator:
|
255
|
-
Enabled: true
|
256
|
-
|
257
|
-
Lint/NumberedParameterAssignment:
|
258
|
-
Enabled: true
|
259
|
-
|
260
|
-
Lint/OrAssignmentToConstant:
|
261
|
-
Enabled: true
|
262
|
-
|
263
|
-
Lint/SymbolConversion:
|
264
|
-
Enabled: true
|
265
|
-
|
266
|
-
Lint/TripleQuotes:
|
267
|
-
Enabled: true
|
268
|
-
|
269
|
-
Lint/EmptyInPattern:
|
270
|
-
Enabled: true
|
271
|
-
|
272
|
-
Lint/AmbiguousRange:
|
273
|
-
Enabled: true
|
274
|
-
|
275
|
-
Lint/AmbiguousOperatorPrecedence:
|
276
|
-
Enabled: true
|
277
|
-
|
278
|
-
Lint/IncompatibleIoSelectWithFiberScheduler:
|
279
|
-
Enabled: true
|
280
|
-
|
281
|
-
Lint/RequireRelativeSelfPath:
|
282
|
-
Enabled: true
|
283
|
-
|
284
|
-
Lint/UselessRuby2Keywords:
|
285
|
-
Enabled: true
|
286
|
-
|
287
|
-
Gemspec/DateAssignment:
|
288
|
-
Enabled: true
|
80
|
+
# Gemspec ---------------------------------------------------------------------
|
289
81
|
|
290
82
|
Gemspec/RequireMFA:
|
291
83
|
Enabled: false
|
292
84
|
|
293
|
-
|
294
|
-
Enabled: true
|
295
|
-
|
296
|
-
Performance/AncestorsInclude:
|
297
|
-
Enabled: true
|
298
|
-
|
299
|
-
Performance/BigDecimalWithNumericArgument:
|
300
|
-
Enabled: true
|
301
|
-
|
302
|
-
Performance/RedundantSortBlock:
|
303
|
-
Enabled: true
|
304
|
-
|
305
|
-
Performance/RedundantStringChars:
|
306
|
-
Enabled: true
|
307
|
-
|
308
|
-
Performance/ReverseFirst:
|
309
|
-
Enabled: true
|
310
|
-
|
311
|
-
Performance/SortReverse:
|
312
|
-
Enabled: true
|
313
|
-
|
314
|
-
Performance/Squeeze:
|
315
|
-
Enabled: true
|
316
|
-
|
317
|
-
Performance/StringInclude:
|
318
|
-
Enabled: true
|
319
|
-
|
320
|
-
Performance/BlockGivenWithExplicitBlock:
|
321
|
-
Enabled: true
|
322
|
-
|
323
|
-
Performance/CollectionLiteralInLoop:
|
324
|
-
Enabled: true
|
325
|
-
|
326
|
-
Performance/ConstantRegexp:
|
327
|
-
Enabled: true
|
85
|
+
# Performance -----------------------------------------------------------------
|
328
86
|
|
329
87
|
Performance/MethodObjectAsBlock:
|
330
88
|
Enabled: false
|
331
89
|
|
332
|
-
|
333
|
-
Enabled: true
|
334
|
-
|
335
|
-
Performance/RedundantEqualityComparisonBlock:
|
336
|
-
Enabled: true
|
337
|
-
|
338
|
-
Performance/RedundantSplitRegexpArgument:
|
339
|
-
Enabled: true
|
340
|
-
|
341
|
-
Performance/MapCompact:
|
342
|
-
Enabled: true
|
343
|
-
|
344
|
-
Performance/ConcurrentMonotonicTime:
|
345
|
-
Enabled: true
|
346
|
-
|
347
|
-
Performance/StringIdentifierArgument:
|
348
|
-
Enabled: true
|
90
|
+
# RSpec -----------------------------------------------------------------------
|
349
91
|
|
350
92
|
RSpec/ExampleLength:
|
351
93
|
Enabled: false
|
@@ -377,17 +119,5 @@ RSpec/MultipleMemoizedHelpers:
|
|
377
119
|
RSpec/StubbedMock:
|
378
120
|
Enabled: false
|
379
121
|
|
380
|
-
RSpec/
|
381
|
-
Enabled:
|
382
|
-
|
383
|
-
RSpec/Rails/AvoidSetupHook:
|
384
|
-
Enabled: true
|
385
|
-
|
386
|
-
RSpec/ExcessiveDocstringSpacing:
|
387
|
-
Enabled: true
|
388
|
-
|
389
|
-
RSpec/SubjectDeclaration:
|
390
|
-
Enabled: true
|
391
|
-
|
392
|
-
RSpec/FactoryBot/SyntaxMethods:
|
393
|
-
Enabled: true
|
122
|
+
RSpec/VerifiedDoubleReference:
|
123
|
+
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-
|
1
|
+
ruby-2.5.0
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,48 @@
|
|
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.0] - 2022-07-27
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- Ability to use `RSET` SMTP command
|
10
|
+
- Ability to configure multiple message receiving flow during one session
|
11
|
+
- Ability to configure SMTP command delay responses
|
12
|
+
|
13
|
+
### Updated
|
14
|
+
|
15
|
+
- Updated gemspecs
|
16
|
+
- Updated tests
|
17
|
+
- Updated rubocop/codeclimate/circleci configs
|
18
|
+
- Updated gem development dependencies
|
19
|
+
- Updated gem documentation, version
|
20
|
+
|
21
|
+
## [1.1.0] - 2022-05-17
|
22
|
+
|
23
|
+
### Added
|
24
|
+
|
25
|
+
- Ability to check `smtpmock` version from cli
|
26
|
+
|
27
|
+
### Updated
|
28
|
+
|
29
|
+
- Updated gemspecs
|
30
|
+
- Updated codeclimate/circleci configs
|
31
|
+
- Updated gem development dependencies
|
32
|
+
- Updated gem version
|
33
|
+
|
34
|
+
## [1.0.1] - 2022-03-10
|
35
|
+
|
36
|
+
### Added
|
37
|
+
|
38
|
+
- Development environment guide
|
39
|
+
|
40
|
+
### Updated
|
41
|
+
|
42
|
+
- Updated gemspecs
|
43
|
+
- Updated codeclimate/circleci configs
|
44
|
+
- Updated gem development dependencies
|
45
|
+
- Updated gem version
|
46
|
+
|
5
47
|
## [1.0.0] - 2022-01-31
|
6
48
|
|
7
49
|
### Added
|
data/CONTRIBUTING.md
CHANGED
@@ -42,5 +42,7 @@ Guidelines for pull requests:
|
|
42
42
|
2. Fork the repo, checkout to `develop` branch
|
43
43
|
3. Run the tests. This is to make sure your starting point works
|
44
44
|
4. Read our [branch naming convention](.github/BRANCH_NAMING_CONVENTION.md)
|
45
|
-
5. Create a new branch
|
46
|
-
6.
|
45
|
+
5. Create a new branch
|
46
|
+
6. Read our [setup development environment guide](.github/DEVELOPMENT_ENVIRONMENT_GUIDE.md)
|
47
|
+
7. Make your changes. Please note that your PR should include tests for the new codebase!
|
48
|
+
9. Push to your fork and submit a pull request to `develop` branch
|
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
|
+
| `multipleMessageReceiving: 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
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require 'smtp_mock/version'
|
3
|
+
require_relative 'lib/smtp_mock/version'
|
6
4
|
|
7
5
|
Gem::Specification.new do |spec|
|
8
6
|
spec.name = 'smtp_mock'
|
@@ -33,17 +31,8 @@ Gem::Specification.new do |spec|
|
|
33
31
|
|
34
32
|
spec.add_runtime_dependency 'dry-struct', '~> 1.4'
|
35
33
|
|
36
|
-
spec.add_development_dependency '
|
37
|
-
spec.add_development_dependency '
|
38
|
-
spec.add_development_dependency 'ffaker', '~> 2.20'
|
39
|
-
spec.add_development_dependency 'net-smtp', '~> 0.3.1'
|
40
|
-
spec.add_development_dependency 'overcommit', '~> 0.58.0'
|
41
|
-
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
34
|
+
spec.add_development_dependency 'ffaker', '~> 2.21'
|
35
|
+
spec.add_development_dependency 'net-smtp', '~> 0.3.1' if ::RUBY_VERSION >= '3.1.0'
|
42
36
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
43
|
-
spec.add_development_dependency '
|
44
|
-
spec.add_development_dependency 'rspec', '~> 3.10'
|
45
|
-
spec.add_development_dependency 'rubocop', '~> 1.25'
|
46
|
-
spec.add_development_dependency 'rubocop-performance', '~> 1.13', '>= 1.13.2'
|
47
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 2.8'
|
48
|
-
spec.add_development_dependency 'simplecov', '~> 0.21.2'
|
37
|
+
spec.add_development_dependency 'rspec', '~> 3.11'
|
49
38
|
end
|
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.0
|
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
|
@@ -24,90 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.4'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler-audit
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.9.0.1
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.9.0.1
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: fasterer
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 0.9.0
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.9.0
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: ffaker
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
31
|
- - "~>"
|
60
32
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
33
|
+
version: '2.21'
|
62
34
|
type: :development
|
63
35
|
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
38
|
- - "~>"
|
67
39
|
- !ruby/object:Gem::Version
|
68
|
-
version: '2.
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: net-smtp
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.3.1
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.3.1
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: overcommit
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.58.0
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.58.0
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry-byebug
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '3.9'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '3.9'
|
40
|
+
version: '2.21'
|
111
41
|
- !ruby/object:Gem::Dependency
|
112
42
|
name: rake
|
113
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,96 +58,20 @@ dependencies:
|
|
128
58
|
- - ">="
|
129
59
|
- !ruby/object:Gem::Version
|
130
60
|
version: 13.0.6
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: reek
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - "~>"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '6.1'
|
138
|
-
type: :development
|
139
|
-
prerelease: false
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
- - "~>"
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: '6.1'
|
145
61
|
- !ruby/object:Gem::Dependency
|
146
62
|
name: rspec
|
147
63
|
requirement: !ruby/object:Gem::Requirement
|
148
64
|
requirements:
|
149
65
|
- - "~>"
|
150
66
|
- !ruby/object:Gem::Version
|
151
|
-
version: '3.
|
152
|
-
type: :development
|
153
|
-
prerelease: false
|
154
|
-
version_requirements: !ruby/object:Gem::Requirement
|
155
|
-
requirements:
|
156
|
-
- - "~>"
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: '3.10'
|
159
|
-
- !ruby/object:Gem::Dependency
|
160
|
-
name: rubocop
|
161
|
-
requirement: !ruby/object:Gem::Requirement
|
162
|
-
requirements:
|
163
|
-
- - "~>"
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '1.25'
|
166
|
-
type: :development
|
167
|
-
prerelease: false
|
168
|
-
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
requirements:
|
170
|
-
- - "~>"
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: '1.25'
|
173
|
-
- !ruby/object:Gem::Dependency
|
174
|
-
name: rubocop-performance
|
175
|
-
requirement: !ruby/object:Gem::Requirement
|
176
|
-
requirements:
|
177
|
-
- - "~>"
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
version: '1.13'
|
180
|
-
- - ">="
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
version: 1.13.2
|
183
|
-
type: :development
|
184
|
-
prerelease: false
|
185
|
-
version_requirements: !ruby/object:Gem::Requirement
|
186
|
-
requirements:
|
187
|
-
- - "~>"
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '1.13'
|
190
|
-
- - ">="
|
191
|
-
- !ruby/object:Gem::Version
|
192
|
-
version: 1.13.2
|
193
|
-
- !ruby/object:Gem::Dependency
|
194
|
-
name: rubocop-rspec
|
195
|
-
requirement: !ruby/object:Gem::Requirement
|
196
|
-
requirements:
|
197
|
-
- - "~>"
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: '2.8'
|
200
|
-
type: :development
|
201
|
-
prerelease: false
|
202
|
-
version_requirements: !ruby/object:Gem::Requirement
|
203
|
-
requirements:
|
204
|
-
- - "~>"
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: '2.8'
|
207
|
-
- !ruby/object:Gem::Dependency
|
208
|
-
name: simplecov
|
209
|
-
requirement: !ruby/object:Gem::Requirement
|
210
|
-
requirements:
|
211
|
-
- - "~>"
|
212
|
-
- !ruby/object:Gem::Version
|
213
|
-
version: 0.21.2
|
67
|
+
version: '3.11'
|
214
68
|
type: :development
|
215
69
|
prerelease: false
|
216
70
|
version_requirements: !ruby/object:Gem::Requirement
|
217
71
|
requirements:
|
218
72
|
- - "~>"
|
219
73
|
- !ruby/object:Gem::Version
|
220
|
-
version:
|
74
|
+
version: '3.11'
|
221
75
|
description: "\U0001F48E Ruby SMTP mock. Mimic any SMTP server behaviour for your
|
222
76
|
test environment."
|
223
77
|
email:
|
@@ -229,8 +83,11 @@ extra_rdoc_files: []
|
|
229
83
|
files:
|
230
84
|
- ".circleci/config.yml"
|
231
85
|
- ".circleci/gemspec_compatible"
|
86
|
+
- ".circleci/gemspec_latest"
|
232
87
|
- ".codeclimate.yml"
|
233
88
|
- ".github/BRANCH_NAMING_CONVENTION.md"
|
89
|
+
- ".github/DEVELOPMENT_ENVIRONMENT_GUIDE.md"
|
90
|
+
- ".github/FUNDING.yml"
|
234
91
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
235
92
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
236
93
|
- ".github/ISSUE_TEMPLATE/issue_report.md"
|
@@ -296,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
296
153
|
- !ruby/object:Gem::Version
|
297
154
|
version: '0'
|
298
155
|
requirements: []
|
299
|
-
rubygems_version: 3.
|
156
|
+
rubygems_version: 3.2.20
|
300
157
|
signing_key:
|
301
158
|
specification_version: 4
|
302
159
|
summary: smtp_mock
|