email-authentication 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 6b11e4a16c57918633e14bd1410c5a59fb9d1d21
4
- data.tar.gz: e25d67af3ceeae586863ad791653513befc8ab7c
3
+ metadata.gz: ddb0630ec5b87bbab71968a26df1a4c883caee26
4
+ data.tar.gz: b806b6540c3b104d86961379944b8b5a0c913239
5
5
  SHA512:
6
- metadata.gz: 193b7265a1d2e2e8e1a1a98c5d6b737ded02c84872dd1371ebd615d4e9b4f2225a665c717e5f46491f193ce205565f7fa06615b49998f9ee1a690e23958010d5
7
- data.tar.gz: 4c64f777edc06a9897f915ad1693baeae4a2fcc06542b51209ee8ff128ef1b224e3b192454adcca971fc826192db28abc676a93286f7c2c384f8f4775ccbd175
6
+ metadata.gz: 3a75a3e97e638d0a4a4a9e4f8c6fb50d5d3a628fa1d868fa79313bf7b8bf8ddbcf56aa1a10d3bc64c89584b55c67eb6337bec22ba8b7a6399547555c35cf63fc
7
+ data.tar.gz: d4abdf831492b3711a415ff9e6abab9e32f8641a74931ffe4abdcd3de17b66a9eaebc91178465a059d02f2fa9983b4ba6a564a66058c67b13aa019ec8462f945
data/Gemfile.lock CHANGED
@@ -2,12 +2,14 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  email-authentication (0.1.0)
5
+ dnsruby
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
10
  codeclimate-test-reporter (0.1.1)
10
11
  simplecov (>= 0.7.1, < 1.0.0)
12
+ dnsruby (1.54)
11
13
  minitest (5.0.8)
12
14
  multi_json (1.8.0)
13
15
  simplecov (0.7.1)
@@ -1,12 +1,12 @@
1
1
  require 'rubygems'
2
- #require 'dnsruby'
3
- #include Dnsruby
2
+ require 'dnsruby'
3
+ include Dnsruby
4
4
 
5
5
  # Use the system configured nameservers to run a query
6
6
 
7
7
  module EmailAuthentication
8
8
  class Base
9
- attr_accessor :address, :mx, :message
9
+ attr_accessor :address, :mx, :message, :domain
10
10
  def debug
11
11
  true
12
12
  end
@@ -16,25 +16,53 @@ module EmailAuthentication
16
16
  self.address=address.to_s
17
17
  @flag=true
18
18
  end
19
+ # this needs work. Anyone who can improve the regex i would be happy
19
20
  def check_format
20
- [true,"format ok"]
21
+ @@email_regex = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Z‌​a-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/i
22
+ res=(@address =~ @@email_regex)
23
+ puts " res is #{res}"
24
+ if res
25
+ [true,"format ok"]
26
+ else
27
+ [false,"format failed"]
28
+ end
21
29
  end
22
-
30
+ # cache the dns resolver
23
31
  def resolver
24
- @resolver = String.new('fred') if @resolver==nil
25
- # @resolver = Dnsruby::Resolver.new if @resolver==nil
32
+ @resolver = Dnsruby::Resolver.new if @resolver==nil
26
33
  @resolver
27
34
  end
28
-
35
+ # check the mx domain
29
36
  def check_mx
30
-
31
- ret = self.resolver.query("google.com", Types.MX)
32
- [true,"mx ok"]
37
+ domain=self.address.split('@')
38
+ @domain = domain[1]
39
+ puts "domain is #{domain}"
40
+ flag=false
41
+ if @domain!=nil
42
+ begin
43
+ ret = self.resolver.query(@domain, Types.MX)
44
+ if ret.answer!=nil and ret.rcode=='NOERROR'
45
+ @mx=ret.answer.first.exchange.to_s if ret.answer!=nil
46
+ msg= "mx record #{self.mx}"
47
+ puts msg
48
+ flag=true
49
+ end
50
+ rescue Dnsruby::NXDomain
51
+ msg="non existing domain #{@domain}"
52
+ puts msg
53
+ end
54
+
55
+ else
56
+ msg="nil domain"
57
+ end
58
+ puts "ret is #{ret.inspect}"
59
+ [flag,msg]
33
60
  end
34
-
61
+ # need to think about this and check the domain via telnet
35
62
  def check_smtp
36
63
  [true,"smtp ok"]
37
64
  end
65
+ # run all the checks
38
66
  def check(address)
39
67
  self.set_address(address)
40
68
  @message=[]
@@ -14,7 +14,7 @@
14
14
  <img src="./assets/0.7.1/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2013-10-20T11:25:07+08:00">2013-10-20T11:25:07+08:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2013-10-20T15:28:45+08:00">2013-10-20T15:28:45+08:00</abbr></div>
18
18
  <ul class="group_tabs"></ul>
19
19
 
20
20
  <div id="content">
data/test/test_address.rb CHANGED
@@ -31,10 +31,9 @@ class EmailAuthenticationTest < Minitest::Test
31
31
 
32
32
  end
33
33
 
34
- def test_success
34
+ def test_goodemail
35
35
  success,msg= @f.check(@success)
36
- assert success,"check did not succeed"
37
-
36
+ assert success,"check did not succeed #{msg}"
38
37
  end
39
38
  def test_resolver_onlyonce
40
39
  res=@f.resolver
@@ -43,16 +42,20 @@ class EmailAuthenticationTest < Minitest::Test
43
42
 
44
43
  end
45
44
  #check a particular format
46
- def test_success
45
+ def test_checkformat_good
47
46
  @f.set_address(@success)
48
47
  success,msg= @f.check_format
49
48
  assert success,"check did not succeed"
50
49
 
51
50
  end
52
-
53
-
54
-
55
-
51
+ def test_bademails
52
+ ['test','test#sed', 'test@jack'].each { |e|
53
+ @f.set_address(e)
54
+ success,msg= @f.check_format
55
+ assert !success,"check did succeed but it should not for #{e}"
56
+ }
57
+
58
+ end
56
59
 
57
60
 
58
61
  end
@@ -0,0 +1,40 @@
1
+ puts File.dirname(__FILE__)
2
+ require File.dirname(__FILE__) + '/test_helper.rb'
3
+
4
+
5
+ class EmailMXAuthenticationTest < Minitest::Test
6
+
7
+ def setup
8
+ @f=EmailAuthentication::Base.new
9
+ @success='scott.sproule@ficonab.com'
10
+ @failruntimeerror=[nil,""]
11
+
12
+ end
13
+
14
+ def test_good_domain
15
+ @f.set_address(@success)
16
+ success,msg= @f.check_mx
17
+ assert success,"check did not succeed"
18
+ assert @f.mx!=nil, "mx should be set"
19
+
20
+ end
21
+
22
+ def test_bad_domain
23
+ @f.set_address('test@baddomainxx23345.com')
24
+ success,msg= @f.check_mx
25
+ assert !success,"check did not succeed"
26
+
27
+ end
28
+ def test_bad_domain2
29
+ @f.set_address('test@baddom ainxx23345.com')
30
+ success,msg= @f.check_mx
31
+ assert !success,"check did not succeed"
32
+
33
+ end
34
+
35
+
36
+
37
+
38
+
39
+
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email-authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Sproule
@@ -77,7 +77,7 @@ files:
77
77
  - test/coverage/index.html
78
78
  - test/test_address.rb
79
79
  - test/test_helper.rb
80
- - test/test_normal.rb
80
+ - test/test_mx_records.rb
81
81
  - bin/emailcheck.rb
82
82
  - Gemfile
83
83
  - Gemfile.lock
data/test/test_normal.rb DELETED
@@ -1,59 +0,0 @@
1
- puts File.dirname(__FILE__)
2
- require File.dirname(__FILE__) + '/test_helper.rb'
3
-
4
-
5
- class NormalTest < Minitest::Test
6
-
7
- def setup
8
- @f=Randprize::Base.new
9
- @pm=Randprize::ManagePrizes.new
10
- @headstails={ "T"=> {'odds'=> 2,'name'=>'win tails','value'=>0},"H"=> {'odds'=> 2,'name'=>'win heads','value'=>1}}
11
- @dice={}
12
- 1.upto(6) {|i| @dice[i.to_s]= {'odds'=> 6,'name'=>"rolled #{i}",'value'=>1} }
13
- @large={ "GP"=> {'odds'=> 100,'name'=>'grandprize','value'=>50000},"H"=> {'odds'=> 'REMAINING','name'=>'win heads','value'=>1}}
14
- @exlarge={ "GP"=> {'odds'=> 50000,'name'=>'grandprize','value'=>50000},"2nd"=> {'odds'=> 5000,'name'=>'2ndprize','value'=>50000},"H"=> {'odds'=> 'REMAINING','name'=>'win heads','value'=>0}}
15
-
16
- end
17
-
18
-
19
- def test_randomprize_forrandom
20
- steps=5000
21
- count=0
22
- 1.upto(steps) do
23
- @pm.prize_list(@headstails)
24
- prizes=[]
25
- @pm.myprizelist.each {|k| #puts "K is #{k}"
26
- prizes << k[1]}
27
- aprize=@pm.random_prize
28
- assert prizes.include?(aprize), "prize should be from the list"
29
- #puts "count #{count} aprize #{aprize}"
30
- count=aprize['value']+count
31
- end
32
- ratio=(count.to_f/steps)*100
33
- assert (49..51).include?(ratio.round), "ratio wrong #{ratio.round} count #{count}"
34
- end
35
- def test_dize
36
- steps=5000
37
- count=0
38
- hcount={}
39
- 1.upto(6) {|i| hcount["rolled #{i}"]=0}
40
-
41
- 1.upto(steps) do
42
- @pm.prize_list(@dice)
43
- prizes=[]
44
- @pm.myprizelist.each {|k| #puts "K is #{k}"
45
- prizes << k[1]}
46
- aprize=@pm.random_prize
47
- assert prizes.include?(aprize), "prize should be from the list"
48
- #puts "count #{count} aprize #{aprize}"
49
- hcount[aprize['name']]=hcount[aprize['name']]+1
50
- end
51
- # ratio=(count.to_f/steps)*100
52
- # assert (49..51).include?(ratio.round), "ratio wrong #{ratio.round} count #{count}"
53
- end
54
-
55
-
56
-
57
-
58
-
59
- end