email_address 0.1.2 → 0.2.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.
@@ -1,22 +1,20 @@
1
- # encoding: UTF-8
2
- require_relative '../test_helper'
1
+ require_relative "../test_helper"
3
2
 
4
3
  class TestLocal < MiniTest::Test
5
-
6
4
  def test_valid_standard
7
5
  [ # Via https://en.wikipedia.org/wiki/Email_address
8
- %Q{prettyandsimple},
9
- %Q{very.common},
10
- %Q{disposable.style.email.with+symbol},
11
- %Q{other.email-with-dash},
12
- %Q{"much.more unusual"},
13
- %Q{"(comment)very.unusual.@.unusual.com"},
14
- %Q{#!$%&'*+-/=?^_`{}|~},
15
- %Q{" "},
16
- %Q{"very.(),:;<>[]\\".VERY.\\"very@\\ \\"very\\".unusual"},
17
- %Q{"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"},
18
- %Q{token." ".token},
19
- %Q{abc."defghi".xyz},
6
+ %(prettyandsimple),
7
+ %(very.common),
8
+ %(disposable.style.email.with+symbol),
9
+ %(other.email-with-dash),
10
+ %("much.more unusual"),
11
+ %{"(comment)very.unusual.@.unusual.com"},
12
+ %(#!$%&'*+-/=?^_`{}|~),
13
+ %(" "),
14
+ %{"very.(),:;<>[]\\".VERY.\\"very@\\ \\"very\\".unusual"},
15
+ %{"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"},
16
+ %(token." ".token),
17
+ %(abc."defghi".xyz)
20
18
  ].each do |local|
21
19
  assert EmailAddress::Local.new(local, local_fix: false).standard?, local
22
20
  end
@@ -24,15 +22,15 @@ class TestLocal < MiniTest::Test
24
22
 
25
23
  def test_invalid_standard
26
24
  [ # Via https://en.wikipedia.org/wiki/Email_address
27
- %Q{A@b@c},
28
- %Q{a"b(c)d,e:f;g<h>i[j\k]l},
29
- %Q{just"not"right},
30
- %Q{this is"not\allowed},
31
- %Q{this\ still\"not\\allowed},
32
- %Q{john..doe},
33
- %Q{ invalid},
34
- %Q{invalid },
35
- %Q{abc"defghi"xyz},
25
+ %(A@b@c),
26
+ %{a"b(c)d,e:f;g<h>i[j\k]l},
27
+ %(just"not"right),
28
+ %(this is"not\allowed),
29
+ %(this\ still\"not\\allowed),
30
+ %(john..doe),
31
+ %( invalid),
32
+ %(invalid ),
33
+ %(abc"defghi"xyz)
36
34
  ].each do |local|
37
35
  assert_equal false, EmailAddress::Local.new(local, local_fix: false).standard?, local
38
36
  end
@@ -42,25 +40,25 @@ class TestLocal < MiniTest::Test
42
40
  assert EmailAddress::Local.new("first..last", local_format: :relaxed).valid?, "relax.."
43
41
  assert EmailAddress::Local.new("first.-last", local_format: :relaxed).valid?, "relax.-"
44
42
  assert EmailAddress::Local.new("a", local_format: :relaxed).valid?, "relax single"
45
- assert ! EmailAddress::Local.new("firstlast_", local_format: :relaxed).valid?, "last_"
43
+ assert EmailAddress::Local.new("firstlast_", local_format: :relaxed).valid?, "last_"
46
44
  end
47
45
 
48
46
  def test_unicode
49
- assert ! EmailAddress::Local.new("üñîçøðé1", local_encoding: :ascii).standard?, "not üñîçøðé1"
47
+ assert !EmailAddress::Local.new("üñîçøðé1", local_encoding: :ascii).standard?, "not üñîçøðé1"
50
48
  assert EmailAddress::Local.new("üñîçøðé2", local_encoding: :unicode).standard?, "üñîçøðé2"
51
- assert ! EmailAddress::Local.new("üñîçøðé3").valid?, "üñîçøðé3 valid"
49
+ assert EmailAddress::Local.new("test", local_encoding: :unicode).valid?, "unicode should include ascii"
50
+ assert !EmailAddress::Local.new("üñîçøðé3").valid?, "üñîçøðé3 valid"
52
51
  end
53
52
 
54
-
55
53
  def test_valid_conventional
56
- %w( first.last first First+Tag o'brien).each do |local|
54
+ %w[first.last first First+Tag o'brien].each do |local|
57
55
  assert EmailAddress::Local.new(local).conventional?, local
58
56
  end
59
57
  end
60
58
 
61
59
  def test_invalid_conventional
62
- (%w( first;.last +leading trailing+ o%brien) + ["first space"]).each do |local|
63
- assert ! EmailAddress::Local.new(local, local_fix:false).conventional?, local
60
+ (%w[first;.last +leading trailing+ o%brien] + ["first space"]).each do |local|
61
+ assert !EmailAddress::Local.new(local, local_fix: false).conventional?, local
64
62
  end
65
63
  end
66
64
 
@@ -71,8 +69,8 @@ class TestLocal < MiniTest::Test
71
69
 
72
70
  def test_format
73
71
  assert_equal :conventional, EmailAddress::Local.new("can1").format?
74
- assert_equal :standard, EmailAddress::Local.new(%Q{"can1"}).format?
75
- assert_equal "can1", EmailAddress::Local.new(%Q{"can1(commment)"}).format(:conventional)
72
+ assert_equal :standard, EmailAddress::Local.new(%("can1")).format?
73
+ assert_equal "can1", EmailAddress::Local.new(%{"can1(commment)"}).format(:conventional)
76
74
  end
77
75
 
78
76
  def test_redacted
@@ -83,13 +81,28 @@ class TestLocal < MiniTest::Test
83
81
 
84
82
  def test_matches
85
83
  a = EmailAddress.new("User+tag@gmail.com")
86
- assert_equal false, a.matches?('user')
87
- assert_equal false, a.matches?('user@')
88
- assert_equal 'user*@', a.matches?('user*@')
84
+ assert_equal false, a.matches?("user")
85
+ assert_equal false, a.matches?("user@")
86
+ assert_equal "user*@", a.matches?("user*@")
89
87
  end
90
88
 
91
89
  def test_munge
92
90
  assert_equal "us*****", EmailAddress::Local.new("User+tag").munge
93
91
  end
94
92
 
93
+ def test_hosted
94
+ assert EmailAddress.valid?("x@exposure.co")
95
+ assert EmailAddress.error("xxxx+subscriber@gmail.com")
96
+ assert EmailAddress.valid?("xxxxx+subscriber@gmail.com")
97
+ end
98
+
99
+ def test_ending_underscore
100
+ assert EmailAddress.valid?("name_@icloud.com")
101
+ assert EmailAddress.valid?("username_@gmail.com")
102
+ assert EmailAddress.valid?("username_____@gmail.com")
103
+ end
104
+
105
+ def test_tag_punctuation
106
+ assert EmailAddress.valid?("first.last+foo.bar@gmail.com")
107
+ end
95
108
  end
@@ -0,0 +1,11 @@
1
+ require_relative "../test_helper"
2
+
3
+ class TestRewriter < Minitest::Test
4
+ def test_srs
5
+ ea = "first.LAST+tag@gmail.com"
6
+ e = EmailAddress.new(ea)
7
+ s = e.srs("example.com")
8
+ assert s.match(EmailAddress::Address::SRS_FORMAT_REGEX)
9
+ assert EmailAddress.new(s).to_s == e.to_s
10
+ end
11
+ end
@@ -0,0 +1,53 @@
1
+ require_relative "test_helper"
2
+
3
+ class TestAliasing < MiniTest::Test
4
+ def setup
5
+ Object.send(:const_set, :EmailAddressValidator, EmailAddress)
6
+ Object.send(:remove_const, :EmailAddress)
7
+ end
8
+
9
+ def test_email_address_not_defined
10
+ assert_nil defined?(EmailAddress)
11
+ assert_nil defined?(EmailAddress::Address)
12
+ assert_nil defined?(EmailAddress::Config)
13
+ assert_nil defined?(EmailAddress::Exchanger)
14
+ assert_nil defined?(EmailAddress::Host)
15
+ assert_nil defined?(EmailAddress::Local)
16
+ assert_nil defined?(EmailAddress::Rewriter)
17
+ end
18
+
19
+ def test_alias_defined
20
+ assert_equal defined?(EmailAddressValidator), "constant"
21
+ assert_equal defined?(EmailAddressValidator::Address), "constant"
22
+ assert_equal defined?(EmailAddressValidator::Config), "constant"
23
+ assert_equal defined?(EmailAddressValidator::Exchanger), "constant"
24
+ assert_equal defined?(EmailAddressValidator::Host), "constant"
25
+ assert_equal defined?(EmailAddressValidator::Local), "constant"
26
+ assert_equal defined?(EmailAddressValidator::Rewriter), "constant"
27
+ end
28
+
29
+ def test_alias_class_methods
30
+ assert_equal true, EmailAddressValidator.valid?("user@yahoo.com")
31
+ end
32
+
33
+ def test_alias_host_methods
34
+ assert_equal true, EmailAddressValidator::Host.new("yahoo.com").valid?
35
+ end
36
+
37
+ def test_alias_address_methods
38
+ assert_equal true, EmailAddressValidator::Address.new("user@yahoo.com").valid?
39
+ end
40
+
41
+ def test_alias_config_methods
42
+ assert Hash, EmailAddressValidator::Config.new.to_h
43
+ end
44
+
45
+ def test_alias_local_methods
46
+ assert_equal true, EmailAddressValidator::Local.new("user").valid?
47
+ end
48
+
49
+ def teardown
50
+ Object.send(:const_set, :EmailAddress, EmailAddressValidator)
51
+ Object.send(:remove_const, :EmailAddressValidator)
52
+ end
53
+ end
@@ -1,45 +1,42 @@
1
- # encoding: UTF-8
2
- require_relative 'test_helper'
1
+ require_relative "test_helper"
3
2
 
4
3
  class TestEmailAddress < MiniTest::Test
5
-
6
4
  def test_new
7
- a = EmailAddress.new('user@example.com')
8
- assert_equal 'user', a.local.to_s
9
- assert_equal 'example.com', a.host.to_s
5
+ a = EmailAddress.new("user@example.com")
6
+ assert_equal "user", a.local.to_s
7
+ assert_equal "example.com", a.host.to_s
10
8
  end
11
9
 
12
10
  def test_canonical
13
- assert_equal "firstlast@gmail.com", EmailAddress.canonical('First.Last+TAG@gmail.com')
14
- a = EmailAddress.new_canonical('First.Last+TAG@gmail.com')
15
- assert_equal 'firstlast', a.local.to_s
11
+ assert_equal "firstlast@gmail.com", EmailAddress.canonical("First.Last+TAG@gmail.com")
12
+ a = EmailAddress.new_canonical("First.Last+TAG@gmail.com")
13
+ assert_equal "firstlast", a.local.to_s
16
14
  end
17
15
 
18
16
  def test_normal
19
- assert_equal 'user+tag@gmail.com', EmailAddress.normal('USER+TAG@GMAIL.com')
17
+ assert_equal "user+tag@gmail.com", EmailAddress.normal("USER+TAG@GMAIL.com")
20
18
  end
21
19
 
22
20
  def test_valid
23
- assert_equal true, EmailAddress.valid?('user@yahoo.com')
24
- assert_equal true, EmailAddress.valid?('a@yahoo.com')
21
+ assert_equal true, EmailAddress.valid?("user@yahoo.com")
22
+ assert_equal true, EmailAddress.valid?("a@yahoo.com")
25
23
  end
26
24
 
27
25
  def test_matches
28
- assert_equal 'yahoo.', EmailAddress.matches?('user@yahoo.com', 'yahoo.')
26
+ assert_equal "yahoo.", EmailAddress.matches?("user@yahoo.com", "yahoo.")
29
27
  end
30
28
 
31
29
  def test_reference
32
- assert_equal 'dfeafc750cecde54f9a4775f5713bf01', EmailAddress.reference('user@yahoo.com')
30
+ assert_equal "dfeafc750cecde54f9a4775f5713bf01", EmailAddress.reference("user@yahoo.com")
33
31
  end
34
32
 
35
33
  def test_redact
36
- assert_equal '{e037b6c476357f34f92b8f35b25d179a4f573f1e}@yahoo.com', EmailAddress.redact('user@yahoo.com')
34
+ assert_equal "{e037b6c476357f34f92b8f35b25d179a4f573f1e}@yahoo.com", EmailAddress.redact("user@yahoo.com")
37
35
  end
38
36
 
39
37
  def test_cases
40
- %w( miles.o'brien@yahoo.com first..last@gmail.com a-b.c_d+e@f.gx
41
- ).each do |address|
42
- assert EmailAddress.valid?(address, dns_lookup: :off), "valid?(#{address})"
38
+ %w[miles.o'brien@yahoo.com first.last@gmail.com a-b.c_d+e@f.gx].each do |address|
39
+ assert EmailAddress.valid?(address, host_validation: :syntax), "valid?(#{address})"
43
40
  end
44
41
  end
45
42
 
@@ -47,5 +44,4 @@ class TestEmailAddress < MiniTest::Test
47
44
  assert_equal "", EmailAddress.normal("")
48
45
  assert_equal "", EmailAddress.normal(" ")
49
46
  end
50
-
51
47
  end
data/test/test_helper.rb CHANGED
@@ -1,11 +1,12 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
2
 
3
- require 'simplecov'
3
+ require "pry"
4
+ require "simplecov"
4
5
  SimpleCov.start
5
6
 
6
- require 'active_record'
7
- require 'rubygems'
8
- require 'minitest/autorun'
9
- require 'minitest/unit'
10
- require 'minitest/pride'
11
- require 'email_address'
7
+ require "active_record"
8
+ require "rubygems"
9
+ require "minitest/autorun"
10
+ require "minitest/unit"
11
+ require "minitest/pride"
12
+ require "email_address"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email_address
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Fair
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-10 00:00:00.000000000 Z
11
+ date: 2021-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 5.8.3
33
+ version: '5.11'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 5.8.3
40
+ version: '5.11'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.3'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.3'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activerecord
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 5.0.1
61
+ version: 6.1.4
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 5.0.1
68
+ version: 6.1.4
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: codeclimate-test-reporter
84
+ name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,13 +95,13 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: simpleidn
98
+ name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
- type: :runtime
104
+ type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
@@ -109,7 +109,21 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: netaddr
112
+ name: standard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: simpleidn
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ">="
@@ -129,8 +143,8 @@ executables: []
129
143
  extensions: []
130
144
  extra_rdoc_files: []
131
145
  files:
146
+ - ".github/workflows/ci.yml"
132
147
  - ".gitignore"
133
- - ".travis.yml"
134
148
  - Gemfile
135
149
  - LICENSE.txt
136
150
  - README.md
@@ -145,6 +159,8 @@ files:
145
159
  - lib/email_address/exchanger.rb
146
160
  - lib/email_address/host.rb
147
161
  - lib/email_address/local.rb
162
+ - lib/email_address/messages.yaml
163
+ - lib/email_address/rewriter.rb
148
164
  - lib/email_address/version.rb
149
165
  - test/activerecord/test_ar.rb
150
166
  - test/activerecord/user.rb
@@ -153,13 +169,15 @@ files:
153
169
  - test/email_address/test_exchanger.rb
154
170
  - test/email_address/test_host.rb
155
171
  - test/email_address/test_local.rb
172
+ - test/email_address/test_rewriter.rb
173
+ - test/test_aliasing.rb
156
174
  - test/test_email_address.rb
157
175
  - test/test_helper.rb
158
176
  homepage: https://github.com/afair/email_address
159
177
  licenses:
160
178
  - MIT
161
179
  metadata: {}
162
- post_install_message:
180
+ post_install_message:
163
181
  rdoc_options: []
164
182
  require_paths:
165
183
  - lib
@@ -167,16 +185,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
185
  requirements:
168
186
  - - ">="
169
187
  - !ruby/object:Gem::Version
170
- version: '0'
188
+ version: '2.5'
189
+ - - "<"
190
+ - !ruby/object:Gem::Version
191
+ version: '4'
171
192
  required_rubygems_version: !ruby/object:Gem::Requirement
172
193
  requirements:
173
194
  - - ">="
174
195
  - !ruby/object:Gem::Version
175
196
  version: '0'
176
197
  requirements: []
177
- rubyforge_project:
178
- rubygems_version: 2.6.8
179
- signing_key:
198
+ rubygems_version: 3.2.15
199
+ signing_key:
180
200
  specification_version: 4
181
201
  summary: This gem provides a ruby language library for working with and validating
182
202
  email addresses. By default, it validates against conventional usage, the format
@@ -190,5 +210,7 @@ test_files:
190
210
  - test/email_address/test_exchanger.rb
191
211
  - test/email_address/test_host.rb
192
212
  - test/email_address/test_local.rb
213
+ - test/email_address/test_rewriter.rb
214
+ - test/test_aliasing.rb
193
215
  - test/test_email_address.rb
194
216
  - test/test_helper.rb
data/.travis.yml DELETED
@@ -1,10 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - ruby-head
4
- - 2.2.2
5
- - jruby-9.0.4.0
6
- #- rbx
7
-
8
- addons:
9
- code_climate:
10
- repo_token: 729b2d0e2cc94f63b7da91042da0b6d77bbe30c2024dba04881f46caf702636f