truemail-rspec 0.3.3 → 0.7.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: 9c240ae8161eb244bf22fef87375cb365bfc84601334b363a9d0d09d44ed2cfb
4
- data.tar.gz: b8283da4e53ae5c4f8443eb259f32a74b1192f9b8f34ccf0d998329911663d8b
3
+ metadata.gz: 62f9d48df15c7bc13405bd109dc90b7852767be6f00382681c753f0639b32775
4
+ data.tar.gz: d8ebe57fa3508fb86945a0d25352bf365896661d8b4977ce06a7c40766f87223
5
5
  SHA512:
6
- metadata.gz: 65580092b2817e20ea0eb18eca5247d7dc5ff0624e0c885ccc88a876b0952897aaacde37cc8797e403e996930603d12ffe93c6322db879537f23900a0b17748c
7
- data.tar.gz: 3143f94e2c2351b227902c49725ff3ce7e4e5e91330a0e4f6c77c93a2f0b58959d9de45dc7d0e8b968bc47785bf9e52a0fd3c4a28afd4fe6c3e853b426e3a293
6
+ metadata.gz: 1ac6f480559c60ba9ce90aa2facd6e09ca374171670706fab67bd647bbc3a8ad57c4402c8ae2faee8424741ebb77ab577d747fa5378fdcbd13d377b5bc13889e
7
+ data.tar.gz: e9f278a1e6f12f73968416cd971cf63c411e3cd862e446d9f8ba5e58ba9504e4f86f82dbc4a367e342e62d9c491b84b83dd3262e79e6a36ed2ba5b68a0087201
data/.circleci/config.yml CHANGED
@@ -1,11 +1,21 @@
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
6
+ - image: cimg/ruby:<< parameters.ruby-version >>
5
7
  environment:
6
8
  CC_TEST_REPORTER_ID: 889fa37782e4f5d0f81705f0d869a9c907f04151faae8260dde55d3f74e65606
7
9
 
10
+ orbs:
11
+ ruby: circleci/ruby@1.1.3
12
+
8
13
  references:
14
+ install_bundler: &install_bundler
15
+ run:
16
+ name: Installing Bundler
17
+ command: gem i bundler -v $(tail -1 Gemfile.lock | tr -d ' ')
18
+
9
19
  restore_bundle_cache: &restore_bundle_cache
10
20
  restore_cache:
11
21
  keys:
@@ -24,66 +34,97 @@ references:
24
34
 
25
35
  install_codeclimate_reporter: &install_codeclimate_reporter
26
36
  run:
27
- name: Install Code Climate Test Reporter
37
+ name: Installing CodeClimate test reporter
28
38
  command: |
29
39
  curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
30
40
  chmod +x ./cc-test-reporter
31
41
 
32
- version: 2
33
42
  jobs:
34
- linters:
43
+ linters-ruby:
44
+ parameters:
45
+ ruby-version:
46
+ type: string
47
+
35
48
  <<: *defaults
36
49
 
37
50
  steps:
38
51
  - checkout
39
52
 
53
+ - <<: *install_bundler
40
54
  - <<: *restore_bundle_cache
41
55
  - <<: *bundle_install
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:
54
72
  - checkout
55
73
 
74
+ - <<: *install_bundler
56
75
  - <<: *restore_bundle_cache
57
76
  - <<: *bundle_install
58
77
  - <<: *save_bundle_cache
59
78
  - <<: *install_codeclimate_reporter
60
79
 
61
80
  - run:
62
- name: Running tests
81
+ name: Running RSpec
63
82
  command: |
64
- mkdir /tmp/test-results
65
83
  ./cc-test-reporter before-build
66
84
  bundle exec rspec
67
85
 
68
86
  - run:
69
- name: Code Climate Test Coverage
87
+ name: Creating CodeClimate test coverage report
70
88
  command: |
71
89
  ./cc-test-reporter format-coverage -t simplecov -o "coverage/codeclimate.$CIRCLE_NODE_INDEX.json"
72
90
 
73
- - store_test_results:
74
- path: /tmp/test-results
75
-
76
91
  - store_artifacts:
77
- path: /tmp/test-results
78
- destination: test-results
92
+ name: Saving Simplecov coverage artifacts
93
+ path: ~/truemail-rspec/coverage
94
+ destination: coverage
79
95
 
80
96
  - deploy:
97
+ name: Uploading CodeClimate test coverage report
81
98
  command: |
82
99
  ./cc-test-reporter sum-coverage --output - --parts $CIRCLE_NODE_TOTAL coverage/codeclimate.*.json | ./cc-test-reporter upload-coverage --debug --input -
83
100
 
101
+ compatibility-ruby:
102
+ parameters:
103
+ ruby-version:
104
+ type: string
105
+ docker:
106
+ - image: cimg/ruby:<< parameters.ruby-version >>
107
+ steps:
108
+ - checkout
109
+ - ruby/install-deps:
110
+ with-cache: false
111
+ path: './vendor/custom_bundle'
112
+ - run:
113
+ name: Running compatibility tests
114
+ command: bundle exec rspec
115
+
84
116
  workflows:
85
- version: 2
86
- build:
117
+ build_and_test:
87
118
  jobs:
88
- - linters
89
- - tests
119
+ - linters-ruby:
120
+ matrix:
121
+ parameters:
122
+ ruby-version: ["2.5"]
123
+ - tests-ruby:
124
+ matrix:
125
+ parameters:
126
+ ruby-version: ["2.5"]
127
+ - compatibility-ruby:
128
+ matrix:
129
+ parameters:
130
+ ruby-version: ["2.6", "2.7", "3.0"]
data/.codeclimate.yml CHANGED
@@ -7,7 +7,7 @@ checks:
7
7
  plugins:
8
8
  rubocop:
9
9
  enabled: true
10
- channel: rubocop-1-5
10
+ channel: rubocop-1-18
11
11
 
12
12
  reek:
13
13
  enabled: true
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,14 @@ 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
+
30
36
  LongParameterList:
31
37
  enabled: false
32
38
 
data/.rubocop.yml CHANGED
@@ -28,6 +28,9 @@ Naming/VariableNumber:
28
28
  Naming/RescuedExceptionsVariableName:
29
29
  Enabled: false
30
30
 
31
+ Naming/InclusiveLanguage:
32
+ Enabled: false
33
+
31
34
  Style/Documentation:
32
35
  Enabled: false
33
36
 
@@ -124,6 +127,30 @@ Style/RedundantArgument:
124
127
  Style/SwapValues:
125
128
  Enabled: true
126
129
 
130
+ Style/EndlessMethod:
131
+ Enabled: true
132
+
133
+ Style/HashConversion:
134
+ Enabled: true
135
+
136
+ Style/HashExcept:
137
+ Enabled: true
138
+
139
+ Style/IfWithBooleanLiteralBranches:
140
+ Enabled: true
141
+
142
+ Style/StringChars:
143
+ Enabled: true
144
+
145
+ Style/InPatternThen:
146
+ Enabled: true
147
+
148
+ Style/MultilineInPatternThen:
149
+ Enabled: true
150
+
151
+ Style/QuotedSymbols:
152
+ Enabled: true
153
+
127
154
  Layout/EmptyLinesAroundAttributeAccessor:
128
155
  Enabled: true
129
156
 
@@ -152,6 +179,12 @@ Layout/ClassStructure:
152
179
  Layout/EmptyLineAfterGuardClause:
153
180
  Enabled: false
154
181
 
182
+ Layout/SpaceBeforeBrackets:
183
+ Enabled: true
184
+
185
+ Layout/LineEndStringConcatenationIndentation:
186
+ Enabled: true
187
+
155
188
  Lint/NonDeterministicRequireOrder:
156
189
  Enabled: false
157
190
 
@@ -221,6 +254,36 @@ Lint/UnexpectedBlockArity:
221
254
  Lint/UnmodifiedReduceAccumulator:
222
255
  Enabled: true
223
256
 
257
+ Lint/AmbiguousAssignment:
258
+ Enabled: true
259
+
260
+ Lint/DeprecatedConstants:
261
+ Enabled: true
262
+
263
+ Lint/LambdaWithoutLiteralBlock:
264
+ Enabled: true
265
+
266
+ Lint/NumberedParameterAssignment:
267
+ Enabled: true
268
+
269
+ Lint/OrAssignmentToConstant:
270
+ Enabled: true
271
+
272
+ Lint/RedundantDirGlobSort:
273
+ Enabled: true
274
+
275
+ Lint/SymbolConversion:
276
+ Enabled: true
277
+
278
+ Lint/TripleQuotes:
279
+ Enabled: true
280
+
281
+ Lint/EmptyInPattern:
282
+ Enabled: true
283
+
284
+ Gemspec/DateAssignment:
285
+ Enabled: true
286
+
224
287
  Performance/AncestorsInclude:
225
288
  Enabled: true
226
289
 
@@ -260,6 +323,15 @@ Performance/MethodObjectAsBlock:
260
323
  Performance/Sum:
261
324
  Enabled: true
262
325
 
326
+ Performance/MapCompact:
327
+ Enabled: true
328
+
329
+ Performance/RedundantEqualityComparisonBlock:
330
+ Enabled: true
331
+
332
+ Performance/RedundantSplitRegexpArgument:
333
+ Enabled: true
334
+
263
335
  RSpec/ExampleLength:
264
336
  Enabled: false
265
337
 
@@ -286,3 +358,9 @@ RSpec/MultipleDescribes:
286
358
 
287
359
  RSpec/MultipleMemoizedHelpers:
288
360
  Enabled: false
361
+
362
+ RSpec/IdenticalEqualityAssertion:
363
+ Enabled: true
364
+
365
+ RSpec/Rails/AvoidSetupHook:
366
+ Enabled: true
data/CHANGELOG.md CHANGED
@@ -1,6 +1,122 @@
1
1
  # Changelog
2
+
2
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).
3
4
 
5
+ ## [0.7.0] - 2021-08-11
6
+
7
+ ### Updated
8
+
9
+ - gem runtime dependencies
10
+ - gem development dependencies
11
+
12
+ ### Changed
13
+
14
+ - `faker` to `ffaker` dependency
15
+
16
+ ## [0.6.0] - 2021-05-13
17
+
18
+ ### Added
19
+
20
+ ```ruby
21
+ # Truemail::Validator instance, successful case
22
+ create_validator(:mx_blacklist)
23
+ => #<Truemail::Validator:0x00007fea91a1d528
24
+ @result=
25
+ #<struct Truemail::Validator::Result
26
+ success=true,
27
+ email="danyell@brakus-dooley.co",
28
+ domain="brakus-dooley.co",
29
+ mail_servers=["175.244.212.125", "69.106.253.221", "7.125.70.85", "152.249.195.7"],
30
+ errors={},
31
+ smtp_debug=nil,
32
+ configuration=
33
+ #<Truemail::Configuration:0x00007fea98977248
34
+ @blacklisted_domains=[],
35
+ @blacklisted_mx_ip_addresses=[],
36
+ @connection_attempts=2,
37
+ @connection_timeout=2,
38
+ @default_validation_type=:smtp,
39
+ @dns=[],
40
+ @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)/,
41
+ @not_rfc_mx_lookup_flow=false,
42
+ @response_timeout=2,
43
+ @smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
44
+ @smtp_fail_fast=false,
45
+ @smtp_safe_check=false,
46
+ @validation_type_by_domain={},
47
+ @verifier_domain="lubowitz.com",
48
+ @verifier_email="shante.keeling@lubowitz.com",
49
+ @whitelist_validation=false,
50
+ @whitelisted_domains=[]>>,
51
+ @validation_type=:mx_blacklist>
52
+
53
+ # Truemail::Validator instance, failure case
54
+ create_validator(:mx_blacklist, success: false)
55
+ => #<Truemail::Validator:0x00007fea988cfd18
56
+ @result=
57
+ #<struct Truemail::Validator::Result
58
+ success=false,
59
+ email="mike.treutel@heathcote.biz",
60
+ domain="heathcote.biz",
61
+ mail_servers=["212.76.177.170", "253.244.87.72", "144.225.110.224"],
62
+ errors={:mx_blacklist=>"blacklisted mx server ip address"},
63
+ smtp_debug=nil,
64
+ configuration=
65
+ #<Truemail::Configuration:0x00007fea988ee150
66
+ @blacklisted_domains=[],
67
+ @blacklisted_mx_ip_addresses=["212.76.177.170", "253.244.87.72", "144.225.110.224"],
68
+ @connection_attempts=2,
69
+ @connection_timeout=2,
70
+ @default_validation_type=:smtp,
71
+ @dns=[],
72
+ @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)/,
73
+ @not_rfc_mx_lookup_flow=false,
74
+ @response_timeout=2,
75
+ @smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
76
+ @smtp_fail_fast=false,
77
+ @smtp_safe_check=false,
78
+ @validation_type_by_domain={},
79
+ @verifier_domain="grant-flatley.org",
80
+ @verifier_email="mariano@grant-flatley.org",
81
+ @whitelist_validation=false,
82
+ @whitelisted_domains=[]>>,
83
+ @validation_type=:mx_blacklist>
84
+ ```
85
+
86
+ - Ability to create `Truemail::Validator` instance for `MxBlacklist` validation layer
87
+ - Stub for `MxBlacklist` validation layer
88
+ - CircleCI config for using multiple Ruby versions
89
+
90
+ ### Updated
91
+
92
+ - Updated gem development dependencies
93
+
94
+ ### Fixed
95
+
96
+ - Simplecov coverage issues
97
+
98
+ ## [0.5.0] - 2021-05-05
99
+
100
+ ### Added
101
+
102
+ - Ability to set size for servers list
103
+
104
+ ```ruby
105
+ create_servers_list(42) # => returns array with 42 random ip addresses
106
+ ```
107
+
108
+ ### Updated
109
+
110
+ - gem runtime dependencies
111
+ - gem development dependencies
112
+
113
+ ## [0.4.0] - 2021-02-24
114
+
115
+ ### Updated
116
+
117
+ - gem runtime dependencies
118
+ - gem development dependencies
119
+
4
120
  ## [0.3.3] - 2020-12-06
5
121
 
6
122
  ### Added
data/Gemfile.lock CHANGED
@@ -1,41 +1,38 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- truemail-rspec (0.3.3)
5
- faker (~> 2.15, >= 2.15.1)
4
+ truemail-rspec (0.7.0)
5
+ ffaker (~> 2.18)
6
6
  rspec (~> 3.10)
7
- truemail (~> 2.2)
7
+ truemail (>= 2.4)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- ast (2.4.1)
13
- bundler-audit (0.7.0.1)
12
+ ast (2.4.2)
13
+ bundler-audit (0.8.0)
14
14
  bundler (>= 1.2.0, < 3)
15
- thor (>= 0.18, < 2)
15
+ thor (~> 1.0)
16
16
  byebug (11.1.3)
17
- childprocess (4.0.0)
17
+ childprocess (4.1.0)
18
18
  coderay (1.1.3)
19
19
  colorize (0.8.1)
20
- concurrent-ruby (1.1.7)
21
20
  diff-lcs (1.4.4)
22
- docile (1.3.2)
23
- faker (2.15.1)
24
- i18n (>= 1.6, < 2)
25
- fasterer (0.8.3)
21
+ docile (1.4.0)
22
+ fasterer (0.9.0)
26
23
  colorize (~> 0.7)
27
24
  ruby_parser (>= 3.14.1)
28
- i18n (1.8.5)
29
- concurrent-ruby (~> 1.0)
25
+ ffaker (2.18.0)
30
26
  iniparse (1.5.0)
31
- json (2.3.1)
27
+ json (2.5.1)
32
28
  kwalify (0.7.2)
33
29
  method_source (1.0.0)
34
- overcommit (0.57.0)
30
+ overcommit (0.58.0)
35
31
  childprocess (>= 0.6.3, < 5)
36
32
  iniparse (~> 1.4)
33
+ rexml (~> 3.2)
37
34
  parallel (1.20.1)
38
- parser (2.7.2.0)
35
+ parser (3.0.2.0)
39
36
  ast (~> 2.4.1)
40
37
  pry (0.13.1)
41
38
  coderay (~> 1.1)
@@ -43,83 +40,83 @@ GEM
43
40
  pry-byebug (3.9.0)
44
41
  byebug (~> 11.0)
45
42
  pry (~> 0.13.0)
46
- psych (3.2.0)
43
+ psych (4.0.1)
47
44
  rainbow (3.0.0)
48
- rake (13.0.1)
49
- reek (6.0.2)
45
+ rake (13.0.6)
46
+ reek (6.0.5)
50
47
  kwalify (~> 0.7.0)
51
- parser (>= 2.5.0.0, < 2.8, != 2.5.1.1)
52
- psych (~> 3.1)
48
+ parser (~> 3.0.0)
49
+ psych (>= 3.1, < 5.0)
53
50
  rainbow (>= 2.0, < 4.0)
54
- regexp_parser (2.0.0)
55
- rexml (3.2.4)
51
+ regexp_parser (2.1.1)
52
+ rexml (3.2.5)
56
53
  rspec (3.10.0)
57
54
  rspec-core (~> 3.10.0)
58
55
  rspec-expectations (~> 3.10.0)
59
56
  rspec-mocks (~> 3.10.0)
60
- rspec-core (3.10.0)
57
+ rspec-core (3.10.1)
61
58
  rspec-support (~> 3.10.0)
62
- rspec-expectations (3.10.0)
59
+ rspec-expectations (3.10.1)
63
60
  diff-lcs (>= 1.2.0, < 2.0)
64
61
  rspec-support (~> 3.10.0)
65
- rspec-mocks (3.10.0)
62
+ rspec-mocks (3.10.2)
66
63
  diff-lcs (>= 1.2.0, < 2.0)
67
64
  rspec-support (~> 3.10.0)
68
- rspec-support (3.10.0)
69
- rubocop (1.5.2)
65
+ rspec-support (3.10.2)
66
+ rubocop (1.18.4)
70
67
  parallel (~> 1.10)
71
- parser (>= 2.7.1.5)
68
+ parser (>= 3.0.0.0)
72
69
  rainbow (>= 2.2.2, < 4.0)
73
70
  regexp_parser (>= 1.8, < 3.0)
74
71
  rexml
75
- rubocop-ast (>= 1.2.0, < 2.0)
72
+ rubocop-ast (>= 1.8.0, < 2.0)
76
73
  ruby-progressbar (~> 1.7)
77
- unicode-display_width (>= 1.4.0, < 2.0)
78
- rubocop-ast (1.3.0)
79
- parser (>= 2.7.1.5)
80
- rubocop-performance (1.9.1)
81
- rubocop (>= 0.90.0, < 2.0)
74
+ unicode-display_width (>= 1.4.0, < 3.0)
75
+ rubocop-ast (1.9.1)
76
+ parser (>= 3.0.1.1)
77
+ rubocop-performance (1.11.4)
78
+ rubocop (>= 1.7.0, < 2.0)
82
79
  rubocop-ast (>= 0.4.0)
83
- rubocop-rspec (2.0.1)
80
+ rubocop-rspec (2.4.0)
84
81
  rubocop (~> 1.0)
85
82
  rubocop-ast (>= 1.1.0)
86
- ruby-progressbar (1.10.1)
87
- ruby_parser (3.15.0)
88
- sexp_processor (~> 4.9)
89
- sexp_processor (4.15.1)
83
+ ruby-progressbar (1.11.0)
84
+ ruby_parser (3.17.0)
85
+ sexp_processor (~> 4.15, >= 4.15.1)
86
+ sexp_processor (4.15.3)
90
87
  simplecov (0.17.1)
91
88
  docile (~> 1.1)
92
89
  json (>= 1.8, < 3)
93
90
  simplecov-html (~> 0.10.0)
94
91
  simplecov-html (0.10.2)
95
- simpleidn (0.1.1)
92
+ simpleidn (0.2.1)
96
93
  unf (~> 0.1.4)
97
- thor (1.0.1)
98
- truemail (2.2.0)
99
- simpleidn (~> 0.1.1)
94
+ thor (1.1.0)
95
+ truemail (2.4.7)
96
+ simpleidn (~> 0.2.1)
100
97
  unf (0.1.4)
101
98
  unf_ext
102
99
  unf_ext (0.0.7.7)
103
- unicode-display_width (1.7.0)
100
+ unicode-display_width (2.0.0)
104
101
 
105
102
  PLATFORMS
106
- ruby
103
+ x86_64-darwin-20
107
104
 
108
105
  DEPENDENCIES
109
- bundler (~> 1.16)
110
- bundler-audit (~> 0.7.0.1)
111
- faker (~> 2.15, >= 2.15.1)
112
- fasterer (~> 0.8.3)
113
- overcommit (~> 0.57.0)
106
+ bundler (~> 2.2, >= 2.2.25)
107
+ bundler-audit (~> 0.8.0)
108
+ fasterer (~> 0.9.0)
109
+ ffaker (~> 2.18)
110
+ overcommit (~> 0.58.0)
114
111
  pry-byebug (~> 3.9)
115
- rake (~> 13.0, >= 13.0.1)
116
- reek (~> 6.0, >= 6.0.2)
112
+ rake (~> 13.0, >= 13.0.6)
113
+ reek (~> 6.0, >= 6.0.5)
117
114
  rspec (~> 3.10)
118
- rubocop (~> 1.5, >= 1.5.2)
119
- rubocop-performance (~> 1.9, >= 1.9.1)
120
- rubocop-rspec (~> 2.0, >= 2.0.1)
115
+ rubocop (~> 1.18, >= 1.18.4)
116
+ rubocop-performance (~> 1.11, >= 1.11.4)
117
+ rubocop-rspec (~> 2.4)
121
118
  simplecov (~> 0.17.1)
122
119
  truemail-rspec!
123
120
 
124
121
  BUNDLED WITH
125
- 1.16.6
122
+ 2.2.25
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
@@ -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'
@@ -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 || 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.3.3'
5
+ VERSION = '0.7.0'
6
6
  end
7
7
  end
@@ -31,20 +31,20 @@ Gem::Specification.new do |spec|
31
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.15', '>= 2.15.1'
37
- spec.add_development_dependency 'fasterer', '~> 0.8.3'
38
- spec.add_development_dependency 'overcommit', '~> 0.57.0'
34
+ spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.25'
35
+ spec.add_development_dependency 'bundler-audit', '~> 0.8.0'
36
+ spec.add_development_dependency 'fasterer', '~> 0.9.0'
37
+ spec.add_development_dependency 'ffaker', '~> 2.18'
38
+ spec.add_development_dependency 'overcommit', '~> 0.58.0'
39
39
  spec.add_development_dependency 'pry-byebug', '~> 3.9'
40
- spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
41
- spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.2'
40
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
41
+ spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.5'
42
42
  spec.add_development_dependency 'rspec', '~> 3.10'
43
- spec.add_development_dependency 'rubocop', '~> 1.5', '>= 1.5.2'
44
- spec.add_development_dependency 'rubocop-performance', '~> 1.9', '>= 1.9.1'
45
- spec.add_development_dependency 'rubocop-rspec', '~> 2.0', '>= 2.0.1'
43
+ spec.add_development_dependency 'rubocop', '~> 1.18', '>= 1.18.4'
44
+ spec.add_development_dependency 'rubocop-performance', '~> 1.11', '>= 1.11.4'
45
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.4'
46
46
  spec.add_development_dependency 'simplecov', '~> 0.17.1'
47
- spec.add_runtime_dependency 'faker', '~> 2.15', '>= 2.15.1'
47
+ spec.add_runtime_dependency 'ffaker', '~> 2.18'
48
48
  spec.add_runtime_dependency 'rspec', '~> 3.10'
49
- spec.add_runtime_dependency 'truemail', '~> 2.2'
49
+ spec.add_runtime_dependency 'truemail', '>= 2.4'
50
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truemail-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.7.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: 2020-12-06 00:00:00.000000000 Z
11
+ date: 2021-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,76 +16,76 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.2.25
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '1.16'
29
+ version: '2.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.2.25
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: bundler-audit
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: 0.7.0.1
39
+ version: 0.8.0
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: 0.7.0.1
46
+ version: 0.8.0
41
47
  - !ruby/object:Gem::Dependency
42
- name: faker
48
+ name: fasterer
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '2.15'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 2.15.1
53
+ version: 0.9.0
51
54
  type: :development
52
55
  prerelease: false
53
56
  version_requirements: !ruby/object:Gem::Requirement
54
57
  requirements:
55
58
  - - "~>"
56
59
  - !ruby/object:Gem::Version
57
- version: '2.15'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 2.15.1
60
+ version: 0.9.0
61
61
  - !ruby/object:Gem::Dependency
62
- name: fasterer
62
+ name: ffaker
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 0.8.3
67
+ version: '2.18'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.8.3
74
+ version: '2.18'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: overcommit
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.57.0
81
+ version: 0.58.0
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: 0.57.0
88
+ version: 0.58.0
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: pry-byebug
91
91
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '13.0'
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 13.0.1
112
+ version: 13.0.6
113
113
  type: :development
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
@@ -119,7 +119,7 @@ dependencies:
119
119
  version: '13.0'
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 13.0.1
122
+ version: 13.0.6
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: reek
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -129,7 +129,7 @@ dependencies:
129
129
  version: '6.0'
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: 6.0.2
132
+ version: 6.0.5
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
@@ -139,7 +139,7 @@ dependencies:
139
139
  version: '6.0'
140
140
  - - ">="
141
141
  - !ruby/object:Gem::Version
142
- version: 6.0.2
142
+ version: 6.0.5
143
143
  - !ruby/object:Gem::Dependency
144
144
  name: rspec
145
145
  requirement: !ruby/object:Gem::Requirement
@@ -160,60 +160,54 @@ dependencies:
160
160
  requirements:
161
161
  - - "~>"
162
162
  - !ruby/object:Gem::Version
163
- version: '1.5'
163
+ version: '1.18'
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: 1.5.2
166
+ version: 1.18.4
167
167
  type: :development
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '1.5'
173
+ version: '1.18'
174
174
  - - ">="
175
175
  - !ruby/object:Gem::Version
176
- version: 1.5.2
176
+ version: 1.18.4
177
177
  - !ruby/object:Gem::Dependency
178
178
  name: rubocop-performance
179
179
  requirement: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - "~>"
182
182
  - !ruby/object:Gem::Version
183
- version: '1.9'
183
+ version: '1.11'
184
184
  - - ">="
185
185
  - !ruby/object:Gem::Version
186
- version: 1.9.1
186
+ version: 1.11.4
187
187
  type: :development
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
190
190
  requirements:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
- version: '1.9'
193
+ version: '1.11'
194
194
  - - ">="
195
195
  - !ruby/object:Gem::Version
196
- version: 1.9.1
196
+ version: 1.11.4
197
197
  - !ruby/object:Gem::Dependency
198
198
  name: rubocop-rspec
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
201
  - - "~>"
202
202
  - !ruby/object:Gem::Version
203
- version: '2.0'
204
- - - ">="
205
- - !ruby/object:Gem::Version
206
- version: 2.0.1
203
+ version: '2.4'
207
204
  type: :development
208
205
  prerelease: false
209
206
  version_requirements: !ruby/object:Gem::Requirement
210
207
  requirements:
211
208
  - - "~>"
212
209
  - !ruby/object:Gem::Version
213
- version: '2.0'
214
- - - ">="
215
- - !ruby/object:Gem::Version
216
- version: 2.0.1
210
+ version: '2.4'
217
211
  - !ruby/object:Gem::Dependency
218
212
  name: simplecov
219
213
  requirement: !ruby/object:Gem::Requirement
@@ -229,25 +223,19 @@ dependencies:
229
223
  - !ruby/object:Gem::Version
230
224
  version: 0.17.1
231
225
  - !ruby/object:Gem::Dependency
232
- name: faker
226
+ name: ffaker
233
227
  requirement: !ruby/object:Gem::Requirement
234
228
  requirements:
235
229
  - - "~>"
236
230
  - !ruby/object:Gem::Version
237
- version: '2.15'
238
- - - ">="
239
- - !ruby/object:Gem::Version
240
- version: 2.15.1
231
+ version: '2.18'
241
232
  type: :runtime
242
233
  prerelease: false
243
234
  version_requirements: !ruby/object:Gem::Requirement
244
235
  requirements:
245
236
  - - "~>"
246
237
  - !ruby/object:Gem::Version
247
- version: '2.15'
248
- - - ">="
249
- - !ruby/object:Gem::Version
250
- version: 2.15.1
238
+ version: '2.18'
251
239
  - !ruby/object:Gem::Dependency
252
240
  name: rspec
253
241
  requirement: !ruby/object:Gem::Requirement
@@ -266,16 +254,16 @@ dependencies:
266
254
  name: truemail
267
255
  requirement: !ruby/object:Gem::Requirement
268
256
  requirements:
269
- - - "~>"
257
+ - - ">="
270
258
  - !ruby/object:Gem::Version
271
- version: '2.2'
259
+ version: '2.4'
272
260
  type: :runtime
273
261
  prerelease: false
274
262
  version_requirements: !ruby/object:Gem::Requirement
275
263
  requirements:
276
- - - "~>"
264
+ - - ">="
277
265
  - !ruby/object:Gem::Version
278
- version: '2.2'
266
+ version: '2.4'
279
267
  description: Truemail RSpec helpers
280
268
  email:
281
269
  - admin@bestweb.com.ua
@@ -338,8 +326,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
338
326
  - !ruby/object:Gem::Version
339
327
  version: '0'
340
328
  requirements: []
341
- rubyforge_project:
342
- rubygems_version: 2.7.3
329
+ rubygems_version: 3.2.20
343
330
  signing_key:
344
331
  specification_version: 4
345
332
  summary: truemail-rspec