spec/lib/gdk/diagnostic/loopback_spec.rb (76 lines of code) (raw):

# frozen_string_literal: true RSpec.describe GDK::Diagnostic::Loopback do include ShelloutHelper subject(:diagnostic) { described_class.new } let(:platform) { 'linux' } before do sh = gdk_shellout_double(success?: true, run: output) allow_gdk_shellout_command(%w[ifconfig lo0]).and_return(sh) allow(GDK::Machine).to receive(:platform).and_return(platform) end context 'on linux' do it 'passes by default' do expect(diagnostic.success?).to be(true) end context 'when listen_address is 172.16.123.1' do before do stub_gdk_yaml <<~YAML listen_address: 172.16.123.1 YAML end it 'passes' do expect(diagnostic.success?).to be(true) end end end context 'on macos' do let(:team_member) { true } let(:platform) { 'darwin' } it 'passes by default' do expect(diagnostic.success?).to be(true) end context 'when listen_address is 172.16.123.1' do before do stub_gdk_yaml <<~YAML listen_address: 172.16.123.1 YAML end context 'when loopback address is not configured' do let(:output) do <<~OUTPUT lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 nd6 options=201<PERFORMNUD,DAD> OUTPUT end it 'fails' do expect(diagnostic.success?).to be(false) expect(diagnostic.detail).to eq <<~MESSAGE You have configured 172.16.123.1 as listen address, so you need to create a loopback interface for GDK to work properly. You can do this by running the following command: sudo ifconfig lo0 alias 172.16.123.1 MESSAGE end end context 'when loopback address is configured' do let(:output) do <<~OUTPUT lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet 172.16.123.1 netmask 0xffff0000 nd6 options=201<PERFORMNUD,DAD> OUTPUT end it 'passes' do expect(diagnostic.success?).to be(true) end end end end end