spec/lib/gdk/diagnostic/hostname_spec.rb (53 lines of code) (raw):
# frozen_string_literal: true
RSpec.describe GDK::Diagnostic::Hostname do
describe '#success?' do
context 'the IP is part of the resolved IPs' do
before do
stub_universe(%w[::1 127.0.0.1], 'localhost', '127.0.0.1')
end
it { expect(subject.success?).to be true }
end
context 'the IP is not part of the resolved IPs' do
before do
stub_universe(%w[::1 127.0.0.1], 'gdk.test', '192.168.1.1')
end
it { expect(subject.success?).to be false }
end
context 'the hostname does not resolve to an IP' do
before do
stub_universe([], 'gdk.test', '127.0.0.1')
end
it { expect(subject.success?).to be false }
end
context 'the hostname is an IP itself' do
before do
stub_universe(%w[127.0.0.1], '127.0.0.1', '127.0.0.1')
end
it { expect(subject.success?).to be true }
end
end
describe '#detail' do
context 'if successful' do
before do
stub_universe(%w[127.0.0.1], '127.0.0.1', '127.0.0.1')
end
it { expect(subject.detail).to be_nil }
end
context 'if no hosts found' do
before do
stub_universe(%w[], 'gdk.test', '127.0.0.1')
end
it { expect(subject.detail).to match 'Could not resolve IP address for the GDK hostname' }
end
context 'if IPs do not match' do
before do
stub_universe(%w[127.0.0.1 ::1], 'gdk.test', '192.168.12.1')
end
it { expect(subject.detail).to match 'You should make sure that the two match.' }
end
end
def stub_universe(resolved_ips, hostname, listen_address)
allow_any_instance_of(Resolv).to receive(:getaddresses).and_return(resolved_ips)
allow_any_instance_of(GDK::Config).to receive(:hostname).and_return(hostname)
allow_any_instance_of(GDK::Config).to receive(:listen_address).and_return(listen_address)
end
end