Sha256: 24c916f73ce455fd34996170e0bbbd9d6b21af79de5639744c8231b19e870efd

Contents?: true

Size: 1.4 KB

Versions: 5

Compression:

Stored size: 1.4 KB

Contents

require 'spec_helper'

describe Aptible::CLI::Helpers::Tunnel do
  include_context 'mock ssh'

  it 'opens a tunnel' do
    helper = described_class.new({}, ['ssh'], '/some.sock')

    helper.start(0)
    helper.stop

    mock_argv = read_mock_argv
    expect(mock_argv.size).to eq(4)

    expect(mock_argv.shift).to eq('-L')
    expect(mock_argv.shift).to match(%r{\d+:/some\.sock$})
    expect(mock_argv.shift).to eq('-o')
    expect(mock_argv.shift).to eq('ExitOnForwardFailure=yes')
  end

  it 'accepts a desired local port' do
    helper = described_class.new({}, ['ssh'], '/some.sock')
    helper.start(5678)
    helper.stop

    mock_argv = read_mock_argv
    expect(mock_argv.size).to eq(4)

    expect(mock_argv.shift).to eq('-L')
    expect(mock_argv.shift).to eq('5678:/some.sock')
  end

  it 'captures and displays tunnel errors' do
    helper = described_class.new({ 'FAIL_TUNNEL' => '1' }, ['ssh'],
                                 '/some.sock')

    expect { helper.start(0) }
      .to raise_error(/Tunnel did not come up.*Something went wrong/m)
  end

  it 'should fail if #port is called before #start' do
    socat = described_class.new({}, [], '/some.sock')
    expect { socat.port }.to raise_error(/You must call #start/)
  end

  it 'should fail if #stop is called before #start' do
    socat = described_class.new({}, [], '/some.sock')
    expect { socat.stop }.to raise_error(/You must call #start/)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
aptible-cli-0.8.4 spec/aptible/cli/helpers/tunnel_spec.rb
aptible-cli-0.8.3 spec/aptible/cli/helpers/tunnel_spec.rb
aptible-cli-0.8.2 spec/aptible/cli/helpers/tunnel_spec.rb
aptible-cli-0.8.1 spec/aptible/cli/helpers/tunnel_spec.rb
aptible-cli-0.8.0 spec/aptible/cli/helpers/tunnel_spec.rb