summaryrefslogtreecommitdiff
path: root/spec/input/ssh_spec.rb
blob: 9864373d5cd0e2fc37274e7f663614fcabdb305a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
require 'spec_helper'
require 'oxidized/input/ssh'

describe Oxidized::SSH do
  before(:each) do
    Oxidized.asetus = Asetus.new
    Oxidized.setup_logger
    Oxidized.config.timeout = 30
    Oxidized.config.input.ssh.secure = true
    Oxidized::Node.any_instance.stubs(:resolve_repo)
    Oxidized::Node.any_instance.stubs(:resolve_input)
    Oxidized::Node.any_instance.stubs(:resolve_output)
  end

  describe "#connect" do
    it "should use proxy command when proxy host given and connect by ip if resolve_dns is true" do
      Oxidized.config.resolve_dns = true
      @node = Oxidized::Node.new(name: 'example.com',
                                 input: 'ssh',
                                 output: 'git',
                                 model: 'junos',
                                 username: 'alma',
                                 password: 'armud',
                                 vars: { ssh_proxy: 'test.com' })

      ssh = Oxidized::SSH.new

      model = mock
      model.expects(:cfg).returns('ssh' => [])
      @node.expects(:model).returns(model).at_least_once

      proxy = mock
      Net::SSH::Proxy::Command.expects(:new).with("ssh test.com -W %h:%p").returns(proxy)
      Net::SSH.expects(:start).with('93.184.216.34', 'alma',  port:      22,
                                                              paranoid:  Oxidized.config.input.ssh.secure,
                                                              keepalive: true,
                                                              password: 'armud',
                                                              timeout:   Oxidized.config.timeout,
                                                              number_of_password_prompts: 0,
                                                              auth_methods: %w[none publickey password],
                                                              proxy:     proxy)

      ssh.instance_variable_set("@exec", true)
      ssh.connect(@node)
    end

    it "should use proxy command when proxy host given and connect by name if resolve_dns is false" do
      Oxidized.config.resolve_dns = false
      @node = Oxidized::Node.new(name: 'example.com',
                                 input: 'ssh',
                                 output: 'git',
                                 model: 'junos',
                                 username: 'alma',
                                 password: 'armud',
                                 vars: { ssh_proxy: 'test.com' })

      ssh = Oxidized::SSH.new

      model = mock
      model.expects(:cfg).returns('ssh' => [])
      @node.expects(:model).returns(model).at_least_once

      proxy = mock
      Net::SSH::Proxy::Command.expects(:new).with("ssh test.com -W %h:%p").returns(proxy)
      Net::SSH.expects(:start).with('example.com', 'alma',  port:      22,
                                                            paranoid:  Oxidized.config.input.ssh.secure,
                                                            keepalive: true,
                                                            password: 'armud',
                                                            timeout:   Oxidized.config.timeout,
                                                            number_of_password_prompts: 0,
                                                            auth_methods: %w[none publickey password],
                                                            proxy:     proxy)

      ssh.instance_variable_set("@exec", true)
      ssh.connect(@node)
    end
  end
end