truemail-rspec 0.4.0 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10928162c670d094043889bb49124cebe4f6348aff992b3b1468b7014824874e
4
- data.tar.gz: 421e3053ac52723ee417594dbce92912fb1deeb0e1cdd606b22a5ec882d0c847
3
+ metadata.gz: 79d57916c2608c249cb6c13d364831ee48439257815cc9b48cb7ce1a9716351c
4
+ data.tar.gz: 1aed32b995f032784eeead13ae9e388bcf7318ac53c8abc4b9dc144d3753a183
5
5
  SHA512:
6
- metadata.gz: 2e62db29ba6762a1ec6390b41895808e4960015a3be10766694cab88fe8c8bd82999b8cba0f86ef4dc05b9ff1ef4ea180c81e65c7683597dbc04f73c9a183d7e
7
- data.tar.gz: 815e38cfd03f0fb4134644fc97fa93f53b79e75092491927a476778ba5eb9f81fe0ab7b597dae8d7df101186d921ca256e68d450e1bafd4be973c320db83b5b3
6
+ metadata.gz: 7f39045807f4faa8af25e74ef68fd58c9f94e639102a52ed1d2c3a8e23b5a79d95deb5e3d23868e076b0c65857778643c0e3643920d6b7474d9e18cb57d91bfa
7
+ data.tar.gz: aa7ac217cb456f932fa1f03d0f21f93a5ceb96eae4cd10d4c34ad67e176385f069ac078d95770c9869c95f9a0c6f243a50e9399b60768cfe2057e1e78c65a06e
data/.circleci/config.yml CHANGED
@@ -1,9 +1,12 @@
1
+ version: 2.1
2
+
1
3
  defaults: &defaults
2
4
  working_directory: ~/truemail-rspec
3
5
  docker:
4
- - image: circleci/ruby:2.5.0-node
5
- environment:
6
- CC_TEST_REPORTER_ID: 889fa37782e4f5d0f81705f0d869a9c907f04151faae8260dde55d3f74e65606
6
+ - image: cimg/ruby:<< parameters.ruby-version >>
7
+
8
+ orbs:
9
+ ruby: circleci/ruby@1.4.0
7
10
 
8
11
  references:
9
12
  restore_bundle_cache: &restore_bundle_cache
@@ -14,7 +17,9 @@ references:
14
17
  bundle_install: &bundle_install
15
18
  run:
16
19
  name: Installing gems
17
- command: bundle install --path vendor/bundle
20
+ command: |
21
+ bundle config set --local path 'vendor/bundle'
22
+ bundle install
18
23
 
19
24
  save_bundle_cache: &save_bundle_cache
20
25
  save_cache:
@@ -24,14 +29,23 @@ references:
24
29
 
25
30
  install_codeclimate_reporter: &install_codeclimate_reporter
26
31
  run:
27
- name: Install Code Climate Test Reporter
32
+ name: Installing CodeClimate test reporter
28
33
  command: |
29
34
  curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
30
35
  chmod +x ./cc-test-reporter
31
36
 
32
- version: 2
37
+ use_compatible_gemspec: &use_compatible_gemspec
38
+ run:
39
+ name: Use compatible gemspec
40
+ command: |
41
+ cp .circleci/gemspec_compatible truemail-rspec.gemspec
42
+
33
43
  jobs:
34
- linters:
44
+ linters-ruby:
45
+ parameters:
46
+ ruby-version:
47
+ type: string
48
+
35
49
  <<: *defaults
36
50
 
37
51
  steps:
@@ -42,12 +56,16 @@ jobs:
42
56
  - <<: *save_bundle_cache
43
57
 
44
58
  - run:
45
- name: Running overcommit
59
+ name: Running Overcommit
46
60
  command: |
47
61
  bundle exec overcommit -s
48
62
  SKIP=AuthorEmail,AuthorName bundle exec overcommit -r
49
63
 
50
- tests:
64
+ tests-ruby:
65
+ parameters:
66
+ ruby-version:
67
+ type: string
68
+
51
69
  <<: *defaults
52
70
 
53
71
  steps:
@@ -59,31 +77,55 @@ jobs:
59
77
  - <<: *install_codeclimate_reporter
60
78
 
61
79
  - run:
62
- name: Running tests
80
+ name: Running RSpec
63
81
  command: |
64
- mkdir /tmp/test-results
65
82
  ./cc-test-reporter before-build
66
83
  bundle exec rspec
67
84
 
68
85
  - run:
69
- name: Code Climate Test Coverage
86
+ name: Creating CodeClimate test coverage report
70
87
  command: |
71
88
  ./cc-test-reporter format-coverage -t simplecov -o "coverage/codeclimate.$CIRCLE_NODE_INDEX.json"
72
89
 
73
- - store_test_results:
74
- path: /tmp/test-results
75
-
76
90
  - store_artifacts:
77
- path: /tmp/test-results
78
- destination: test-results
91
+ name: Saving Simplecov coverage artifacts
92
+ path: ~/truemail-rspec/coverage
93
+ destination: coverage
79
94
 
80
95
  - deploy:
96
+ name: Uploading CodeClimate test coverage report
81
97
  command: |
82
98
  ./cc-test-reporter sum-coverage --output - --parts $CIRCLE_NODE_TOTAL coverage/codeclimate.*.json | ./cc-test-reporter upload-coverage --debug --input -
83
99
 
100
+ compatibility-ruby:
101
+ parameters:
102
+ ruby-version:
103
+ type: string
104
+ docker:
105
+ - image: cimg/ruby:<< parameters.ruby-version >>
106
+ steps:
107
+ - checkout
108
+ - <<: *use_compatible_gemspec
109
+ - ruby/install-deps:
110
+ bundler-version: "2.3.5"
111
+ with-cache: false
112
+ path: './vendor/custom_bundle'
113
+ - run:
114
+ name: Running compatibility tests
115
+ command: bundle exec rspec
116
+
84
117
  workflows:
85
- version: 2
86
- build:
118
+ build_and_test:
87
119
  jobs:
88
- - linters
89
- - tests
120
+ - linters-ruby:
121
+ matrix:
122
+ parameters:
123
+ ruby-version: ["3.1"]
124
+ - tests-ruby:
125
+ matrix:
126
+ parameters:
127
+ ruby-version: ["3.1"]
128
+ - compatibility-ruby:
129
+ matrix:
130
+ parameters:
131
+ ruby-version: ["2.5", "2.6", "2.7", "3.0"]
@@ -0,0 +1,43 @@
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 'truemail/rspec/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'truemail-rspec'
9
+ spec.version = Truemail::RSpec::VERSION
10
+ spec.authors = ['Vladislav Trotsenko']
11
+ spec.email = ['admin@bestweb.com.ua']
12
+
13
+ spec.summary = %(truemail-rspec)
14
+ spec.description = %(Truemail RSpec helpers)
15
+
16
+ spec.homepage = 'https://github.com/truemail-rb/truemail-rspec'
17
+ spec.license = 'MIT'
18
+
19
+ spec.metadata = {
20
+ 'homepage_uri' => 'https://truemail-rb.org',
21
+ 'changelog_uri' => 'https://github.com/truemail-rb/truemail-rspec/blob/master/CHANGELOG.md',
22
+ 'source_code_uri' => 'https://github.com/truemail-rb/truemail-rspec',
23
+ 'documentation_uri' => 'https://truemail-rb.org/truemail-rspec',
24
+ 'bug_tracker_uri' => 'https://github.com/truemail-rb/truemail-rspec/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.bindir = 'exe'
31
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| ::File.basename(f) }
32
+ spec.require_paths = ['lib']
33
+
34
+ spec.add_runtime_dependency 'ffaker', '~> 2.20'
35
+ spec.add_runtime_dependency 'rspec', '~> 3.10'
36
+ spec.add_runtime_dependency 'truemail', '~> 2.6', '>= 2.6.2'
37
+
38
+ spec.add_development_dependency 'ffaker', '~> 2.20'
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 'rspec', '~> 3.10'
42
+ spec.add_development_dependency 'simplecov', '~> 0.17.1'
43
+ end
data/.codeclimate.yml CHANGED
@@ -7,7 +7,7 @@ checks:
7
7
  plugins:
8
8
  rubocop:
9
9
  enabled: true
10
- channel: rubocop-1-10
10
+ channel: rubocop-1-25
11
11
 
12
12
  reek:
13
13
  enabled: true
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  /.rspec_status
2
2
  /pkg
3
3
  /coverage/
4
+ Gemfile.lock
data/.reek.yml CHANGED
@@ -11,6 +11,7 @@ detectors:
11
11
  ControlParameter:
12
12
  exclude:
13
13
  - Truemail::RSpec::AuditorHelper#create_auditor
14
+ - Truemail::RSpec::ValidatorHelper#create_servers_list
14
15
 
15
16
  NestedIterators:
16
17
  exclude:
@@ -24,9 +25,18 @@ detectors:
24
25
  DuplicateMethodCall:
25
26
  exclude:
26
27
  - Truemail::RSpec::ValidatorHelper#mx_layer
28
+ - Truemail::RSpec::ValidatorHelper#mx_blacklist_layer
27
29
  - Truemail::RSpec::ValidatorHelper#smtp_layer
28
30
  - Truemail::RSpec::ValidatorHelper#unstub_validation_layers
29
31
 
32
+ TooManyInstanceVariables:
33
+ exclude:
34
+ - Truemail::RSpec::ValidatorHelper::ValidatorFactory
35
+
36
+ UtilityFunction:
37
+ exclude:
38
+ - Truemail::RSpec::ValidatorHelper#create_servers_list
39
+
30
40
  LongParameterList:
31
41
  enabled: false
32
42
 
data/.rubocop.yml CHANGED
@@ -28,6 +28,12 @@ Naming/VariableNumber:
28
28
  Naming/RescuedExceptionsVariableName:
29
29
  Enabled: false
30
30
 
31
+ Naming/InclusiveLanguage:
32
+ Enabled: false
33
+
34
+ Naming/BlockForwarding:
35
+ Enabled: true
36
+
31
37
  Style/Documentation:
32
38
  Enabled: false
33
39
 
@@ -136,6 +142,42 @@ Style/HashExcept:
136
142
  Style/IfWithBooleanLiteralBranches:
137
143
  Enabled: true
138
144
 
145
+ Style/StringChars:
146
+ Enabled: true
147
+
148
+ Style/InPatternThen:
149
+ Enabled: true
150
+
151
+ Style/MultilineInPatternThen:
152
+ Enabled: true
153
+
154
+ Style/QuotedSymbols:
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/NumberedParameters:
167
+ Enabled: true
168
+
169
+ Style/NumberedParametersLimit:
170
+ Enabled: true
171
+
172
+ Style/OpenStructUse:
173
+ Enabled: true
174
+
175
+ Style/RedundantSelfAssignmentBranch:
176
+ Enabled: true
177
+
178
+ Style/SelectByRegexp:
179
+ Enabled: true
180
+
139
181
  Layout/EmptyLinesAroundAttributeAccessor:
140
182
  Enabled: true
141
183
 
@@ -167,6 +209,9 @@ Layout/EmptyLineAfterGuardClause:
167
209
  Layout/SpaceBeforeBrackets:
168
210
  Enabled: true
169
211
 
212
+ Layout/LineEndStringConcatenationIndentation:
213
+ Enabled: true
214
+
170
215
  Lint/NonDeterministicRequireOrder:
171
216
  Enabled: false
172
217
 
@@ -260,9 +305,33 @@ Lint/SymbolConversion:
260
305
  Lint/TripleQuotes:
261
306
  Enabled: true
262
307
 
308
+ Lint/EmptyInPattern:
309
+ Enabled: true
310
+
311
+ Lint/AmbiguousOperatorPrecedence:
312
+ Enabled: true
313
+
314
+ Lint/AmbiguousRange:
315
+ Enabled: true
316
+
317
+ Lint/IncompatibleIoSelectWithFiberScheduler:
318
+ Enabled: true
319
+
320
+ Lint/RequireRelativeSelfPath:
321
+ Enabled: true
322
+
323
+ Lint/UselessRuby2Keywords:
324
+ Enabled: true
325
+
263
326
  Gemspec/DateAssignment:
264
327
  Enabled: true
265
328
 
329
+ Gemspec/RequireMFA:
330
+ Enabled: false
331
+
332
+ Security/IoMethods:
333
+ Enabled: true
334
+
266
335
  Performance/AncestorsInclude:
267
336
  Enabled: true
268
337
 
@@ -302,6 +371,21 @@ Performance/MethodObjectAsBlock:
302
371
  Performance/Sum:
303
372
  Enabled: true
304
373
 
374
+ Performance/MapCompact:
375
+ Enabled: true
376
+
377
+ Performance/RedundantEqualityComparisonBlock:
378
+ Enabled: true
379
+
380
+ Performance/RedundantSplitRegexpArgument:
381
+ Enabled: true
382
+
383
+ Performance/ConcurrentMonotonicTime:
384
+ Enabled: true
385
+
386
+ Performance/StringIdentifierArgument:
387
+ Enabled: true
388
+
305
389
  RSpec/ExampleLength:
306
390
  Enabled: false
307
391
 
@@ -328,3 +412,18 @@ RSpec/MultipleDescribes:
328
412
 
329
413
  RSpec/MultipleMemoizedHelpers:
330
414
  Enabled: false
415
+
416
+ RSpec/IdenticalEqualityAssertion:
417
+ Enabled: true
418
+
419
+ RSpec/Rails/AvoidSetupHook:
420
+ Enabled: true
421
+
422
+ RSpec/ExcessiveDocstringSpacing:
423
+ Enabled: true
424
+
425
+ RSpec/SubjectDeclaration:
426
+ Enabled: true
427
+
428
+ RSpec/FactoryBot/SyntaxMethods:
429
+ Enabled: true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.5.0
1
+ ruby-3.1.0
data/CHANGELOG.md CHANGED
@@ -2,6 +2,123 @@
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
+ ## [0.8.0] - 2022-01-25
6
+
7
+ ### Updated
8
+
9
+ - Updated gem runtime dependencies
10
+ - Updated gem development dependencies
11
+ - Updated default Ruby version for test environment
12
+ - Updated rubocop/codeclimate configs
13
+
14
+ ## [0.7.0] - 2021-08-11
15
+
16
+ ### Updated
17
+
18
+ - gem runtime dependencies
19
+ - gem development dependencies
20
+
21
+ ### Changed
22
+
23
+ - `faker` to `ffaker` dependency
24
+
25
+ ## [0.6.0] - 2021-05-13
26
+
27
+ ### Added
28
+
29
+ ```ruby
30
+ # Truemail::Validator instance, successful case
31
+ create_validator(:mx_blacklist)
32
+ => #<Truemail::Validator:0x00007fea91a1d528
33
+ @result=
34
+ #<struct Truemail::Validator::Result
35
+ success=true,
36
+ email="danyell@brakus-dooley.co",
37
+ domain="brakus-dooley.co",
38
+ mail_servers=["175.244.212.125", "69.106.253.221", "7.125.70.85", "152.249.195.7"],
39
+ errors={},
40
+ smtp_debug=nil,
41
+ configuration=
42
+ #<Truemail::Configuration:0x00007fea98977248
43
+ @blacklisted_domains=[],
44
+ @blacklisted_mx_ip_addresses=[],
45
+ @connection_attempts=2,
46
+ @connection_timeout=2,
47
+ @default_validation_type=:smtp,
48
+ @dns=[],
49
+ @email_pattern=/(?=\A.{6,255}\z)(\A([\p{L}0-9]+[\w|\-.+]*)@((?i-mx:[\p{L}0-9]+([\-.]{1}[\p{L}0-9]+)*\.\p{L}{2,63}))\z)/,
50
+ @not_rfc_mx_lookup_flow=false,
51
+ @response_timeout=2,
52
+ @smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
53
+ @smtp_fail_fast=false,
54
+ @smtp_safe_check=false,
55
+ @validation_type_by_domain={},
56
+ @verifier_domain="lubowitz.com",
57
+ @verifier_email="shante.keeling@lubowitz.com",
58
+ @whitelist_validation=false,
59
+ @whitelisted_domains=[]>>,
60
+ @validation_type=:mx_blacklist>
61
+
62
+ # Truemail::Validator instance, failure case
63
+ create_validator(:mx_blacklist, success: false)
64
+ => #<Truemail::Validator:0x00007fea988cfd18
65
+ @result=
66
+ #<struct Truemail::Validator::Result
67
+ success=false,
68
+ email="mike.treutel@heathcote.biz",
69
+ domain="heathcote.biz",
70
+ mail_servers=["212.76.177.170", "253.244.87.72", "144.225.110.224"],
71
+ errors={:mx_blacklist=>"blacklisted mx server ip address"},
72
+ smtp_debug=nil,
73
+ configuration=
74
+ #<Truemail::Configuration:0x00007fea988ee150
75
+ @blacklisted_domains=[],
76
+ @blacklisted_mx_ip_addresses=["212.76.177.170", "253.244.87.72", "144.225.110.224"],
77
+ @connection_attempts=2,
78
+ @connection_timeout=2,
79
+ @default_validation_type=:smtp,
80
+ @dns=[],
81
+ @email_pattern=/(?=\A.{6,255}\z)(\A([\p{L}0-9]+[\w|\-.+]*)@((?i-mx:[\p{L}0-9]+([\-.]{1}[\p{L}0-9]+)*\.\p{L}{2,63}))\z)/,
82
+ @not_rfc_mx_lookup_flow=false,
83
+ @response_timeout=2,
84
+ @smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
85
+ @smtp_fail_fast=false,
86
+ @smtp_safe_check=false,
87
+ @validation_type_by_domain={},
88
+ @verifier_domain="grant-flatley.org",
89
+ @verifier_email="mariano@grant-flatley.org",
90
+ @whitelist_validation=false,
91
+ @whitelisted_domains=[]>>,
92
+ @validation_type=:mx_blacklist>
93
+ ```
94
+
95
+ - Ability to create `Truemail::Validator` instance for `MxBlacklist` validation layer
96
+ - Stub for `MxBlacklist` validation layer
97
+ - CircleCI config for using multiple Ruby versions
98
+
99
+ ### Updated
100
+
101
+ - Updated gem development dependencies
102
+
103
+ ### Fixed
104
+
105
+ - Simplecov coverage issues
106
+
107
+ ## [0.5.0] - 2021-05-05
108
+
109
+ ### Added
110
+
111
+ - Ability to set size for servers list
112
+
113
+ ```ruby
114
+ create_servers_list(42) # => returns array with 42 random ip addresses
115
+ ```
116
+
117
+ ### Updated
118
+
119
+ - gem runtime dependencies
120
+ - gem development dependencies
121
+
5
122
  ## [0.4.0] - 2021-02-24
6
123
 
7
124
  ### Updated
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2020 Vladislav Trotsenko
3
+ Copyright (c) 2020-2022 Vladislav Trotsenko
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -23,7 +23,7 @@
23
23
  - [Configuration instance with default random params](#configuration-instance-with-default-random-params)
24
24
  - [Configuration instance with predefined params](#configuration-instance-with-predefined-params)
25
25
  - [Create auditor instance](#create-auditor-instance)
26
- - [create_auditor](#create-auditor)
26
+ - [create_auditor](#create_auditor)
27
27
  - [Create validator instance](#create-validator-instance)
28
28
  - [create_servers_list](#create_servers_list)
29
29
  - [create_validator](#create_validator)
@@ -90,7 +90,7 @@ create_configuration
90
90
 
91
91
  #### Configuration instance with predefined params
92
92
 
93
- All `Truemail::Configuration` [available params](https://github.com/truemail-rb/truemail-rspec#setting-global-configuration)
93
+ All `Truemail::Configuration` [available params](https://github.com/truemail-rb/truemail#setting-global-configuration)
94
94
 
95
95
  ```ruby
96
96
  create_configuration(verifier_email: 'email@domain.com', verifier_domain: 'other-domain.com')
@@ -122,13 +122,14 @@ Allows to create validator instance with default random or with predefined param
122
122
 
123
123
  ```ruby
124
124
  create_servers_list # => returns array with random ip addresses
125
+ create_servers_list(42) # => returns array with 42 random ip addresses
125
126
  ```
126
127
 
127
128
  #### create_validator
128
129
 
129
130
  ```ruby
130
131
  create_validator(
131
- validation_type, # optional, type:Symbol, can be :regex, :mx or :smtp, by default creates :smtp validation
132
+ validation_type, # optional, type:Symbol, can be :whitelist, :regex, :mx, :mx_blacklist or :smtp, by default creates :smtp validation
132
133
  email, # optional, type:String, by default random email
133
134
  mail_servers, # optional, type:Array(String), by default array with random ip addresses
134
135
  success: true, # optional, type:Bool, by default true
@@ -156,7 +157,7 @@ All Truemail solutions: https://truemail-rb.org
156
157
 
157
158
  ## Contributing
158
159
 
159
- Bug reports and pull requests are welcome on GitHub at https://github.com/truemail-rb/truemail-rspec. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. Please check the [open tikets](https://github.com/truemail-rb/truemail-rspec/issues). Be shure to follow Contributor Code of Conduct below and our [Contributing Guidelines](CONTRIBUTING.md).
160
+ Bug reports and pull requests are welcome on GitHub at https://github.com/truemail-rb/truemail-rspec. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. Please check the [open tickets](https://github.com/truemail-rb/truemail-rspec/issues). Be sure to follow Contributor Code of Conduct below and our [Contributing Guidelines](CONTRIBUTING.md).
160
161
 
161
162
  ## License
162
163
 
@@ -5,7 +5,7 @@ module Truemail
5
5
  module AuditorHelper
6
6
  def create_auditor(
7
7
  success: true,
8
- current_host_ip: ::Faker::Internet.ip_v4_address,
8
+ current_host_ip: ::FFaker::Internet.ip_v4_address,
9
9
  warnings: { ip: Truemail::Audit::Ip::IPIFY_ERROR },
10
10
  configuration: create_configuration
11
11
  )
@@ -12,7 +12,7 @@ module Truemail
12
12
  end
13
13
 
14
14
  def create_configuration(**configuration_settings)
15
- configuration_settings[:verifier_email] = ::Faker::Internet.email unless configuration_settings[:verifier_email]
15
+ configuration_settings[:verifier_email] = ::FFaker::Internet.email unless configuration_settings[:verifier_email]
16
16
  Truemail::Configuration.new(&configuration_block(**configuration_settings))
17
17
  end
18
18
  end
@@ -3,13 +3,13 @@
3
3
  module Truemail
4
4
  module RSpec
5
5
  module ValidatorHelper
6
- def create_servers_list
7
- Array.new(rand(1..4)) { ::Faker::Internet.ip_v4_address }
6
+ def create_servers_list(size = nil)
7
+ ::Array.new(size || ::Random.rand(1..4)) { ::FFaker::Internet.ip_v4_address }
8
8
  end
9
9
 
10
10
  def create_validator( # rubocop:disable Metrics/ParameterLists
11
11
  validation_type = nil,
12
- email = ::Faker::Internet.email,
12
+ email = ::FFaker::Internet.email,
13
13
  mail_servers = create_servers_list,
14
14
  rcptto_error: 'user not found',
15
15
  success: true,
@@ -17,7 +17,7 @@ module Truemail
17
17
  )
18
18
  set_expected_result(validation_type, email, mail_servers, success, configuration, rcptto_error)
19
19
  stub_validation_layers
20
- validator_instance = ValidatorFactory.call(validation_type, success, email, configuration)
20
+ validator_instance = ValidatorFactory.call(validation_type, success, email, mail_servers, configuration)
21
21
  unstub_validation_layers
22
22
  validator_instance
23
23
  end
@@ -39,6 +39,7 @@ module Truemail
39
39
  case validation_type
40
40
  when :regex then regex_layer
41
41
  when :mx then mx_layer
42
+ when :mx_blacklist then mx_blacklist_layer
42
43
  else smtp_layer
43
44
  end
44
45
  end
@@ -63,6 +64,13 @@ module Truemail
63
64
  allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_return(success)
64
65
  end
65
66
 
67
+ def mx_blacklist_layer # rubocop:disable Metrics/AbcSize
68
+ allow(Truemail::Validate::Regex).to receive(:check).and_return(true)
69
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_return(mail_servers)
70
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_return(true)
71
+ allow_any_instance_of(Truemail::Validate::MxBlacklist).to receive(:not_blacklisted_mail_servers?).and_return(success)
72
+ end
73
+
66
74
  def request_instance
67
75
  request = Truemail::Validate::Smtp::Request.new(
68
76
  host: mail_servers.first,
@@ -92,14 +100,15 @@ module Truemail
92
100
  end
93
101
 
94
102
  class ValidatorFactory
95
- def self.call(validation_type, success, email, configuration)
96
- new(validation_type, success, email, configuration).build
103
+ def self.call(validation_type, success, email, mail_servers, configuration)
104
+ new(validation_type, success, email, mail_servers, configuration).build
97
105
  end
98
106
 
99
- def initialize(validation_type, success, email, configuration)
107
+ def initialize(validation_type, success, email, mail_servers, configuration)
100
108
  @validation_type = validation_type
101
109
  @success = success
102
110
  @email = email
111
+ @mail_servers = mail_servers
103
112
  @configuration = configuration
104
113
  end
105
114
 
@@ -110,15 +119,19 @@ module Truemail
110
119
 
111
120
  private
112
121
 
113
- attr_reader :success, :email, :configuration
122
+ attr_reader :success, :email, :mail_servers, :configuration
114
123
  attr_accessor :validation_type
115
124
 
116
125
  def process_validator_params
117
- return unless validation_type.eql?(:whitelist)
118
- self.validation_type = nil
119
- method = success ? :whitelisted_domains : :blacklisted_domains
120
- domain = email[Truemail::RegexConstant::REGEX_EMAIL_PATTERN, 3]
121
- configuration.tap { |config| config.public_send(method) << domain }
126
+ case validation_type
127
+ when :whitelist
128
+ self.validation_type = nil
129
+ method = success ? :whitelisted_domains : :blacklisted_domains
130
+ domain = email[Truemail::RegexConstant::REGEX_EMAIL_PATTERN, 3]
131
+ configuration.tap { |config| config.public_send(method) << domain }
132
+ when :mx_blacklist
133
+ configuration.blacklisted_mx_ip_addresses.push(*mail_servers) unless success
134
+ end
122
135
  end
123
136
  end
124
137
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Truemail
4
4
  module RSpec
5
- VERSION = '0.4.0'
5
+ VERSION = '0.8.0'
6
6
  end
7
7
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'faker'
3
+ require 'ffaker'
4
4
  require 'truemail/rspec/version'
5
5
  require 'truemail/rspec/configuration_helper'
6
6
  require 'truemail/rspec/auditor_helper'
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
3
+ lib = ::File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'truemail/rspec/version'
6
6
 
@@ -28,23 +28,24 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
30
30
  spec.bindir = 'exe'
31
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| ::File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.add_development_dependency 'bundler', '~> 1.16'
35
- spec.add_development_dependency 'bundler-audit', '~> 0.7.0.1'
36
- spec.add_development_dependency 'faker', '~> 2.16'
34
+ spec.add_runtime_dependency 'ffaker', '~> 2.20'
35
+ spec.add_runtime_dependency 'net-smtp', '~> 0.3'
36
+ spec.add_runtime_dependency 'rspec', '~> 3.10'
37
+ spec.add_runtime_dependency 'truemail', '~> 2.6', '>= 2.6.2'
38
+
39
+ spec.add_development_dependency 'bundler-audit', '~> 0.9.0.1'
37
40
  spec.add_development_dependency 'fasterer', '~> 0.9.0'
38
- spec.add_development_dependency 'overcommit', '~> 0.57.0'
41
+ spec.add_development_dependency 'ffaker', '~> 2.20'
42
+ spec.add_development_dependency 'overcommit', '~> 0.58.0'
39
43
  spec.add_development_dependency 'pry-byebug', '~> 3.9'
40
- spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.3'
41
- spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.3'
44
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
45
+ spec.add_development_dependency 'reek', '~> 6.1'
42
46
  spec.add_development_dependency 'rspec', '~> 3.10'
43
- spec.add_development_dependency 'rubocop', '~> 1.10'
44
- spec.add_development_dependency 'rubocop-performance', '~> 1.9', '>= 1.9.2'
45
- spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
47
+ spec.add_development_dependency 'rubocop', '~> 1.25'
48
+ spec.add_development_dependency 'rubocop-performance', '~> 1.13', '>= 1.13.2'
49
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.8'
46
50
  spec.add_development_dependency 'simplecov', '~> 0.17.1'
47
- spec.add_runtime_dependency 'faker', '~> 2.16'
48
- spec.add_runtime_dependency 'rspec', '~> 3.10'
49
- spec.add_runtime_dependency 'truemail', '>= 2.3'
50
51
  end
metadata CHANGED
@@ -1,57 +1,91 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truemail-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladislav Trotsenko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-24 00:00:00.000000000 Z
11
+ date: 2022-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: ffaker
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
20
- type: :development
19
+ version: '2.20'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '2.20'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler-audit
28
+ name: net-smtp
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.7.0.1
34
- type: :development
33
+ version: '0.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.10'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: truemail
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.6'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 2.6.2
65
+ type: :runtime
35
66
  prerelease: false
36
67
  version_requirements: !ruby/object:Gem::Requirement
37
68
  requirements:
38
69
  - - "~>"
39
70
  - !ruby/object:Gem::Version
40
- version: 0.7.0.1
71
+ version: '2.6'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 2.6.2
41
75
  - !ruby/object:Gem::Dependency
42
- name: faker
76
+ name: bundler-audit
43
77
  requirement: !ruby/object:Gem::Requirement
44
78
  requirements:
45
79
  - - "~>"
46
80
  - !ruby/object:Gem::Version
47
- version: '2.16'
81
+ version: 0.9.0.1
48
82
  type: :development
49
83
  prerelease: false
50
84
  version_requirements: !ruby/object:Gem::Requirement
51
85
  requirements:
52
86
  - - "~>"
53
87
  - !ruby/object:Gem::Version
54
- version: '2.16'
88
+ version: 0.9.0.1
55
89
  - !ruby/object:Gem::Dependency
56
90
  name: fasterer
57
91
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +100,34 @@ dependencies:
66
100
  - - "~>"
67
101
  - !ruby/object:Gem::Version
68
102
  version: 0.9.0
103
+ - !ruby/object:Gem::Dependency
104
+ name: ffaker
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.20'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.20'
69
117
  - !ruby/object:Gem::Dependency
70
118
  name: overcommit
71
119
  requirement: !ruby/object:Gem::Requirement
72
120
  requirements:
73
121
  - - "~>"
74
122
  - !ruby/object:Gem::Version
75
- version: 0.57.0
123
+ version: 0.58.0
76
124
  type: :development
77
125
  prerelease: false
78
126
  version_requirements: !ruby/object:Gem::Requirement
79
127
  requirements:
80
128
  - - "~>"
81
129
  - !ruby/object:Gem::Version
82
- version: 0.57.0
130
+ version: 0.58.0
83
131
  - !ruby/object:Gem::Dependency
84
132
  name: pry-byebug
85
133
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +151,7 @@ dependencies:
103
151
  version: '13.0'
104
152
  - - ">="
105
153
  - !ruby/object:Gem::Version
106
- version: 13.0.3
154
+ version: 13.0.6
107
155
  type: :development
108
156
  prerelease: false
109
157
  version_requirements: !ruby/object:Gem::Requirement
@@ -113,27 +161,21 @@ dependencies:
113
161
  version: '13.0'
114
162
  - - ">="
115
163
  - !ruby/object:Gem::Version
116
- version: 13.0.3
164
+ version: 13.0.6
117
165
  - !ruby/object:Gem::Dependency
118
166
  name: reek
119
167
  requirement: !ruby/object:Gem::Requirement
120
168
  requirements:
121
169
  - - "~>"
122
170
  - !ruby/object:Gem::Version
123
- version: '6.0'
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- version: 6.0.3
171
+ version: '6.1'
127
172
  type: :development
128
173
  prerelease: false
129
174
  version_requirements: !ruby/object:Gem::Requirement
130
175
  requirements:
131
176
  - - "~>"
132
177
  - !ruby/object:Gem::Version
133
- version: '6.0'
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- version: 6.0.3
178
+ version: '6.1'
137
179
  - !ruby/object:Gem::Dependency
138
180
  name: rspec
139
181
  requirement: !ruby/object:Gem::Requirement
@@ -154,48 +196,48 @@ dependencies:
154
196
  requirements:
155
197
  - - "~>"
156
198
  - !ruby/object:Gem::Version
157
- version: '1.10'
199
+ version: '1.25'
158
200
  type: :development
159
201
  prerelease: false
160
202
  version_requirements: !ruby/object:Gem::Requirement
161
203
  requirements:
162
204
  - - "~>"
163
205
  - !ruby/object:Gem::Version
164
- version: '1.10'
206
+ version: '1.25'
165
207
  - !ruby/object:Gem::Dependency
166
208
  name: rubocop-performance
167
209
  requirement: !ruby/object:Gem::Requirement
168
210
  requirements:
169
211
  - - "~>"
170
212
  - !ruby/object:Gem::Version
171
- version: '1.9'
213
+ version: '1.13'
172
214
  - - ">="
173
215
  - !ruby/object:Gem::Version
174
- version: 1.9.2
216
+ version: 1.13.2
175
217
  type: :development
176
218
  prerelease: false
177
219
  version_requirements: !ruby/object:Gem::Requirement
178
220
  requirements:
179
221
  - - "~>"
180
222
  - !ruby/object:Gem::Version
181
- version: '1.9'
223
+ version: '1.13'
182
224
  - - ">="
183
225
  - !ruby/object:Gem::Version
184
- version: 1.9.2
226
+ version: 1.13.2
185
227
  - !ruby/object:Gem::Dependency
186
228
  name: rubocop-rspec
187
229
  requirement: !ruby/object:Gem::Requirement
188
230
  requirements:
189
231
  - - "~>"
190
232
  - !ruby/object:Gem::Version
191
- version: '2.2'
233
+ version: '2.8'
192
234
  type: :development
193
235
  prerelease: false
194
236
  version_requirements: !ruby/object:Gem::Requirement
195
237
  requirements:
196
238
  - - "~>"
197
239
  - !ruby/object:Gem::Version
198
- version: '2.2'
240
+ version: '2.8'
199
241
  - !ruby/object:Gem::Dependency
200
242
  name: simplecov
201
243
  requirement: !ruby/object:Gem::Requirement
@@ -210,48 +252,6 @@ dependencies:
210
252
  - - "~>"
211
253
  - !ruby/object:Gem::Version
212
254
  version: 0.17.1
213
- - !ruby/object:Gem::Dependency
214
- name: faker
215
- requirement: !ruby/object:Gem::Requirement
216
- requirements:
217
- - - "~>"
218
- - !ruby/object:Gem::Version
219
- version: '2.16'
220
- type: :runtime
221
- prerelease: false
222
- version_requirements: !ruby/object:Gem::Requirement
223
- requirements:
224
- - - "~>"
225
- - !ruby/object:Gem::Version
226
- version: '2.16'
227
- - !ruby/object:Gem::Dependency
228
- name: rspec
229
- requirement: !ruby/object:Gem::Requirement
230
- requirements:
231
- - - "~>"
232
- - !ruby/object:Gem::Version
233
- version: '3.10'
234
- type: :runtime
235
- prerelease: false
236
- version_requirements: !ruby/object:Gem::Requirement
237
- requirements:
238
- - - "~>"
239
- - !ruby/object:Gem::Version
240
- version: '3.10'
241
- - !ruby/object:Gem::Dependency
242
- name: truemail
243
- requirement: !ruby/object:Gem::Requirement
244
- requirements:
245
- - - ">="
246
- - !ruby/object:Gem::Version
247
- version: '2.3'
248
- type: :runtime
249
- prerelease: false
250
- version_requirements: !ruby/object:Gem::Requirement
251
- requirements:
252
- - - ">="
253
- - !ruby/object:Gem::Version
254
- version: '2.3'
255
255
  description: Truemail RSpec helpers
256
256
  email:
257
257
  - admin@bestweb.com.ua
@@ -260,6 +260,7 @@ extensions: []
260
260
  extra_rdoc_files: []
261
261
  files:
262
262
  - ".circleci/config.yml"
263
+ - ".circleci/gemspec_compatible"
263
264
  - ".codeclimate.yml"
264
265
  - ".github/BRANCH_NAMING_CONVENTION.md"
265
266
  - ".github/ISSUE_TEMPLATE/bug_report.md"
@@ -278,7 +279,6 @@ files:
278
279
  - CODE_OF_CONDUCT.md
279
280
  - CONTRIBUTING.md
280
281
  - Gemfile
281
- - Gemfile.lock
282
282
  - LICENSE.txt
283
283
  - README.md
284
284
  - Rakefile
@@ -314,8 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
314
314
  - !ruby/object:Gem::Version
315
315
  version: '0'
316
316
  requirements: []
317
- rubyforge_project:
318
- rubygems_version: 2.7.3
317
+ rubygems_version: 3.3.3
319
318
  signing_key:
320
319
  specification_version: 4
321
320
  summary: truemail-rspec
data/Gemfile.lock DELETED
@@ -1,125 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- truemail-rspec (0.4.0)
5
- faker (~> 2.16)
6
- rspec (~> 3.10)
7
- truemail (>= 2.3)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- ast (2.4.2)
13
- bundler-audit (0.7.0.1)
14
- bundler (>= 1.2.0, < 3)
15
- thor (>= 0.18, < 2)
16
- byebug (11.1.3)
17
- childprocess (4.0.0)
18
- coderay (1.1.3)
19
- colorize (0.8.1)
20
- concurrent-ruby (1.1.8)
21
- diff-lcs (1.4.4)
22
- docile (1.3.5)
23
- faker (2.16.0)
24
- i18n (>= 1.6, < 2)
25
- fasterer (0.9.0)
26
- colorize (~> 0.7)
27
- ruby_parser (>= 3.14.1)
28
- i18n (1.8.9)
29
- concurrent-ruby (~> 1.0)
30
- iniparse (1.5.0)
31
- json (2.5.1)
32
- kwalify (0.7.2)
33
- method_source (1.0.0)
34
- overcommit (0.57.0)
35
- childprocess (>= 0.6.3, < 5)
36
- iniparse (~> 1.4)
37
- parallel (1.20.1)
38
- parser (3.0.0.0)
39
- ast (~> 2.4.1)
40
- pry (0.13.1)
41
- coderay (~> 1.1)
42
- method_source (~> 1.0)
43
- pry-byebug (3.9.0)
44
- byebug (~> 11.0)
45
- pry (~> 0.13.0)
46
- psych (3.3.0)
47
- rainbow (3.0.0)
48
- rake (13.0.3)
49
- reek (6.0.3)
50
- kwalify (~> 0.7.0)
51
- parser (~> 3.0.0)
52
- psych (~> 3.1)
53
- rainbow (>= 2.0, < 4.0)
54
- regexp_parser (2.1.1)
55
- rexml (3.2.4)
56
- rspec (3.10.0)
57
- rspec-core (~> 3.10.0)
58
- rspec-expectations (~> 3.10.0)
59
- rspec-mocks (~> 3.10.0)
60
- rspec-core (3.10.1)
61
- rspec-support (~> 3.10.0)
62
- rspec-expectations (3.10.1)
63
- diff-lcs (>= 1.2.0, < 2.0)
64
- rspec-support (~> 3.10.0)
65
- rspec-mocks (3.10.2)
66
- diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.10.0)
68
- rspec-support (3.10.2)
69
- rubocop (1.10.0)
70
- parallel (~> 1.10)
71
- parser (>= 3.0.0.0)
72
- rainbow (>= 2.2.2, < 4.0)
73
- regexp_parser (>= 1.8, < 3.0)
74
- rexml
75
- rubocop-ast (>= 1.2.0, < 2.0)
76
- ruby-progressbar (~> 1.7)
77
- unicode-display_width (>= 1.4.0, < 3.0)
78
- rubocop-ast (1.4.1)
79
- parser (>= 2.7.1.5)
80
- rubocop-performance (1.9.2)
81
- rubocop (>= 0.90.0, < 2.0)
82
- rubocop-ast (>= 0.4.0)
83
- rubocop-rspec (2.2.0)
84
- rubocop (~> 1.0)
85
- rubocop-ast (>= 1.1.0)
86
- ruby-progressbar (1.11.0)
87
- ruby_parser (3.15.1)
88
- sexp_processor (~> 4.9)
89
- sexp_processor (4.15.2)
90
- simplecov (0.17.1)
91
- docile (~> 1.1)
92
- json (>= 1.8, < 3)
93
- simplecov-html (~> 0.10.0)
94
- simplecov-html (0.10.2)
95
- simpleidn (0.2.1)
96
- unf (~> 0.1.4)
97
- thor (1.1.0)
98
- truemail (2.3.0)
99
- simpleidn (~> 0.2.1)
100
- unf (0.1.4)
101
- unf_ext
102
- unf_ext (0.0.7.7)
103
- unicode-display_width (2.0.0)
104
-
105
- PLATFORMS
106
- ruby
107
-
108
- DEPENDENCIES
109
- bundler (~> 1.16)
110
- bundler-audit (~> 0.7.0.1)
111
- faker (~> 2.16)
112
- fasterer (~> 0.9.0)
113
- overcommit (~> 0.57.0)
114
- pry-byebug (~> 3.9)
115
- rake (~> 13.0, >= 13.0.3)
116
- reek (~> 6.0, >= 6.0.3)
117
- rspec (~> 3.10)
118
- rubocop (~> 1.10)
119
- rubocop-performance (~> 1.9, >= 1.9.2)
120
- rubocop-rspec (~> 2.2)
121
- simplecov (~> 0.17.1)
122
- truemail-rspec!
123
-
124
- BUNDLED WITH
125
- 1.16.6