2015-08-22 12:20:03 +00:00
|
|
|
require 'minitest/autorun'
|
|
|
|
require 'resolv'
|
|
|
|
require 'yaml'
|
|
|
|
require 'pp'
|
|
|
|
|
|
|
|
class TestConfig < Minitest::Test
|
2015-08-22 12:52:32 +00:00
|
|
|
REDIRECTS = [301, 302]
|
2015-08-22 12:20:03 +00:00
|
|
|
def setup
|
2015-08-22 12:52:32 +00:00
|
|
|
@config = YAML::load_file 'redirects.yml'
|
2015-08-22 12:20:03 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_redirect_sections
|
2015-08-22 12:52:32 +00:00
|
|
|
@config.each do |code, zone|
|
|
|
|
assert REDIRECTS.include? code
|
2015-08-22 12:20:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_each_domain
|
|
|
|
@config.each do |section, zone|
|
|
|
|
zone.each do |domain, redirect|
|
2015-08-22 19:47:36 +00:00
|
|
|
url = get_url(redirect, "")
|
|
|
|
refute_nil url, "Invalid YAML config for #{domain}"
|
2015-08-22 12:20:03 +00:00
|
|
|
assert resolves_to_lightsaber(domain),
|
|
|
|
"DNS for #{domain} isn't setup yet. See README"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def resolves_to_lightsaber(domain)
|
2015-08-22 12:52:32 +00:00
|
|
|
flag = domain === "lightsaber.captnemo.in"
|
2015-08-22 12:20:03 +00:00
|
|
|
Resolv::DNS.open do |dns|
|
|
|
|
records = dns.getresources domain, Resolv::DNS::Resource::IN::CNAME
|
|
|
|
records.each do |record|
|
|
|
|
flag||=record.name.to_s === "lightsaber.captnemo.in"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
flag
|
|
|
|
end
|
2015-08-22 19:47:36 +00:00
|
|
|
|
|
|
|
def get_url(domain_object, rel_route)
|
|
|
|
if domain_object.is_a? Hash
|
|
|
|
return domain_object['root'] + rel_route
|
|
|
|
elsif domain_object.is_a? String
|
|
|
|
return domain_object
|
|
|
|
end
|
|
|
|
end
|
2015-08-22 12:20:03 +00:00
|
|
|
end
|