postcode_anywhere-email_validation 0.0.2 → 0.0.4
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 +6 -14
- data/.gitignore +1 -0
- data/.travis.yml +8 -0
- data/README.md +48 -0
- data/lib/postcode_anywhere/email_validation.rb +1 -0
- data/lib/postcode_anywhere/email_validation/validator.rb +3 -1
- data/lib/postcode_anywhere/email_validation/version.rb +1 -1
- data/lib/postcode_anywhere/matchers/email_validator.rb +30 -0
- data/postcodeanywhere-emailvalidation.gemspec +4 -3
- data/spec/lib/postcode_anywhere/email_validation/validator_spec.rb +15 -0
- data/spec/lib/postcode_anywhere/matchers/email_validator_spec.rb +24 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/support/not_validated_class.rb +4 -0
- metadata +28 -8
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZWIxZGZmY2M0ZTlhMDYwNWNlZjc0MzBmMDg2ZjMxYjgyMTc0ZGJkNWFkMzlj
|
10
|
-
ZjI5OWRiZDMyYTkxNjRiNTQ1ZmFmOTAyMjJhMjgyMGM2NmFmYzllOWUyYjcw
|
11
|
-
ZjdmNWIxMDJjYThlOWNjMTA3YWNiYTdhNzk1ZjJiMTc2NTUwMDk=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MjFiM2JjN2UxZDAwMzIwODI4NmFhMzM5ZTkxMDcyZjYzMGM1MWI4ODg2YzYz
|
14
|
-
MjI0YzNjM2VlMjUyYzIwMWM5ZTNlZmMzZDFkNGI1MzU2M2FiOWU3Y2VlNmRk
|
15
|
-
ZDU3M2FkZTMwNGM0ZGNiZWQyNzZlYmNiZTU5MzI0YjQ3NzM0MmY=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6d4d019cee86c4a0ba5c2f2b6e39453d46fb36cb
|
4
|
+
data.tar.gz: cc4e8be9c412e37083a14c1d1642258eb241ce94
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c9e3151a9655e9b02cf90929ba60395b2dd8a02b26e0a2db66451222d7f8e95009d947187b6ae9ba09a4f0e39a946e6c8cf2bca4132f648395950a1580cc3e0f
|
7
|
+
data.tar.gz: b8877f6ee3dad316078da55c08f36aa4ce72d9f77a5af2fcaae3a8b5fe90b05db36c5ab2dd8dead3538bae0cb27703ea068615ebc381c55cd3eadf39e332f371
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# PostcodeAnywhere::EmailValidation
|
2
2
|
|
3
|
+
[![Build Status][build-status-badge]] [build-status]
|
4
|
+
[![Code Climate][code-climate-badge]] [code-climate-feed]
|
5
|
+
[![Coverage Status][coverage-status-badge]] [coverage-status]
|
6
|
+
|
3
7
|
Verifies the existence of an email address using the
|
4
8
|
[Email Validation web services] [email-validation]
|
5
9
|
from [PostcodeAnywhere].
|
@@ -31,6 +35,32 @@ PostcodeAnywhere::EmailValidation.key = 'AA11-AA11-AA11-AA11'
|
|
31
35
|
PostcodeAnywhere::EmailValidation.valid?('info@google.com') #=> true
|
32
36
|
```
|
33
37
|
|
38
|
+
Or use the provided ActiveModel validator:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
class ValidatedClass
|
42
|
+
include ActiveModel::Validations
|
43
|
+
|
44
|
+
attr_accessor :email
|
45
|
+
|
46
|
+
validates_with PostcodeAnywhere::EmailValidation::Validator, attributes: %w{ email }
|
47
|
+
end
|
48
|
+
```
|
49
|
+
|
50
|
+
## Usage with RSpec
|
51
|
+
|
52
|
+
With default attribute: :email
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
it { should validate_email_with_postcode_anywhere }
|
56
|
+
```
|
57
|
+
|
58
|
+
With custom attribute.
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
it { should validate_email_with_postcode_anywhere.on_attribute(:email) }
|
62
|
+
```
|
63
|
+
|
34
64
|
## Contributing
|
35
65
|
|
36
66
|
1. Fork it
|
@@ -44,3 +74,21 @@ PostcodeAnywhere::EmailValidation.valid?('info@google.com') #=> true
|
|
44
74
|
|
45
75
|
[email-validation]: http://www.postcodeanywhere.co.uk/email-validation/
|
46
76
|
"PostcodeAnywhere's Email Validation web services"
|
77
|
+
|
78
|
+
[build-status]: https://travis-ci.org/moneyadviceservice/postcode_anywhere-email_validation
|
79
|
+
"Build Status"
|
80
|
+
|
81
|
+
[build-status-badge]: https://travis-ci.org/moneyadviceservice/postcode_anywhere-email_validation.png
|
82
|
+
"Build Status"
|
83
|
+
|
84
|
+
[code-climate-feed]: https://codeclimate.com/github/moneyadviceservice/postcode_anywhere-email_validation
|
85
|
+
"Code Climate"
|
86
|
+
|
87
|
+
[code-climate-badge]: https://codeclimate.com/github/moneyadviceservice/postcode_anywhere-email_validation.png
|
88
|
+
"Code Climate"
|
89
|
+
|
90
|
+
[coverage-status]: https://coveralls.io/r/moneyadviceservice/postcode_anywhere-email_validation
|
91
|
+
"Coverage Status"
|
92
|
+
|
93
|
+
[coverage-status-badge]: https://coveralls.io/repos/moneyadviceservice/postcode_anywhere-email_validation/badge.png
|
94
|
+
"Coverage Status"
|
@@ -2,6 +2,7 @@ require 'postcode_anywhere/email_validation/response'
|
|
2
2
|
require 'postcode_anywhere/email_validation/validation_error'
|
3
3
|
require 'postcode_anywhere/email_validation/validator'
|
4
4
|
require 'postcode_anywhere/email_validation/version'
|
5
|
+
require 'postcode_anywhere/matchers/email_validator' if defined?(RSpec)
|
5
6
|
|
6
7
|
require 'rest_client'
|
7
8
|
|
@@ -4,7 +4,9 @@ module PostcodeAnywhere
|
|
4
4
|
module EmailValidation
|
5
5
|
class Validator < ActiveModel::EachValidator
|
6
6
|
def validate_each(record, attribute, value)
|
7
|
-
|
7
|
+
if value.blank?
|
8
|
+
record.errors.add(attribute, :blank, value: value)
|
9
|
+
elsif !PostcodeAnywhere::EmailValidation.valid?(value)
|
8
10
|
record.errors.add(attribute, :invalid, value: value)
|
9
11
|
end
|
10
12
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module PostcodeAnywhere
|
2
|
+
module Matchers
|
3
|
+
RSpec::Matchers.define :validate_email_with_postcode_anywhere do
|
4
|
+
chain :on_attribute do |attribute|
|
5
|
+
@attribute = attribute
|
6
|
+
end
|
7
|
+
|
8
|
+
match do |model|
|
9
|
+
model_validators = model.class.validators_on(attribute)
|
10
|
+
model_validators.any? { |validator| validator.instance_of?(PostcodeAnywhere::EmailValidation::Validator) }
|
11
|
+
end
|
12
|
+
|
13
|
+
def attribute
|
14
|
+
@attribute || :email
|
15
|
+
end
|
16
|
+
|
17
|
+
failure_message_for_should do |model|
|
18
|
+
failure_message(model, 'should')
|
19
|
+
end
|
20
|
+
|
21
|
+
failure_message_for_should_not do |model|
|
22
|
+
failure_message(model, 'snould not')
|
23
|
+
end
|
24
|
+
|
25
|
+
def failure_message(model, should_or_should_not)
|
26
|
+
"#{model.class} #{should_or_should_not} have 'PostcodeAnywhere::EmailValidation::Validator' on attribute #{attribute}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -11,18 +11,19 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.description = %q{Verify the existence of an email address.}
|
12
12
|
spec.summary = %q{Verifies the existence of an email address using the Email Validation web services from PostcodeAnywhere.}
|
13
13
|
spec.homepage = 'https://github.com/moneyadviceservice/postcode_anywhere-email_validation'
|
14
|
-
spec.date =
|
14
|
+
spec.date = '2013-06-04'
|
15
15
|
spec.files = `git ls-files`.split($/)
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ['lib']
|
19
|
-
spec.required_ruby_version = '>= 1.9.
|
19
|
+
spec.required_ruby_version = '>= 1.9.3'
|
20
20
|
|
21
21
|
spec.add_dependency 'rest-client', '~> 1.6'
|
22
22
|
spec.add_dependency 'activemodel', '~> 3.2'
|
23
23
|
|
24
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.2'
|
25
25
|
spec.add_development_dependency 'capybara', '~> 2.1'
|
26
|
+
spec.add_development_dependency 'coveralls'
|
26
27
|
spec.add_development_dependency 'rake'
|
27
28
|
spec.add_development_dependency 'rspec', '~> 2.0'
|
28
29
|
spec.add_development_dependency 'vcr', '~> 2.4'
|
@@ -7,6 +7,13 @@ module PostcodeAnywhere
|
|
7
7
|
|
8
8
|
subject { ::ValidatedClass.new }
|
9
9
|
|
10
|
+
context 'blank email' do
|
11
|
+
it 'is not valid' do
|
12
|
+
PostcodeAnywhere::EmailValidation.should_not_receive(:valid?)
|
13
|
+
expect(subject).to_not be_valid
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
10
17
|
context 'Using Postcode Anywhere' do
|
11
18
|
before { subject.email = 'an_email' }
|
12
19
|
|
@@ -21,6 +28,14 @@ module PostcodeAnywhere
|
|
21
28
|
end
|
22
29
|
end
|
23
30
|
|
31
|
+
describe 'RSpec Matcher' do
|
32
|
+
context 'with default attribute' do
|
33
|
+
it { should validate_email_with_postcode_anywhere }
|
34
|
+
end
|
35
|
+
context 'with custom attribute' do
|
36
|
+
it { should validate_email_with_postcode_anywhere.on_attribute(:email) }
|
37
|
+
end
|
38
|
+
end
|
24
39
|
end
|
25
40
|
end
|
26
41
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module PostcodeAnywhere::EmailValidation
|
4
|
+
|
5
|
+
describe 'Validator Matcher' do
|
6
|
+
|
7
|
+
context 'when Validator is defined' do
|
8
|
+
subject { ::ValidatedClass.new }
|
9
|
+
|
10
|
+
it { should validate_email_with_postcode_anywhere }
|
11
|
+
|
12
|
+
it { should validate_email_with_postcode_anywhere.on_attribute(:email) }
|
13
|
+
|
14
|
+
it { should_not validate_email_with_postcode_anywhere.on_attribute(:email_address) }
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when Validator is not defined' do
|
18
|
+
subject { ::NotValidatedClass.new }
|
19
|
+
|
20
|
+
it { should_not validate_email_with_postcode_anywhere }
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,12 +3,12 @@ ENV['POSTCODE_ANYWHERE_KEY'] ||= 'AA11-AA11-AA11-AA11'
|
|
3
3
|
require 'postcode_anywhere/email_validation'
|
4
4
|
|
5
5
|
require 'capybara/rspec'
|
6
|
+
require 'coveralls'
|
6
7
|
require 'vcr'
|
7
8
|
require 'pry'
|
8
9
|
|
9
10
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
10
11
|
|
11
|
-
|
12
12
|
RSpec.configure do |config|
|
13
13
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
14
|
|
@@ -30,3 +30,5 @@ VCR.configure do |config|
|
|
30
30
|
config.hook_into :webmock
|
31
31
|
config.filter_sensitive_data('{{Key}}') { ENV['POSTCODE_ANYWHERE_KEY'] }
|
32
32
|
end
|
33
|
+
|
34
|
+
Coveralls.wear!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postcode_anywhere-email_validation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Garner
|
@@ -45,14 +45,14 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ~>
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '1.
|
48
|
+
version: '1.2'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '1.
|
55
|
+
version: '1.2'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: capybara
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,18 +67,32 @@ dependencies:
|
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '2.1'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: coveralls
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: rake
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
73
87
|
requirements:
|
74
|
-
- -
|
88
|
+
- - '>='
|
75
89
|
- !ruby/object:Gem::Version
|
76
90
|
version: '0'
|
77
91
|
type: :development
|
78
92
|
prerelease: false
|
79
93
|
version_requirements: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
|
-
- -
|
95
|
+
- - '>='
|
82
96
|
- !ruby/object:Gem::Version
|
83
97
|
version: '0'
|
84
98
|
- !ruby/object:Gem::Dependency
|
@@ -133,6 +147,7 @@ extra_rdoc_files: []
|
|
133
147
|
files:
|
134
148
|
- .gitignore
|
135
149
|
- .rspec
|
150
|
+
- .travis.yml
|
136
151
|
- Gemfile
|
137
152
|
- LICENSE.txt
|
138
153
|
- README.md
|
@@ -142,6 +157,7 @@ files:
|
|
142
157
|
- lib/postcode_anywhere/email_validation/validation_error.rb
|
143
158
|
- lib/postcode_anywhere/email_validation/validator.rb
|
144
159
|
- lib/postcode_anywhere/email_validation/version.rb
|
160
|
+
- lib/postcode_anywhere/matchers/email_validator.rb
|
145
161
|
- postcodeanywhere-emailvalidation.gemspec
|
146
162
|
- spec/features/email_validation_spec.rb
|
147
163
|
- spec/features/email_validator_spec.rb
|
@@ -149,6 +165,7 @@ files:
|
|
149
165
|
- spec/lib/postcode_anywhere/email_validation/validation_error_spec.rb
|
150
166
|
- spec/lib/postcode_anywhere/email_validation/validator_spec.rb
|
151
167
|
- spec/lib/postcode_anywhere/email_validation_spec.rb
|
168
|
+
- spec/lib/postcode_anywhere/matchers/email_validator_spec.rb
|
152
169
|
- spec/spec_helper.rb
|
153
170
|
- spec/support/fixtures/vcr_cassettes/activemodel_validator_with_invalid_values_is_not_valid_on_value_example_com_.yml
|
154
171
|
- spec/support/fixtures/vcr_cassettes/activemodel_validator_with_invalid_values_is_not_valid_on_value_john_doe_.yml
|
@@ -158,6 +175,7 @@ files:
|
|
158
175
|
- spec/support/fixtures/vcr_cassettes/validating_an_email_address_with_invalid_format.yml
|
159
176
|
- spec/support/fixtures/vcr_cassettes/validating_an_email_address_with_valid_format_and_valid_dns_record.yml
|
160
177
|
- spec/support/fixtures/vcr_cassettes/validating_an_email_address_without_api_key.yml
|
178
|
+
- spec/support/not_validated_class.rb
|
161
179
|
- spec/support/validated_class.rb
|
162
180
|
homepage: https://github.com/moneyadviceservice/postcode_anywhere-email_validation
|
163
181
|
licenses: []
|
@@ -168,12 +186,12 @@ require_paths:
|
|
168
186
|
- lib
|
169
187
|
required_ruby_version: !ruby/object:Gem::Requirement
|
170
188
|
requirements:
|
171
|
-
- -
|
189
|
+
- - '>='
|
172
190
|
- !ruby/object:Gem::Version
|
173
|
-
version: 1.9.
|
191
|
+
version: 1.9.3
|
174
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
193
|
requirements:
|
176
|
-
- -
|
194
|
+
- - '>='
|
177
195
|
- !ruby/object:Gem::Version
|
178
196
|
version: '0'
|
179
197
|
requirements: []
|
@@ -190,6 +208,7 @@ test_files:
|
|
190
208
|
- spec/lib/postcode_anywhere/email_validation/validation_error_spec.rb
|
191
209
|
- spec/lib/postcode_anywhere/email_validation/validator_spec.rb
|
192
210
|
- spec/lib/postcode_anywhere/email_validation_spec.rb
|
211
|
+
- spec/lib/postcode_anywhere/matchers/email_validator_spec.rb
|
193
212
|
- spec/spec_helper.rb
|
194
213
|
- spec/support/fixtures/vcr_cassettes/activemodel_validator_with_invalid_values_is_not_valid_on_value_example_com_.yml
|
195
214
|
- spec/support/fixtures/vcr_cassettes/activemodel_validator_with_invalid_values_is_not_valid_on_value_john_doe_.yml
|
@@ -199,4 +218,5 @@ test_files:
|
|
199
218
|
- spec/support/fixtures/vcr_cassettes/validating_an_email_address_with_invalid_format.yml
|
200
219
|
- spec/support/fixtures/vcr_cassettes/validating_an_email_address_with_valid_format_and_valid_dns_record.yml
|
201
220
|
- spec/support/fixtures/vcr_cassettes/validating_an_email_address_without_api_key.yml
|
221
|
+
- spec/support/not_validated_class.rb
|
202
222
|
- spec/support/validated_class.rb
|