Sha256: 6e7235e4c548e63d68f5783b3c60bc56440283a02ea843916995933d07793702

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require File.join(File.dirname(__FILE__), 'helper')

class TestDomains < Minitest::Test

  WHITELIST = [ "non-us gov", "non-us mil", "US Federal"]
  DOMAINS = Gman::Parser.file_to_hash(Gman.list_path)

  def whitelisted?(domain)
    WHITELIST.each do |group|
      return true if DOMAINS[group].include? domain
    end
    false
  end

  should "only contain resolvable domains" do
    unresolvables = []
    Parallel.each(Gman.list, :in_threads => 2) do |entry|
      next if whitelisted? entry.name
      resolves = Gman::Parser.domain_resolves?(entry.name)
      unresolvables.push entry.name unless resolves
    end
    assert_equal [], unresolvables
  end

  should "not contain any educational domains" do
    Parallel.each(Gman.list, :in_threads => 2) 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
    Parallel.each(Gman.list, :in_threads => 2) do |entry|
      assert_equal true, PublicSuffix.valid?("foo.#{entry.name}"), "#{entry.name} is not a valid domain"
    end
  end

  should "pass any url on the list" do
    Parallel.each(Gman.list, :in_threads => 2) 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
    Parallel.each(Gman.list, :in_threads => 2) 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
    Parallel.each(Gman.list, :in_threads => 2) do |entry|
      assert_equal true, Gman.valid?("foo.#{entry.name}"), "foo.#{entry.name} is not a valid domain"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gman-4.6.5 test/test_domains.rb