Sha256: e0802d440d9324388a0766e55ebb0d0ab52e38b894161041dfaba48104d2d288

Contents?: true

Size: 1.92 KB

Versions: 20

Compression:

Stored size: 1.92 KB

Contents

require 'kontena/cli/nodes/ssh_command'

describe Kontena::Cli::Nodes::SshCommand do
  include ClientHelpers

  let :node do
    {
      'labels' => [],
      'public_ip' => '192.0.2.10',
      'private_ip' => '10.0.8.10',
      'overlay_ip' => '10.81.0.1',
    }
  end

  before do
    allow(client).to receive(:get).with('nodes/test-grid/test-node').and_return(node)
  end

  describe '--any flag' do
    context 'used together with a node name' do
      it "fails and outputs an error message" do
        expect(subject).to_not receive(:exec)
        expect{subject.run(['--any', 'ls', '-l'])}.to exit_with_error.and output(/Cannot combine --any with a node name/).to_stderr
      end
    end

    context 'used when there are no connected nodes' do
      before do
        expect(subject.client).to receive(:get).with("grids/test-grid/nodes").and_return('nodes' => [ { 'connected' => false } ])
      end

      it "fails and outputs an error message" do
        expect(subject).to_not receive(:exec)
        expect{subject.run(['--any'])}.to exit_with_error.and output(/no online nodes/).to_stderr
      end
    end
  end

  it "uses the public IP by default" do
    expect(subject).to receive(:exec).with('ssh', 'core@192.0.2.10')
    subject.run ['test-node']
  end

  it "uses the private IP" do
    expect(subject).to receive(:exec).with('ssh', 'core@10.0.8.10')
    subject.run ['--private-ip', 'test-node']
  end

  it "uses the overlay IP" do
    expect(subject).to receive(:exec).with('ssh', 'core@10.81.0.1')
    subject.run ['--internal-ip', 'test-node']
  end

  it "passes through the command to SSH" do
    expect(subject).to receive(:exec).with('ssh', 'core@192.0.2.10', 'ls', '-l')
    subject.run ['test-node', 'ls', '-l']
  end

  it "passes through arguments to SSH" do
    expect(subject).to receive(:exec).with('ssh', 'core@192.0.2.10', '-F', 'ssh/config' 'ls', '-l')
    subject.run ['test-node', '-F', 'ssh/config' 'ls', '-l']
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
kontena-cli-1.5.0.pre1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.3 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.3.rc1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.2 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.2.rc1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.2.pre1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.1.rc1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.1.pre1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.rc2 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.rc1 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre14 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre13 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre12 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre11 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre10 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre9 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre8 spec/kontena/cli/nodes/ssh_command_spec.rb
kontena-cli-1.4.0.pre7 spec/kontena/cli/nodes/ssh_command_spec.rb