smtp_mock 0.1.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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +132 -0
  3. data/.codeclimate.yml +13 -0
  4. data/.github/BRANCH_NAMING_CONVENTION.md +36 -0
  5. data/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
  6. data/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
  7. data/.github/ISSUE_TEMPLATE/issue_report.md +28 -0
  8. data/.github/ISSUE_TEMPLATE/question.md +22 -0
  9. data/.github/PULL_REQUEST_TEMPLATE.md +49 -0
  10. data/.gitignore +12 -0
  11. data/.overcommit.yml +32 -0
  12. data/.reek.yml +30 -0
  13. data/.rspec +3 -0
  14. data/.rubocop.yml +396 -0
  15. data/.ruby-gemset +1 -0
  16. data/.ruby-version +1 -0
  17. data/CHANGELOG.md +9 -0
  18. data/CODE_OF_CONDUCT.md +74 -0
  19. data/CONTRIBUTING.md +46 -0
  20. data/Gemfile +5 -0
  21. data/LICENSE.txt +21 -0
  22. data/README.md +242 -0
  23. data/Rakefile +8 -0
  24. data/bin/console +15 -0
  25. data/bin/setup +8 -0
  26. data/bin/smtp_mock +6 -0
  27. data/lib/smtp_mock/cli/resolver.rb +61 -0
  28. data/lib/smtp_mock/cli.rb +17 -0
  29. data/lib/smtp_mock/command_line_args_builder.rb +94 -0
  30. data/lib/smtp_mock/core.rb +18 -0
  31. data/lib/smtp_mock/dependency.rb +26 -0
  32. data/lib/smtp_mock/error/argument.rb +7 -0
  33. data/lib/smtp_mock/error/dependency.rb +9 -0
  34. data/lib/smtp_mock/error/server.rb +7 -0
  35. data/lib/smtp_mock/server/port.rb +27 -0
  36. data/lib/smtp_mock/server/process.rb +44 -0
  37. data/lib/smtp_mock/server.rb +59 -0
  38. data/lib/smtp_mock/test_framework/rspec/helper.rb +15 -0
  39. data/lib/smtp_mock/test_framework/rspec/interface.rb +29 -0
  40. data/lib/smtp_mock/test_framework/rspec.rb +10 -0
  41. data/lib/smtp_mock/version.rb +5 -0
  42. data/lib/smtp_mock.rb +19 -0
  43. data/smtp_mock.gemspec +49 -0
  44. data/tmp/.gitkeep +0 -0
  45. metadata +288 -0
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SmtpMock
4
+ module TestFramework
5
+ module RSpec
6
+ module Interface
7
+ class << self
8
+ attr_reader :smtp_mock_server
9
+
10
+ def start_server(**options)
11
+ @smtp_mock_server ||= SmtpMock.start_server(**options) # rubocop:disable Naming/MemoizedInstanceVariableName
12
+ end
13
+
14
+ def clear_server!
15
+ @smtp_mock_server = nil
16
+ end
17
+
18
+ def stop_server!
19
+ return unless smtp_mock_server
20
+
21
+ smtp_mock_server.stop!
22
+ clear_server!
23
+ true
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec/core'
4
+ require_relative '../../smtp_mock'
5
+ require_relative './rspec/interface'
6
+ require_relative './rspec/helper'
7
+
8
+ RSpec.configure do |config|
9
+ config.after { SmtpMock::TestFramework::RSpec::Interface.stop_server! }
10
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SmtpMock
4
+ VERSION = '0.1.0'
5
+ end
data/lib/smtp_mock.rb ADDED
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'smtp_mock/core'
4
+
5
+ module SmtpMock
6
+ class << self
7
+ def start_server(server = SmtpMock::Server, **options)
8
+ server.new(**options)
9
+ end
10
+
11
+ def running_servers
12
+ ::ObjectSpace.each_object(SmtpMock::Server).select(&:active?)
13
+ end
14
+
15
+ def stop_running_servers!
16
+ running_servers.all?(&:stop!)
17
+ end
18
+ end
19
+ end
data/smtp_mock.gemspec ADDED
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = ::File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'smtp_mock/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'smtp_mock'
9
+ spec.version = SmtpMock::VERSION
10
+ spec.authors = ['Vladislav Trotsenko']
11
+ spec.email = ['admin@bestweb.com.ua']
12
+
13
+ spec.summary = %(smtp_mock)
14
+ spec.description = %(💎 Ruby SMTP mock. Mimic any SMTP server behaviour for your test environment.)
15
+
16
+ spec.homepage = 'https://github.com/mocktools/ruby-smtp-mock'
17
+ spec.license = 'MIT'
18
+
19
+ spec.metadata = {
20
+ 'homepage_uri' => 'https://github.com/mocktools/ruby-smtp-mock',
21
+ 'changelog_uri' => 'https://github.com/mocktools/ruby-smtp-mock/blob/master/CHANGELOG.md',
22
+ 'source_code_uri' => 'https://github.com/mocktools/ruby-smtp-mock',
23
+ 'documentation_uri' => 'https://github.com/mocktools/ruby-smtp-mock/blob/master/README.md',
24
+ 'bug_tracker_uri' => 'https://github.com/mocktools/ruby-smtp-mock/issues'
25
+ }
26
+
27
+ spec.required_ruby_version = '>= 2.5.0'
28
+
29
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
30
+ spec.executables = %w[smtp_mock]
31
+ spec.require_paths = %w[lib]
32
+ spec.post_install_message = 'smtpmock is required system dependency. For more details run: `bundle exec smtp_mock -h`'
33
+
34
+ spec.add_runtime_dependency 'dry-struct', '~> 1.4'
35
+
36
+ spec.add_development_dependency 'bundler-audit', '~> 0.9.0.1'
37
+ spec.add_development_dependency 'fasterer', '~> 0.9.0'
38
+ spec.add_development_dependency 'ffaker', '~> 2.20'
39
+ spec.add_development_dependency 'net-smtp', '~> 0.3' if ::RUBY_VERSION >= '3.1.0'
40
+ spec.add_development_dependency 'overcommit', '~> 0.58.0'
41
+ spec.add_development_dependency 'pry-byebug', '~> 3.9'
42
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
43
+ spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.6'
44
+ spec.add_development_dependency 'rspec', '~> 3.10'
45
+ spec.add_development_dependency 'rubocop', '~> 1.24'
46
+ spec.add_development_dependency 'rubocop-performance', '~> 1.13'
47
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.7'
48
+ spec.add_development_dependency 'simplecov', '~> 0.17.1'
49
+ end
data/tmp/.gitkeep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,288 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smtp_mock
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Vladislav Trotsenko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-01-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dry-struct
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
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
+ - !ruby/object:Gem::Dependency
56
+ name: ffaker
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.20'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.20'
69
+ - !ruby/object:Gem::Dependency
70
+ name: overcommit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.58.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.58.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.9'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '13.0'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 13.0.6
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '13.0'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 13.0.6
117
+ - !ruby/object:Gem::Dependency
118
+ name: reek
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '6.0'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 6.0.6
127
+ type: :development
128
+ prerelease: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '6.0'
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 6.0.6
137
+ - !ruby/object:Gem::Dependency
138
+ name: rspec
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '3.10'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '3.10'
151
+ - !ruby/object:Gem::Dependency
152
+ name: rubocop
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '1.24'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '1.24'
165
+ - !ruby/object:Gem::Dependency
166
+ name: rubocop-performance
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '1.13'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '1.13'
179
+ - !ruby/object:Gem::Dependency
180
+ name: rubocop-rspec
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '2.7'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '2.7'
193
+ - !ruby/object:Gem::Dependency
194
+ name: simplecov
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: 0.17.1
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: 0.17.1
207
+ description: "\U0001F48E Ruby SMTP mock. Mimic any SMTP server behaviour for your
208
+ test environment."
209
+ email:
210
+ - admin@bestweb.com.ua
211
+ executables:
212
+ - smtp_mock
213
+ extensions: []
214
+ extra_rdoc_files: []
215
+ files:
216
+ - ".circleci/config.yml"
217
+ - ".codeclimate.yml"
218
+ - ".github/BRANCH_NAMING_CONVENTION.md"
219
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
220
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
221
+ - ".github/ISSUE_TEMPLATE/issue_report.md"
222
+ - ".github/ISSUE_TEMPLATE/question.md"
223
+ - ".github/PULL_REQUEST_TEMPLATE.md"
224
+ - ".gitignore"
225
+ - ".overcommit.yml"
226
+ - ".reek.yml"
227
+ - ".rspec"
228
+ - ".rubocop.yml"
229
+ - ".ruby-gemset"
230
+ - ".ruby-version"
231
+ - CHANGELOG.md
232
+ - CODE_OF_CONDUCT.md
233
+ - CONTRIBUTING.md
234
+ - Gemfile
235
+ - LICENSE.txt
236
+ - README.md
237
+ - Rakefile
238
+ - bin/console
239
+ - bin/setup
240
+ - bin/smtp_mock
241
+ - lib/smtp_mock.rb
242
+ - lib/smtp_mock/cli.rb
243
+ - lib/smtp_mock/cli/resolver.rb
244
+ - lib/smtp_mock/command_line_args_builder.rb
245
+ - lib/smtp_mock/core.rb
246
+ - lib/smtp_mock/dependency.rb
247
+ - lib/smtp_mock/error/argument.rb
248
+ - lib/smtp_mock/error/dependency.rb
249
+ - lib/smtp_mock/error/server.rb
250
+ - lib/smtp_mock/server.rb
251
+ - lib/smtp_mock/server/port.rb
252
+ - lib/smtp_mock/server/process.rb
253
+ - lib/smtp_mock/test_framework/rspec.rb
254
+ - lib/smtp_mock/test_framework/rspec/helper.rb
255
+ - lib/smtp_mock/test_framework/rspec/interface.rb
256
+ - lib/smtp_mock/version.rb
257
+ - smtp_mock.gemspec
258
+ - tmp/.gitkeep
259
+ homepage: https://github.com/mocktools/ruby-smtp-mock
260
+ licenses:
261
+ - MIT
262
+ metadata:
263
+ homepage_uri: https://github.com/mocktools/ruby-smtp-mock
264
+ changelog_uri: https://github.com/mocktools/ruby-smtp-mock/blob/master/CHANGELOG.md
265
+ source_code_uri: https://github.com/mocktools/ruby-smtp-mock
266
+ documentation_uri: https://github.com/mocktools/ruby-smtp-mock/blob/master/README.md
267
+ bug_tracker_uri: https://github.com/mocktools/ruby-smtp-mock/issues
268
+ post_install_message: 'smtpmock is required system dependency. For more details run:
269
+ `bundle exec smtp_mock -h`'
270
+ rdoc_options: []
271
+ require_paths:
272
+ - lib
273
+ required_ruby_version: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ">="
276
+ - !ruby/object:Gem::Version
277
+ version: 2.5.0
278
+ required_rubygems_version: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
283
+ requirements: []
284
+ rubygems_version: 3.2.20
285
+ signing_key:
286
+ specification_version: 4
287
+ summary: smtp_mock
288
+ test_files: []