test/landrush/server_test.rb in landrush-0.19.0 vs test/landrush/server_test.rb in landrush-1.0.0
- old
+ new
@@ -1,19 +1,18 @@
require 'test_helper'
+require 'resolv'
module Landrush
describe Server do
def query(host)
- output = `dig -p #{Server.port} @127.0.0.1 #{host}`
- answer_line = output.split("\n").grep(/^#{Regexp.escape(host)}/).first
- answer_line.split.last
+ Resolv::DNS.open(:nameserver_port => [["127.0.0.1", Server.port]]) do |r|
+ r.getaddress(host).to_s
+ end
end
- def query_ptr(host)
- output = `dig ptr -p #{Server.port} @127.0.0.1 #{host}`
- answer_line = output.split("\n").grep(/^#{Regexp.escape(host)}/).first
- answer_line.split.last
+ def wait_for_port
+ sleep 1 until (TCPSocket.open('127.0.0.1', Server.port) rescue nil)
end
describe 'start/stop' do
it 'starts and stops a daemon' do
Server.start
@@ -22,15 +21,19 @@
Server.stop
Server.running?.must_equal false
end
# FIXME: This test requires network access.
- # Which is not airplane hacking friendly. >:p
+ # Which is not airplane hacking friendly. >:p
it 'can be queried for upstream entries' do
- skip("needs network, and I am on an airplane without wifi")
+ # skip("needs network, and I am on an airplane without wifi")
+ Store.config.set('upstream', [[:udp, '8.8.8.8', 53], [:tcp, '8.8.8.8', 53]])
+
Server.start
+ wait_for_port
+
query("phinze.com").must_match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
end
it 'responds properly to configured machine entries' do
Server.start
@@ -38,13 +41,13 @@
fake_host = 'boogers.vagrant.test'
fake_ip = '99.98.97.96'
Store.hosts.set(fake_host, fake_ip)
- query(fake_host).must_equal fake_ip
- query_ptr(fake_host).must_equal fake_ip+'.'
+ wait_for_port
+ query(fake_host).must_equal fake_ip
end
it 'responds properly to configured cname entries' do
Server.start
@@ -53,20 +56,23 @@
fake_ip = '99.98.97.96'
Store.hosts.set(fake_host, fake_ip)
Store.hosts.set(fake_cname, fake_host)
- query(fake_cname).must_equal fake_host+'.'
+ wait_for_port
+ query(fake_cname).must_equal fake_ip
end
it 'also resolves wildcard subdomains to a given machine' do
Server.start
fake_host = 'boogers.vagrant.test'
fake_ip = '99.98.97.96'
Store.hosts.set(fake_host, fake_ip)
+
+ wait_for_port
query("green.#{fake_host}").must_match(fake_ip)
query("blue.#{fake_host}").must_match(fake_ip)
end
end