truemail-rspec 0.3.3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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