truemail-rspec 0.4.0 → 0.8.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: 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