Spec: test ip.sslip.io

Also, change the order of `dig` arguments so that the server being
queried is first (e.g. `@#{whois_nameserver}`) and the arguments (e.g.
`+short`), is last.
This commit is contained in:
Brian Cunnie
2021-11-05 08:10:39 -07:00
parent 1d4e1af656
commit 854d8e8c1b

View File

@@ -40,69 +40,74 @@ describe domain do
whois_nameservers.each do |whois_nameserver| whois_nameservers.each do |whois_nameserver|
it "nameserver #{whois_nameserver}'s NS records match whois's #{whois_nameservers}, " + it "nameserver #{whois_nameserver}'s NS records match whois's #{whois_nameservers}, " +
"`dig +short ns #{domain} @#{whois_nameserver}`" do "`dig @#{whois_nameserver} ns #{domain} +short`" do
dig_nameservers = `dig +short ns #{domain} @#{whois_nameserver}`.split(/\n+/) dig_nameservers = `dig @#{whois_nameserver} ns #{domain} +short`.split(/\n+/)
expect(dig_nameservers.sort).to eq(whois_nameservers.sort) expect(dig_nameservers.sort).to eq(whois_nameservers.sort)
end end
it "nameserver #{whois_nameserver}'s SOA record match" do it "nameserver #{whois_nameserver}'s SOA record match" do
dig_soa = `dig +short soa #{domain} @#{whois_nameserver}` dig_soa = `dig @#{whois_nameserver} soa #{domain} +short`
soa = soa || dig_soa soa = soa || dig_soa
expect(dig_soa).to eq(soa) expect(dig_soa).to eq(soa)
end end
it "nameserver #{whois_nameserver}'s has an A record" do it "nameserver #{whois_nameserver}'s has an A record" do
expect(`dig +short a #{domain} @#{whois_nameserver}`.chomp).not_to eq('') expect(`dig @#{whois_nameserver} a #{domain} +short`.chomp).not_to eq('')
expect($?.success?).to be true expect($?.success?).to be true
end end
it "nameserver #{whois_nameserver}'s has an AAAA record" do it "nameserver #{whois_nameserver}'s has an AAAA record" do
expect(`dig +short a #{domain} @#{whois_nameserver}`.chomp).not_to eq('') expect(`dig @#{whois_nameserver} a #{domain} +short`.chomp).not_to eq('')
expect($?.success?).to be true expect($?.success?).to be true
end end
a = [ rand(256), rand(256), rand(256), rand(256) ] a = [ rand(256), rand(256), rand(256), rand(256) ]
it "resolves #{a.join(".")}.#{domain} to #{a.join(".")}" do it "resolves #{a.join(".")}.#{domain} to #{a.join(".")}" do
expect(`dig +short #{a.join(".") + "." + domain} @#{whois_nameserver}`.chomp).to eq(a.join(".")) expect(`dig @#{whois_nameserver} #{a.join(".") + "." + domain} +short`.chomp).to eq(a.join("."))
end end
a = [ rand(256), rand(256), rand(256), rand(256) ] a = [ rand(256), rand(256), rand(256), rand(256) ]
it "resolves #{a.join("-")}.#{domain} to #{a.join(".")}" do it "resolves #{a.join("-")}.#{domain} to #{a.join(".")}" do
expect(`dig +short #{a.join("-") + "." + domain} @#{whois_nameserver}`.chomp).to eq(a.join(".")) expect(`dig @#{whois_nameserver} #{a.join("-") + "." + domain} +short`.chomp).to eq(a.join("."))
end end
a = [ rand(256), rand(256), rand(256), rand(256) ] a = [ rand(256), rand(256), rand(256), rand(256) ]
b = [ ('a'..'z').to_a, ('0'..'9').to_a ].flatten.shuffle[0,8].join b = [ ('a'..'z').to_a, ('0'..'9').to_a ].flatten.shuffle[0,8].join
it "resolves #{b}.#{a.join("-")}.#{domain} to #{a.join(".")}" do it "resolves #{b}.#{a.join("-")}.#{domain} to #{a.join(".")}" do
expect(`dig +short #{b}.#{a.join("-") + "." + domain} @#{whois_nameserver}`.chomp).to eq(a.join(".")) expect(`dig @#{whois_nameserver} #{b}.#{a.join("-") + "." + domain} +short`.chomp).to eq(a.join("."))
end end
a = [ rand(256), rand(256), rand(256), rand(256) ] a = [ rand(256), rand(256), rand(256), rand(256) ]
b = [ ('a'..'z').to_a, ('0'..'9').to_a ].flatten.shuffle[0,8].join b = [ ('a'..'z').to_a, ('0'..'9').to_a ].flatten.shuffle[0,8].join
it "resolves #{a.join("-")}.#{b} to #{a.join(".")}" do it "resolves #{a.join("-")}.#{b} to #{a.join(".")}" do
expect(`dig +short #{a.join("-") + "." + b} @#{whois_nameserver}`.chomp).to eq(a.join(".")) expect(`dig @#{whois_nameserver} #{a.join("-") + "." + b} +short`.chomp).to eq(a.join("."))
end end
# don't begin the hostname with a double-dash -- `dig` mistakes it for an argument # don't begin the hostname with a double-dash -- `dig` mistakes it for an argument
it "resolves api.--.#{domain}' to eq ::)}" do it "resolves api.--.#{domain}' to eq ::)}" do
expect(`dig +short AAAA api.--.#{domain} @#{whois_nameserver}`.chomp).to eq("::") expect(`dig @#{whois_nameserver} AAAA api.--.#{domain} +short`.chomp).to eq("::")
end end
it "resolves localhost.--1.#{domain}' to eq ::1)}" do it "resolves localhost.--1.#{domain}' to eq ::1)}" do
expect(`dig +short AAAA localhost.api.--1.#{domain} @#{whois_nameserver}`.chomp).to eq("::1") expect(`dig @#{whois_nameserver} AAAA localhost.api.--1.#{domain} +short`.chomp).to eq("::1")
end end
it "resolves 2001-4860-4860--8888.#{domain}' to eq 2001:4860:4860::8888)}" do it "resolves 2001-4860-4860--8888.#{domain}' to eq 2001:4860:4860::8888)}" do
expect(`dig +short AAAA 2001-4860-4860--8888.#{domain} @#{whois_nameserver}`.chomp).to eq("2001:4860:4860::8888") expect(`dig @#{whois_nameserver} AAAA 2001-4860-4860--8888.#{domain} +short`.chomp).to eq("2001:4860:4860::8888")
end end
it "resolves 2601-646-100-69f0--24.#{domain}' to eq 2601:646:100:69f0::24)}" do it "resolves 2601-646-100-69f0--24.#{domain}' to eq 2601:646:100:69f0::24)}" do
expect(`dig +short AAAA 2601-646-100-69f0--24.#{domain} @#{whois_nameserver}`.chomp).to eq("2601:646:100:69f0::24") expect(`dig @#{whois_nameserver} AAAA 2601-646-100-69f0--24.#{domain} +short`.chomp).to eq("2601:646:100:69f0::24")
end end
it "gets the expected version number, #{sslip_version}" do it "gets the expected version number, #{sslip_version}" do
expect(`dig @#{whois_nameserver} TXT version.#{domain} +short`).to include(sslip_version) expect(`dig @#{whois_nameserver} TXT version.#{domain} +short`).to include(sslip_version)
end end
it "gets the source (querier's) IP address" do
# Look on my Regular Expressions, ye mighty, and despair!
expect(`dig @#{whois_nameserver} TXT ip.#{domain} +short`).to match(/^"([0-9]+\.[0-9]+\.[0-9]+\.[0-9+])|(([0-9a-fA-F]*:){2,7}[0-9a-fA-F]*)"$/)
end
end end
# check the website # check the website
it "is able to reach https://#{domain} and get a valid response (2xx)" do it "is able to reach https://#{domain} and get a valid response (2xx)" do