test/test_gman.rb in gman-1.0.0 vs test/test_gman.rb in gman-2.0.0

- old
+ new

@@ -1,122 +1,83 @@ -require 'helper' - -VALID = [ "foo.gov", - "http://foo.mil", - "foo@bar.gc.ca", - "foo.gov.au", - "https://www.foo.gouv.fr", - "foo@ci.champaign.il.us", - "foo.bar.baz.gov.au", - "foo@bar.gov.uk", - ".gov", - "foo.fed.us", - ] - -INVALID = [ "foo.bar.com", - "bar@foo.biz", - "http://www.foo.biz", - "foo.uk", - "gov", - "foo@k12.champaign.il.us", - "foo@kii.gov.by", - "foo", - "", - nil, - " ", - ] - -class TestGman < Test::Unit::TestCase - - def domain_resolves?(domain) - res = Net::DNS::Resolver.new - res.nameservers = ["8.8.8.8","8.8.4.4", "208.67.222.222", "208.67.220.220"] - packet = res.search(domain, Net::DNS::NS) - packet.header.anCount > 0 - end - - should "recognize government email addresses and domains" do - VALID.each do |test| - assert_equal true, Gman::valid?(test), "#{test} should be detected as a valid government domain" - end - end - - should "not recognize non-government email addresses and domains" do - INVALID.each do |test| - assert_equal false, Gman::valid?(test), "#{test} should be detected as an invalid government domain" - end - end - - should "not contain any educational domains" do - Gman.list.each do |entry| - assert_equal false, Swot::is_academic?(entry.name), "#{entry.name} is an academic domain" - end - end - - should "not contain any invalid domains" do - Gman.list.each do |entry| - assert_equal true, PublicSuffix.valid?("foo.#{entry.name}"), "#{entry.name} is not a valid domain" - end - end - - should "not allow educational domains" do - assert_equal false, Gman::valid?("foo@gwu.edu") - end - - should "properly parse domains from strings" do - assert_equal "github.gov", Gman::get_domain("foo@github.gov") - assert_equal "foo.github.gov", Gman::get_domain("foo.github.gov") - assert_equal "github.gov", Gman::get_domain("http://github.gov") - assert_equal "github.gov", Gman::get_domain("https://github.gov") - assert_equal ".gov", Gman::get_domain(".gov") - assert_equal nil, Gman.get_domain("foo") - end - - should "validate mx records when asked" do - assert_equal true, Gman.valid?("foo@nasa.gov", true) - assert_equal false, Gman.valid?("foo@github.gov", true) - assert_equal true, Gman.valid?("foo@github.gov", false) - end - - should "pass any url on the list" do - Gman.list.each do |entry| - assert_equal true, Gman.valid?("http://foo.#{entry.name}/bar"), "http://foo.#{entry.name}/bar is not a valid" - end - end - - should "pass any email on the list" do - Gman.list.each do |entry| - assert_equal true, Gman.valid?("foo@bar.#{entry.name}"), "foo@bar.#{entry.name} is not a valid" - end - end - - should "pass any domain on the list" do - Gman.list.each do |entry| - assert_equal true, Gman.valid?("foo.#{entry.name}"), "foo.#{entry.name} is not a valid domain" - end - end - - should "only contain resolvable domains" do - Gman.list.each do |entry| - assert_equal true, domain_resolves? domain - end - end - - - should "not err out on invalid domains" do - assert_equal false, Gman.valid?("foo@act.gov.au") - assert_equal "act.gov.au", Gman.get_domain("foo@act.gov.au") - assert_equal nil, Gman.domain_parts("foo@act.gov.au") - end - - should "return public suffix domain" do - assert_equal PublicSuffix::Domain, Gman.domain_parts("whitehouse.gov").class - assert_equal NilClass, Gman.domain_parts("foo.bar").class - end - - should "parse domain parts" do - assert_equal "gov", Gman.domain_parts("foo@bar.gov").tld - assert_equal "bar", Gman.domain_parts("foo.bar.gov").sld - assert_equal "bar", Gman.domain_parts("https://foo.bar.gov").sld - assert_equal "bar.gov", Gman.domain_parts("foo@bar.gov").domain - end -end +require File.join(File.dirname(__FILE__), 'helper') + +VALID = [ "foo.gov", + "http://foo.mil", + "foo@bar.gc.ca", + "foo.gov.au", + "https://www.foo.gouv.fr", + "foo@ci.champaign.il.us", + "foo.bar.baz.gov.au", + "foo@bar.gov.uk", + ".gov", + "foo.fed.us", + ] + +INVALID = [ "foo.bar.com", + "bar@foo.biz", + "http://www.foo.biz", + "foo.uk", + "gov", + "foo@k12.champaign.il.us", + "foo@kii.gov.by", + "foo", + "", + nil, + " ", + ] + +class TestGman < Test::Unit::TestCase + + + should "recognize government email addresses and domains" do + VALID.each do |test| + assert_equal true, Gman::valid?(test), "#{test} should be detected as a valid government domain" + end + end + + should "not recognize non-government email addresses and domains" do + INVALID.each do |test| + assert_equal false, Gman::valid?(test), "#{test} should be detected as an invalid government domain" + end + end + + should "not allow educational domains" do + assert_equal false, Gman::valid?("foo@gwu.edu") + end + + should "properly parse domains from strings" do + assert_equal "github.gov", Gman::get_domain("foo@github.gov") + assert_equal "foo.github.gov", Gman::get_domain("foo.github.gov") + assert_equal "github.gov", Gman::get_domain("http://github.gov") + assert_equal "github.gov", Gman::get_domain("https://github.gov") + assert_equal ".gov", Gman::get_domain(".gov") + assert_equal nil, Gman.get_domain("foo") + end + + should "not err out on invalid domains" do + assert_equal false, Gman.valid?("foo@act.gov.au") + assert_equal "act.gov.au", Gman.get_domain("foo@act.gov.au") + assert_equal nil, Gman.domain_parts("foo@act.gov.au") + end + + should "return public suffix domain" do + assert_equal PublicSuffix::Domain, Gman.domain_parts("whitehouse.gov").class + assert_equal NilClass, Gman.domain_parts("foo.bar").class + end + + should "parse domain parts" do + assert_equal "gov", Gman.domain_parts("foo@bar.gov").tld + assert_equal "bar", Gman.domain_parts("foo.bar.gov").sld + assert_equal "bar", Gman.domain_parts("https://foo.bar.gov").sld + assert_equal "bar.gov", Gman.domain_parts("foo@bar.gov").domain + end + + should "not err out on invalid hosts" do + assert_nothing_raised do + assert_equal nil, Gman.get_domain("</@foo.com") + end + end + + should "returns the path to domains.txt" do + assert_equal true, File.exists?(Gman.list_path) + end +end