test-kitchen 1.14.1 → 1.14.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Berksfile +1 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile +1 -1
- data/Guardfile +5 -5
- data/Rakefile +5 -5
- data/bin/kitchen +1 -1
- data/features/step_definitions/gem_steps.rb +6 -6
- data/features/support/env.rb +6 -7
- data/lib/kitchen.rb +5 -7
- data/lib/kitchen/base64_stream.rb +2 -8
- data/lib/kitchen/cli.rb +76 -80
- data/lib/kitchen/collection.rb +0 -2
- data/lib/kitchen/color.rb +7 -9
- data/lib/kitchen/command.rb +0 -4
- data/lib/kitchen/command/action.rb +0 -3
- data/lib/kitchen/command/console.rb +4 -7
- data/lib/kitchen/command/diagnose.rb +7 -14
- data/lib/kitchen/command/driver_discover.rb +1 -4
- data/lib/kitchen/command/exec.rb +0 -3
- data/lib/kitchen/command/list.rb +9 -12
- data/lib/kitchen/command/login.rb +0 -3
- data/lib/kitchen/command/package.rb +0 -3
- data/lib/kitchen/command/sink.rb +6 -9
- data/lib/kitchen/command/test.rb +1 -4
- data/lib/kitchen/config.rb +25 -27
- data/lib/kitchen/configurable.rb +26 -31
- data/lib/kitchen/data_munger.rb +34 -36
- data/lib/kitchen/diagnostic.rb +5 -7
- data/lib/kitchen/driver.rb +3 -5
- data/lib/kitchen/driver/base.rb +0 -3
- data/lib/kitchen/driver/dummy.rb +0 -3
- data/lib/kitchen/driver/proxy.rb +0 -3
- data/lib/kitchen/driver/ssh_base.rb +13 -16
- data/lib/kitchen/errors.rb +11 -16
- data/lib/kitchen/generator/driver_create.rb +18 -21
- data/lib/kitchen/generator/init.rb +21 -26
- data/lib/kitchen/instance.rb +19 -23
- data/lib/kitchen/lazy_hash.rb +1 -2
- data/lib/kitchen/loader/yaml.rb +22 -25
- data/lib/kitchen/logger.rb +9 -14
- data/lib/kitchen/logging.rb +0 -3
- data/lib/kitchen/login_command.rb +0 -2
- data/lib/kitchen/metadata_chopper.rb +0 -2
- data/lib/kitchen/platform.rb +1 -3
- data/lib/kitchen/provisioner.rb +3 -5
- data/lib/kitchen/provisioner/base.rb +2 -5
- data/lib/kitchen/provisioner/chef/berkshelf.rb +1 -5
- data/lib/kitchen/provisioner/chef/common_sandbox.rb +24 -29
- data/lib/kitchen/provisioner/chef/librarian.rb +2 -6
- data/lib/kitchen/provisioner/chef/policyfile.rb +4 -8
- data/lib/kitchen/provisioner/chef_apply.rb +14 -17
- data/lib/kitchen/provisioner/chef_base.rb +43 -46
- data/lib/kitchen/provisioner/chef_solo.rb +10 -13
- data/lib/kitchen/provisioner/chef_zero.rb +22 -29
- data/lib/kitchen/provisioner/dummy.rb +0 -3
- data/lib/kitchen/provisioner/shell.rb +6 -9
- data/lib/kitchen/rake_tasks.rb +4 -6
- data/lib/kitchen/shell_out.rb +3 -5
- data/lib/kitchen/ssh.rb +16 -22
- data/lib/kitchen/state_file.rb +3 -5
- data/lib/kitchen/suite.rb +0 -2
- data/lib/kitchen/thor_tasks.rb +2 -4
- data/lib/kitchen/transport.rb +3 -5
- data/lib/kitchen/transport/base.rb +1 -7
- data/lib/kitchen/transport/dummy.rb +0 -4
- data/lib/kitchen/transport/ssh.rb +41 -47
- data/lib/kitchen/transport/winrm.rb +41 -40
- data/lib/kitchen/util.rb +1 -3
- data/lib/kitchen/verifier.rb +3 -5
- data/lib/kitchen/verifier/base.rb +2 -5
- data/lib/kitchen/verifier/busser.rb +24 -24
- data/lib/kitchen/verifier/dummy.rb +0 -3
- data/lib/kitchen/verifier/shell.rb +1 -3
- data/lib/kitchen/version.rb +1 -1
- data/lib/vendor/hash_recursive_merge.rb +0 -2
- data/spec/kitchen/base64_stream_spec.rb +3 -6
- data/spec/kitchen/cli_spec.rb +0 -2
- data/spec/kitchen/collection_spec.rb +4 -8
- data/spec/kitchen/color_spec.rb +0 -3
- data/spec/kitchen/config_spec.rb +91 -106
- data/spec/kitchen/configurable_spec.rb +44 -76
- data/spec/kitchen/data_munger_spec.rb +1178 -1247
- data/spec/kitchen/diagnostic_spec.rb +37 -38
- data/spec/kitchen/driver/base_spec.rb +7 -14
- data/spec/kitchen/driver/dummy_spec.rb +1 -7
- data/spec/kitchen/driver/proxy_spec.rb +2 -7
- data/spec/kitchen/driver/ssh_base_spec.rb +128 -149
- data/spec/kitchen/driver_spec.rb +7 -13
- data/spec/kitchen/errors_spec.rb +50 -60
- data/spec/kitchen/instance_spec.rb +217 -294
- data/spec/kitchen/lazy_hash_spec.rb +14 -18
- data/spec/kitchen/loader/yaml_spec.rb +201 -227
- data/spec/kitchen/logger_spec.rb +7 -15
- data/spec/kitchen/logging_spec.rb +1 -4
- data/spec/kitchen/login_command_spec.rb +3 -4
- data/spec/kitchen/metadata_chopper_spec.rb +0 -3
- data/spec/kitchen/platform_spec.rb +31 -32
- data/spec/kitchen/provisioner/base_spec.rb +22 -41
- data/spec/kitchen/provisioner/chef/policyfile_spec.rb +15 -15
- data/spec/kitchen/provisioner/chef_apply_spec.rb +8 -13
- data/spec/kitchen/provisioner/chef_base_spec.rb +150 -182
- data/spec/kitchen/provisioner/chef_solo_spec.rb +58 -72
- data/spec/kitchen/provisioner/chef_zero_spec.rb +99 -125
- data/spec/kitchen/provisioner/dummy_spec.rb +8 -11
- data/spec/kitchen/provisioner/shell_spec.rb +86 -103
- data/spec/kitchen/provisioner_spec.rb +5 -11
- data/spec/kitchen/shell_out_spec.rb +15 -19
- data/spec/kitchen/ssh_spec.rb +16 -35
- data/spec/kitchen/state_file_spec.rb +6 -11
- data/spec/kitchen/suite_spec.rb +5 -6
- data/spec/kitchen/transport/base_spec.rb +6 -14
- data/spec/kitchen/transport/ssh_spec.rb +39 -64
- data/spec/kitchen/transport/winrm_spec.rb +99 -127
- data/spec/kitchen/transport_spec.rb +7 -13
- data/spec/kitchen/util_spec.rb +17 -26
- data/spec/kitchen/verifier/base_spec.rb +24 -40
- data/spec/kitchen/verifier/busser_spec.rb +38 -68
- data/spec/kitchen/verifier/dummy_spec.rb +8 -11
- data/spec/kitchen/verifier/shell_spec.rb +14 -17
- data/spec/kitchen/verifier_spec.rb +7 -13
- data/spec/kitchen_spec.rb +4 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/support/powershell_max_size_spec.rb +1 -2
- data/support/chef-client-zero.rb +3 -4
- data/test-kitchen.gemspec +4 -6
- metadata +9 -9
@@ -21,33 +21,32 @@ require_relative "../spec_helper"
|
|
21
21
|
require "kitchen/diagnostic"
|
22
22
|
|
23
23
|
describe Kitchen::Diagnostic do
|
24
|
-
|
25
24
|
let(:loader) do
|
26
|
-
stub(:
|
25
|
+
stub(diagnose: { who: "loader" })
|
27
26
|
end
|
28
27
|
|
29
28
|
let(:instances) do
|
30
29
|
[
|
31
30
|
stub(
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
36
|
-
:
|
37
|
-
:
|
38
|
-
:
|
31
|
+
name: "i1",
|
32
|
+
diagnose: { stuff: "sup" },
|
33
|
+
diagnose_plugins: {
|
34
|
+
driver: { name: "driva", a: "b" },
|
35
|
+
provisioner: { name: "prov", c: "d" },
|
36
|
+
transport: { name: "transa", e: "f" },
|
37
|
+
verifier: { name: "verve", g: "h" },
|
39
38
|
}
|
40
39
|
),
|
41
40
|
stub(
|
42
|
-
:
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
41
|
+
name: "i2",
|
42
|
+
diagnose: { stuff: "yo" },
|
43
|
+
diagnose_plugins: {
|
44
|
+
driver: { name: "driva", a: "b" },
|
45
|
+
provisioner: { name: "presto", i: "j" },
|
46
|
+
transport: { name: "tressa", k: "l" },
|
47
|
+
verifier: { name: "verve", g: "h" },
|
49
48
|
}
|
50
|
-
)
|
49
|
+
),
|
51
50
|
]
|
52
51
|
end
|
53
52
|
|
@@ -62,8 +61,8 @@ describe Kitchen::Diagnostic do
|
|
62
61
|
it "#read returns a timestamp in UTC" do
|
63
62
|
Time.stubs(:now).returns(Time.at(0))
|
64
63
|
|
65
|
-
Kitchen::Diagnostic.new.read["timestamp"]
|
66
|
-
must_equal "1970-01-01 00:00:00 UTC"
|
64
|
+
Kitchen::Diagnostic.new.read["timestamp"]
|
65
|
+
.must_equal "1970-01-01 00:00:00 UTC"
|
67
66
|
end
|
68
67
|
|
69
68
|
it "#read doesn't return a loader hash if not given one" do
|
@@ -71,39 +70,39 @@ describe Kitchen::Diagnostic do
|
|
71
70
|
end
|
72
71
|
|
73
72
|
it "#read returns the loader's diganose hash if a loader is present" do
|
74
|
-
Kitchen::Diagnostic.new(:
|
75
|
-
|
73
|
+
Kitchen::Diagnostic.new(loader: loader)
|
74
|
+
.read["loader"].must_equal("who" => "loader")
|
76
75
|
end
|
77
76
|
|
78
77
|
it "#read returns an error hash for loader if error hash is passed in" do
|
79
|
-
Kitchen::Diagnostic.new(:
|
80
|
-
|
78
|
+
Kitchen::Diagnostic.new(loader: { error: "damn" })
|
79
|
+
.read["loader"].must_equal("error" => "damn")
|
81
80
|
end
|
82
81
|
|
83
82
|
it "#read returns the unique set of plugins' diagnose hash if :plugins is set" do
|
84
|
-
Kitchen::Diagnostic.new(:
|
85
|
-
|
86
|
-
must_equal(
|
83
|
+
Kitchen::Diagnostic.new(instances: instances, plugins: true)
|
84
|
+
.read["plugins"]
|
85
|
+
.must_equal(
|
87
86
|
"driver" => {
|
88
|
-
"driva" => { "a" => "b" }
|
87
|
+
"driva" => { "a" => "b" },
|
89
88
|
},
|
90
89
|
"provisioner" => {
|
91
90
|
"prov" => { "c" => "d" },
|
92
|
-
"presto" => { "i" => "j" }
|
91
|
+
"presto" => { "i" => "j" },
|
93
92
|
},
|
94
93
|
"transport" => {
|
95
94
|
"transa" => { "e" => "f" },
|
96
|
-
"tressa" => { "k" => "l" }
|
95
|
+
"tressa" => { "k" => "l" },
|
97
96
|
},
|
98
97
|
"verifier" => {
|
99
|
-
"verve" => { "g" => "h" }
|
98
|
+
"verve" => { "g" => "h" },
|
100
99
|
}
|
101
100
|
)
|
102
101
|
end
|
103
102
|
|
104
103
|
it "#read returns an empty plugins hash if no instances were given" do
|
105
|
-
Kitchen::Diagnostic.new(:
|
106
|
-
|
104
|
+
Kitchen::Diagnostic.new(plugins: true)
|
105
|
+
.read["plugins"].must_equal Hash.new
|
107
106
|
end
|
108
107
|
|
109
108
|
it "#read returns an empty instances hash if no instances were given" do
|
@@ -112,18 +111,18 @@ describe Kitchen::Diagnostic do
|
|
112
111
|
|
113
112
|
it "#read returns an error hash for plugins if error hash is passed in" do
|
114
113
|
Kitchen::Diagnostic.new(
|
115
|
-
:
|
114
|
+
instances: { error: "shoot" }, plugins: true
|
116
115
|
).read["plugins"].must_equal("error" => "shoot")
|
117
116
|
end
|
118
117
|
|
119
118
|
it "#read returns the instances' diganose hashes if instances are present" do
|
120
|
-
Kitchen::Diagnostic.new(:
|
121
|
-
|
122
|
-
must_equal("i1" => { "stuff" => "sup" }, "i2" => { "stuff" => "yo" })
|
119
|
+
Kitchen::Diagnostic.new(instances: instances)
|
120
|
+
.read["instances"]
|
121
|
+
.must_equal("i1" => { "stuff" => "sup" }, "i2" => { "stuff" => "yo" })
|
123
122
|
end
|
124
123
|
|
125
124
|
it "#read returns an error hash for instances if error hash is passed in" do
|
126
|
-
Kitchen::Diagnostic.new(:
|
127
|
-
|
125
|
+
Kitchen::Diagnostic.new(instances: { error: "shoot" })
|
126
|
+
.read["instances"].must_equal("error" => "shoot")
|
128
127
|
end
|
129
128
|
end
|
@@ -23,19 +23,15 @@ require "stringio"
|
|
23
23
|
require "kitchen"
|
24
24
|
|
25
25
|
module Kitchen
|
26
|
-
|
27
26
|
module Driver
|
28
|
-
|
29
27
|
class Speedy < Base
|
30
28
|
end
|
31
29
|
|
32
30
|
class Dodgy < Base
|
33
|
-
|
34
31
|
no_parallel_for :setup
|
35
32
|
end
|
36
33
|
|
37
34
|
class Slow < Base
|
38
|
-
|
39
35
|
no_parallel_for :create, :destroy
|
40
36
|
no_parallel_for :verify
|
41
37
|
end
|
@@ -43,22 +39,21 @@ module Kitchen
|
|
43
39
|
end
|
44
40
|
|
45
41
|
describe Kitchen::Driver::Base do
|
46
|
-
|
47
42
|
let(:logged_output) { StringIO.new }
|
48
43
|
let(:logger) { Logger.new(logged_output) }
|
49
44
|
let(:config) { Hash.new }
|
50
45
|
let(:state) { Hash.new }
|
51
46
|
|
52
47
|
let(:busser) do
|
53
|
-
stub(:
|
48
|
+
stub(setup_cmd: "setup", sync_cmd: "sync", run_cmd: "run")
|
54
49
|
end
|
55
50
|
|
56
51
|
let(:instance) do
|
57
52
|
stub(
|
58
|
-
:
|
59
|
-
:
|
60
|
-
:
|
61
|
-
:
|
53
|
+
name: "coolbeans",
|
54
|
+
logger: logger,
|
55
|
+
busser: busser,
|
56
|
+
to_str: "instance"
|
62
57
|
)
|
63
58
|
end
|
64
59
|
|
@@ -85,7 +80,6 @@ describe Kitchen::Driver::Base do
|
|
85
80
|
end
|
86
81
|
|
87
82
|
[:create, :setup, :verify, :destroy].each do |action|
|
88
|
-
|
89
83
|
it "has a #{action} method that takes state" do
|
90
84
|
# TODO: revert back
|
91
85
|
# state = Hash.new
|
@@ -95,7 +89,6 @@ describe Kitchen::Driver::Base do
|
|
95
89
|
end
|
96
90
|
|
97
91
|
describe ".no_parallel_for" do
|
98
|
-
|
99
92
|
it "registers no serial actions when none are declared" do
|
100
93
|
Kitchen::Driver::Speedy.serial_actions.must_equal nil
|
101
94
|
end
|
@@ -113,9 +106,9 @@ describe Kitchen::Driver::Base do
|
|
113
106
|
end
|
114
107
|
|
115
108
|
it "raises a ClientError if value is not an action method" do
|
116
|
-
proc
|
109
|
+
proc do
|
117
110
|
Class.new(Kitchen::Driver::Base) { no_parallel_for :telling_stories }
|
118
|
-
|
111
|
+
end.must_raise Kitchen::ClientError
|
119
112
|
end
|
120
113
|
end
|
121
114
|
end
|
@@ -23,14 +23,13 @@ require "stringio"
|
|
23
23
|
require "kitchen/driver/dummy"
|
24
24
|
|
25
25
|
describe Kitchen::Driver::Dummy do
|
26
|
-
|
27
26
|
let(:logged_output) { StringIO.new }
|
28
27
|
let(:logger) { Logger.new(logged_output) }
|
29
28
|
let(:config) { Hash.new }
|
30
29
|
let(:state) { Hash.new }
|
31
30
|
|
32
31
|
let(:instance) do
|
33
|
-
stub(:
|
32
|
+
stub(name: "coolbeans", logger: logger, to_str: "instance")
|
34
33
|
end
|
35
34
|
|
36
35
|
let(:driver) do
|
@@ -46,7 +45,6 @@ describe Kitchen::Driver::Dummy do
|
|
46
45
|
end
|
47
46
|
|
48
47
|
describe "default_config" do
|
49
|
-
|
50
48
|
it "sets :sleep to 0 by default" do
|
51
49
|
driver[:sleep].must_equal 0
|
52
50
|
end
|
@@ -57,7 +55,6 @@ describe Kitchen::Driver::Dummy do
|
|
57
55
|
end
|
58
56
|
|
59
57
|
describe "#create" do
|
60
|
-
|
61
58
|
it "sets :my_id to a unique value as an example" do
|
62
59
|
driver.create(state)
|
63
60
|
|
@@ -104,7 +101,6 @@ describe Kitchen::Driver::Dummy do
|
|
104
101
|
end
|
105
102
|
|
106
103
|
describe "#setup" do
|
107
|
-
|
108
104
|
it "calls sleep if :sleep value is greater than 0" do
|
109
105
|
config[:sleep] = 12.5
|
110
106
|
driver.expects(:sleep).with(12.5).returns(true)
|
@@ -133,7 +129,6 @@ describe Kitchen::Driver::Dummy do
|
|
133
129
|
end
|
134
130
|
|
135
131
|
describe "#verify" do
|
136
|
-
|
137
132
|
it "calls sleep if :sleep value is greater than 0" do
|
138
133
|
config[:sleep] = 12.5
|
139
134
|
driver.expects(:sleep).with(12.5).returns(true)
|
@@ -162,7 +157,6 @@ describe Kitchen::Driver::Dummy do
|
|
162
157
|
end
|
163
158
|
|
164
159
|
describe "#destroy" do
|
165
|
-
|
166
160
|
it "removes :my_id from the state hash" do
|
167
161
|
state[:my_id] = "90210"
|
168
162
|
driver.destroy(state)
|
@@ -21,17 +21,16 @@ require_relative "../../spec_helper"
|
|
21
21
|
require "kitchen/driver/proxy"
|
22
22
|
|
23
23
|
describe Kitchen::Driver::Proxy do
|
24
|
-
|
25
24
|
let(:logged_output) { StringIO.new }
|
26
25
|
let(:logger) { Logger.new(logged_output) }
|
27
26
|
let(:state) { Hash.new }
|
28
27
|
|
29
28
|
let(:config) do
|
30
|
-
{ :
|
29
|
+
{ host: "foobnoobs.com", reset_command: "mulligan" }
|
31
30
|
end
|
32
31
|
|
33
32
|
let(:instance) do
|
34
|
-
stub(:
|
33
|
+
stub(name: "coolbeans", logger: logger, to_str: "instance")
|
35
34
|
end
|
36
35
|
|
37
36
|
let(:driver) do
|
@@ -43,7 +42,6 @@ describe Kitchen::Driver::Proxy do
|
|
43
42
|
end
|
44
43
|
|
45
44
|
describe "non-parallel action" do
|
46
|
-
|
47
45
|
it "create must be serially executed" do
|
48
46
|
Kitchen::Driver::Proxy.serial_actions.must_include :create
|
49
47
|
end
|
@@ -54,7 +52,6 @@ describe Kitchen::Driver::Proxy do
|
|
54
52
|
end
|
55
53
|
|
56
54
|
describe "required_config" do
|
57
|
-
|
58
55
|
[:host, :reset_command].each do |attr|
|
59
56
|
it "requires :#{attr}" do
|
60
57
|
config.delete(attr)
|
@@ -74,7 +71,6 @@ describe Kitchen::Driver::Proxy do
|
|
74
71
|
end
|
75
72
|
|
76
73
|
describe "#create" do
|
77
|
-
|
78
74
|
it "sets :hostname in state config" do
|
79
75
|
driver.stubs(:ssh)
|
80
76
|
driver.create(state)
|
@@ -100,7 +96,6 @@ describe Kitchen::Driver::Proxy do
|
|
100
96
|
end
|
101
97
|
|
102
98
|
describe "#destroy" do
|
103
|
-
|
104
99
|
before do
|
105
100
|
state[:hostname] = "beep"
|
106
101
|
end
|
@@ -23,11 +23,8 @@ require "kitchen/transport/ssh"
|
|
23
23
|
require "kitchen/verifier/busser"
|
24
24
|
|
25
25
|
module Kitchen
|
26
|
-
|
27
26
|
module Driver
|
28
|
-
|
29
27
|
class BackCompat < Kitchen::Driver::SSHBase
|
30
|
-
|
31
28
|
def use_run_remote(state, command)
|
32
29
|
connection = Kitchen::SSH.new(*build_ssh_args(state))
|
33
30
|
run_remote(command, connection)
|
@@ -43,12 +40,10 @@ module Kitchen
|
|
43
40
|
end
|
44
41
|
|
45
42
|
class DodgyCompat < Kitchen::Driver::SSHBase
|
46
|
-
|
47
43
|
no_parallel_for :converge
|
48
44
|
end
|
49
45
|
|
50
46
|
class SlowCompat < Kitchen::Driver::SSHBase
|
51
|
-
|
52
47
|
no_parallel_for :create, :destroy
|
53
48
|
no_parallel_for :verify
|
54
49
|
end
|
@@ -56,7 +51,6 @@ module Kitchen
|
|
56
51
|
end
|
57
52
|
|
58
53
|
describe Kitchen::Driver::SSHBase do
|
59
|
-
|
60
54
|
let(:logged_output) { StringIO.new }
|
61
55
|
let(:logger) { Logger.new(logged_output) }
|
62
56
|
let(:config) { Hash.new }
|
@@ -78,13 +72,13 @@ describe Kitchen::Driver::SSHBase do
|
|
78
72
|
|
79
73
|
let(:provisioner) do
|
80
74
|
stub(
|
81
|
-
:
|
82
|
-
:
|
83
|
-
:
|
84
|
-
:
|
85
|
-
:
|
86
|
-
:
|
87
|
-
:
|
75
|
+
install_command: "install",
|
76
|
+
init_command: "init",
|
77
|
+
prepare_command: "prepare",
|
78
|
+
run_command: "run",
|
79
|
+
create_sandbox: true,
|
80
|
+
cleanup_sandbox: true,
|
81
|
+
sandbox_path: "/tmp/sandbox"
|
88
82
|
)
|
89
83
|
end
|
90
84
|
|
@@ -96,12 +90,12 @@ describe Kitchen::Driver::SSHBase do
|
|
96
90
|
|
97
91
|
let(:instance) do
|
98
92
|
stub(
|
99
|
-
:
|
100
|
-
:
|
101
|
-
:
|
102
|
-
:
|
103
|
-
:
|
104
|
-
:
|
93
|
+
name: "coolbeans",
|
94
|
+
logger: logger,
|
95
|
+
verifier: verifier,
|
96
|
+
provisioner: provisioner,
|
97
|
+
transport: transport,
|
98
|
+
to_str: "instance"
|
105
99
|
)
|
106
100
|
end
|
107
101
|
|
@@ -114,7 +108,6 @@ describe Kitchen::Driver::SSHBase do
|
|
114
108
|
end
|
115
109
|
|
116
110
|
describe "configuration" do
|
117
|
-
|
118
111
|
it ":sudo defaults to true" do
|
119
112
|
driver[:sudo].must_equal true
|
120
113
|
end
|
@@ -135,19 +128,18 @@ describe Kitchen::Driver::SSHBase do
|
|
135
128
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
136
129
|
def self.constructs_an_ssh_connection
|
137
130
|
describe "constructs an SSH connection" do
|
138
|
-
|
139
131
|
it "with hostname set from state" do
|
140
|
-
transport.expects(:connection).with
|
132
|
+
transport.expects(:connection).with do |state|
|
141
133
|
state[:hostname].must_equal "fizzy"
|
142
|
-
|
134
|
+
end.returns(stub(login_command: stub))
|
143
135
|
|
144
136
|
cmd
|
145
137
|
end
|
146
138
|
|
147
139
|
it "with username set from state" do
|
148
|
-
transport.expects(:connection).with
|
140
|
+
transport.expects(:connection).with do |state|
|
149
141
|
state[:username].must_equal "bork"
|
150
|
-
|
142
|
+
end.returns(stub(login_command: stub))
|
151
143
|
|
152
144
|
cmd
|
153
145
|
end
|
@@ -155,9 +147,9 @@ describe Kitchen::Driver::SSHBase do
|
|
155
147
|
it "with :ssh_key option set from config" do
|
156
148
|
config[:ssh_key] = "wicked"
|
157
149
|
|
158
|
-
transport.expects(:connection).with
|
150
|
+
transport.expects(:connection).with do |state|
|
159
151
|
state[:ssh_key].must_equal "wicked"
|
160
|
-
|
152
|
+
end.returns(stub(login_command: stub))
|
161
153
|
|
162
154
|
cmd
|
163
155
|
end
|
@@ -165,17 +157,17 @@ describe Kitchen::Driver::SSHBase do
|
|
165
157
|
it "with :ssh_key option set from state" do
|
166
158
|
state[:ssh_key] = "wicked"
|
167
159
|
|
168
|
-
transport.expects(:connection).with
|
160
|
+
transport.expects(:connection).with do |state|
|
169
161
|
state[:ssh_key].must_equal "wicked"
|
170
|
-
|
162
|
+
end.returns(stub(login_command: stub))
|
171
163
|
|
172
164
|
cmd
|
173
165
|
end
|
174
166
|
|
175
167
|
it "with :password option set to falsey by default" do
|
176
|
-
transport.expects(:connection).with
|
168
|
+
transport.expects(:connection).with do |state|
|
177
169
|
state[:password].nil?
|
178
|
-
|
170
|
+
end.returns(stub(login_command: stub))
|
179
171
|
|
180
172
|
cmd
|
181
173
|
end
|
@@ -183,9 +175,9 @@ describe Kitchen::Driver::SSHBase do
|
|
183
175
|
it "with :password option set if given in config" do
|
184
176
|
config[:password] = "psst"
|
185
177
|
|
186
|
-
transport.expects(:connection).with
|
178
|
+
transport.expects(:connection).with do |state|
|
187
179
|
state[:password].must_equal "psst"
|
188
|
-
|
180
|
+
end.returns(stub(login_command: stub))
|
189
181
|
|
190
182
|
cmd
|
191
183
|
end
|
@@ -193,17 +185,17 @@ describe Kitchen::Driver::SSHBase do
|
|
193
185
|
it "with :password option set if given in state" do
|
194
186
|
state[:password] = "psst"
|
195
187
|
|
196
|
-
transport.expects(:connection).with
|
188
|
+
transport.expects(:connection).with do |state|
|
197
189
|
state[:password].must_equal "psst"
|
198
|
-
|
190
|
+
end.returns(stub(login_command: stub))
|
199
191
|
|
200
192
|
cmd
|
201
193
|
end
|
202
194
|
|
203
195
|
it "with :forward_agent option set to falsey by default" do
|
204
|
-
transport.expects(:connection).with
|
196
|
+
transport.expects(:connection).with do |state|
|
205
197
|
state[:forward_agent].nil?
|
206
|
-
|
198
|
+
end.returns(stub(login_command: stub))
|
207
199
|
|
208
200
|
cmd
|
209
201
|
end
|
@@ -211,9 +203,9 @@ describe Kitchen::Driver::SSHBase do
|
|
211
203
|
it "with :forward_agent option set if given in config" do
|
212
204
|
config[:forward_agent] = "yeah?"
|
213
205
|
|
214
|
-
transport.expects(:connection).with
|
206
|
+
transport.expects(:connection).with do |state|
|
215
207
|
state[:forward_agent].must_equal "yeah?"
|
216
|
-
|
208
|
+
end.returns(stub(login_command: stub))
|
217
209
|
|
218
210
|
cmd
|
219
211
|
end
|
@@ -221,17 +213,17 @@ describe Kitchen::Driver::SSHBase do
|
|
221
213
|
it "with :forward_agent option set if given in state" do
|
222
214
|
state[:forward_agent] = "yeah?"
|
223
215
|
|
224
|
-
transport.expects(:connection).with
|
216
|
+
transport.expects(:connection).with do |state|
|
225
217
|
state[:forward_agent].must_equal "yeah?"
|
226
|
-
|
218
|
+
end.returns(stub(login_command: stub))
|
227
219
|
|
228
220
|
cmd
|
229
221
|
end
|
230
222
|
|
231
223
|
it "with :port option set to 22 by default" do
|
232
|
-
transport.expects(:connection).with
|
224
|
+
transport.expects(:connection).with do |state|
|
233
225
|
state[:port].must_equal 22
|
234
|
-
|
226
|
+
end.returns(stub(login_command: stub))
|
235
227
|
|
236
228
|
cmd
|
237
229
|
end
|
@@ -239,9 +231,9 @@ describe Kitchen::Driver::SSHBase do
|
|
239
231
|
it "with :port option set if customized in config" do
|
240
232
|
config[:port] = 1234
|
241
233
|
|
242
|
-
transport.expects(:connection).with
|
234
|
+
transport.expects(:connection).with do |state|
|
243
235
|
state[:port].must_equal 1234
|
244
|
-
|
236
|
+
end.returns(stub(login_command: stub))
|
245
237
|
|
246
238
|
cmd
|
247
239
|
end
|
@@ -249,9 +241,9 @@ describe Kitchen::Driver::SSHBase do
|
|
249
241
|
it "with :port option set if customized in state" do
|
250
242
|
state[:port] = 9999
|
251
243
|
|
252
|
-
transport.expects(:connection).with
|
244
|
+
transport.expects(:connection).with do |state|
|
253
245
|
state[:port].must_equal 9999
|
254
|
-
|
246
|
+
end.returns(stub(login_command: stub))
|
255
247
|
|
256
248
|
cmd
|
257
249
|
end
|
@@ -260,7 +252,6 @@ describe Kitchen::Driver::SSHBase do
|
|
260
252
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
261
253
|
|
262
254
|
describe "#login_command" do
|
263
|
-
|
264
255
|
let(:cmd) { driver.login_command(state) }
|
265
256
|
|
266
257
|
before do
|
@@ -269,7 +260,7 @@ describe Kitchen::Driver::SSHBase do
|
|
269
260
|
end
|
270
261
|
|
271
262
|
it "returns a LoginCommand" do
|
272
|
-
transport.stubs(:connection).returns(stub(:
|
263
|
+
transport.stubs(:connection).returns(stub(login_command: "command"))
|
273
264
|
|
274
265
|
cmd.must_equal "command"
|
275
266
|
end
|
@@ -278,9 +269,8 @@ describe Kitchen::Driver::SSHBase do
|
|
278
269
|
end
|
279
270
|
|
280
271
|
describe "#converge" do
|
281
|
-
|
282
272
|
let(:cmd) { driver.converge(state) }
|
283
|
-
let(:connection) { stub(:
|
273
|
+
let(:connection) { stub(execute: true, upload: true) }
|
284
274
|
|
285
275
|
before do
|
286
276
|
state[:hostname] = "fizzy"
|
@@ -340,25 +330,25 @@ describe Kitchen::Driver::SSHBase do
|
|
340
330
|
cmd
|
341
331
|
end
|
342
332
|
|
343
|
-
it
|
333
|
+
it 'invokes the #install_command with ENV["http_proxy"] set' do
|
344
334
|
ENV["http_proxy"] = "http://proxy"
|
345
335
|
transport.stubs(:connection).yields(connection)
|
346
336
|
if running_tests_on_windows?
|
347
|
-
connection.expects(:execute)
|
348
|
-
|
337
|
+
connection.expects(:execute)
|
338
|
+
.with("env http_proxy=http://proxy HTTP_PROXY=http://proxy install")
|
349
339
|
else
|
350
340
|
connection.expects(:execute).with("env http_proxy=http://proxy install")
|
351
341
|
end
|
352
342
|
cmd
|
353
343
|
end
|
354
344
|
|
355
|
-
it
|
345
|
+
it 'invokes the #install_command with ENV["http_proxy"] and ENV["no_proxy"] set' do
|
356
346
|
ENV["http_proxy"] = "http://proxy"
|
357
347
|
ENV["no_proxy"] = "http://no"
|
358
348
|
transport.stubs(:connection).yields(connection)
|
359
349
|
if running_tests_on_windows?
|
360
|
-
connection.expects(:execute)
|
361
|
-
|
350
|
+
connection.expects(:execute)
|
351
|
+
.with("env http_proxy=http://proxy HTTP_PROXY=http://proxy " \
|
362
352
|
"no_proxy=http://no NO_PROXY=http://no install")
|
363
353
|
else
|
364
354
|
connection.expects(:execute).with("env http_proxy=http://proxy " \
|
@@ -375,25 +365,25 @@ describe Kitchen::Driver::SSHBase do
|
|
375
365
|
cmd
|
376
366
|
end
|
377
367
|
|
378
|
-
it
|
368
|
+
it 'invokes the #install_command with ENV["https_proxy"] set' do
|
379
369
|
ENV["https_proxy"] = "https://proxy"
|
380
370
|
transport.stubs(:connection).yields(connection)
|
381
371
|
if running_tests_on_windows?
|
382
|
-
connection.expects(:execute)
|
383
|
-
|
372
|
+
connection.expects(:execute)
|
373
|
+
.with("env https_proxy=https://proxy HTTPS_PROXY=https://proxy install")
|
384
374
|
else
|
385
375
|
connection.expects(:execute).with("env https_proxy=https://proxy install")
|
386
376
|
end
|
387
377
|
cmd
|
388
378
|
end
|
389
379
|
|
390
|
-
it
|
380
|
+
it 'invokes the #install_command with ENV["https_proxy"] and ENV["no_proxy"] set' do
|
391
381
|
ENV["https_proxy"] = "https://proxy"
|
392
382
|
ENV["no_proxy"] = "https://no"
|
393
383
|
transport.stubs(:connection).yields(connection)
|
394
384
|
if running_tests_on_windows?
|
395
|
-
connection.expects(:execute)
|
396
|
-
|
385
|
+
connection.expects(:execute)
|
386
|
+
.with("env https_proxy=https://proxy HTTPS_PROXY=https://proxy " \
|
397
387
|
"no_proxy=https://no NO_PROXY=https://no install")
|
398
388
|
else
|
399
389
|
connection.expects(:execute).with("env https_proxy=https://proxy " \
|
@@ -410,25 +400,25 @@ describe Kitchen::Driver::SSHBase do
|
|
410
400
|
cmd
|
411
401
|
end
|
412
402
|
|
413
|
-
it
|
403
|
+
it 'invokes the #install_command with ENV["ftp_proxy"] set' do
|
414
404
|
ENV["ftp_proxy"] = "ftp://proxy"
|
415
405
|
transport.stubs(:connection).yields(connection)
|
416
406
|
if running_tests_on_windows?
|
417
|
-
connection.expects(:execute)
|
418
|
-
|
407
|
+
connection.expects(:execute)
|
408
|
+
.with("env ftp_proxy=ftp://proxy FTP_PROXY=ftp://proxy install")
|
419
409
|
else
|
420
410
|
connection.expects(:execute).with("env ftp_proxy=ftp://proxy install")
|
421
411
|
end
|
422
412
|
cmd
|
423
413
|
end
|
424
414
|
|
425
|
-
it
|
415
|
+
it 'invokes the #install_command with ENV["ftp_proxy"] and ENV["no_proxy"] set' do
|
426
416
|
ENV["ftp_proxy"] = "ftp://proxy"
|
427
417
|
ENV["no_proxy"] = "http://no"
|
428
418
|
transport.stubs(:connection).yields(connection)
|
429
419
|
if running_tests_on_windows?
|
430
|
-
connection.expects(:execute)
|
431
|
-
|
420
|
+
connection.expects(:execute)
|
421
|
+
.with("env ftp_proxy=ftp://proxy FTP_PROXY=http://proxy " \
|
432
422
|
"no_proxy=http://no NO_PROXY=http://no install")
|
433
423
|
else
|
434
424
|
connection.expects(:execute).with("env ftp_proxy=ftp://proxy " \
|
@@ -449,7 +439,6 @@ describe Kitchen::Driver::SSHBase do
|
|
449
439
|
end
|
450
440
|
|
451
441
|
describe "transferring files" do
|
452
|
-
|
453
442
|
before do
|
454
443
|
transport.stubs(:connection).yields(connection)
|
455
444
|
connection.stubs(:upload)
|
@@ -465,8 +454,8 @@ describe Kitchen::Driver::SSHBase do
|
|
465
454
|
it "logs to info" do
|
466
455
|
cmd
|
467
456
|
|
468
|
-
logged_output.string
|
469
|
-
|
457
|
+
logged_output.string
|
458
|
+
.must_match(/INFO -- : Transferring files to instance$/)
|
470
459
|
end
|
471
460
|
|
472
461
|
it "logs to debug" do
|
@@ -491,7 +480,6 @@ describe Kitchen::Driver::SSHBase do
|
|
491
480
|
end
|
492
481
|
|
493
482
|
describe "#setup" do
|
494
|
-
|
495
483
|
let(:cmd) { driver.setup(state) }
|
496
484
|
let(:connection) { mock }
|
497
485
|
|
@@ -553,9 +541,8 @@ describe Kitchen::Driver::SSHBase do
|
|
553
541
|
end
|
554
542
|
|
555
543
|
describe "#verify" do
|
556
|
-
|
557
544
|
let(:cmd) { driver.verify(state) }
|
558
|
-
let(:connection) { stub(:
|
545
|
+
let(:connection) { stub(execute: true, upload: true) }
|
559
546
|
|
560
547
|
before do
|
561
548
|
state[:hostname] = "fizzy"
|
@@ -590,7 +577,7 @@ describe Kitchen::Driver::SSHBase do
|
|
590
577
|
cmd
|
591
578
|
end
|
592
579
|
|
593
|
-
%
|
580
|
+
%w{init prepare run}.each do |phase|
|
594
581
|
it "invokes Verifier##{phase}_command over ssh" do
|
595
582
|
connection.expects(:execute).with(phase)
|
596
583
|
|
@@ -632,8 +619,8 @@ describe Kitchen::Driver::SSHBase do
|
|
632
619
|
it "logs to info" do
|
633
620
|
cmd
|
634
621
|
|
635
|
-
logged_output.string
|
636
|
-
|
622
|
+
logged_output.string
|
623
|
+
.must_match(/INFO -- : Transferring files to instance$/)
|
637
624
|
end
|
638
625
|
|
639
626
|
it "uploads sandbox files" do
|
@@ -649,8 +636,8 @@ describe Kitchen::Driver::SSHBase do
|
|
649
636
|
end
|
650
637
|
|
651
638
|
it "raises an ActionFailed on transfer when TransportFailed is raised" do
|
652
|
-
connection.stubs(:upload)
|
653
|
-
|
639
|
+
connection.stubs(:upload)
|
640
|
+
.raises(Kitchen::Transport::TransportFailed.new("dang"))
|
654
641
|
|
655
642
|
proc { cmd }.must_raise Kitchen::ActionFailed
|
656
643
|
end
|
@@ -663,17 +650,16 @@ describe Kitchen::Driver::SSHBase do
|
|
663
650
|
end
|
664
651
|
|
665
652
|
describe "#ssh" do
|
666
|
-
|
667
|
-
let(:cmd) { driver.ssh(["host", "user", { :one => "two" }], "go") }
|
653
|
+
let(:cmd) { driver.ssh(["host", "user", { one: "two" }], "go") }
|
668
654
|
let(:connection) { mock }
|
669
655
|
|
670
656
|
it "creates an SSH connection" do
|
671
657
|
connection.stubs(:execute)
|
672
658
|
transport.expects(:connection).with(
|
673
|
-
:
|
674
|
-
:
|
675
|
-
:
|
676
|
-
:
|
659
|
+
hostname: "host",
|
660
|
+
username: "user",
|
661
|
+
port: 22,
|
662
|
+
one: "two"
|
677
663
|
).yields(connection)
|
678
664
|
|
679
665
|
cmd
|
@@ -688,7 +674,6 @@ describe Kitchen::Driver::SSHBase do
|
|
688
674
|
end
|
689
675
|
|
690
676
|
describe "#remote_command" do
|
691
|
-
|
692
677
|
let(:cmd) { driver.remote_command(state, "shipit") }
|
693
678
|
let(:connection) { mock }
|
694
679
|
|
@@ -699,9 +684,9 @@ describe Kitchen::Driver::SSHBase do
|
|
699
684
|
|
700
685
|
it "creates an SSH connection" do
|
701
686
|
transport.expects(:connection).with(
|
702
|
-
:
|
703
|
-
:
|
704
|
-
:
|
687
|
+
hostname: "fizzy",
|
688
|
+
username: "bork",
|
689
|
+
port: 22
|
705
690
|
)
|
706
691
|
|
707
692
|
cmd
|
@@ -716,18 +701,17 @@ describe Kitchen::Driver::SSHBase do
|
|
716
701
|
end
|
717
702
|
|
718
703
|
describe "#wait_for_sshd" do
|
719
|
-
|
720
704
|
let(:cmd) do
|
721
|
-
driver.send(:wait_for_sshd, "host", "user", :
|
705
|
+
driver.send(:wait_for_sshd, "host", "user", one: "two")
|
722
706
|
end
|
723
707
|
|
724
708
|
it "creates an SSH connection with merged options" do
|
725
709
|
transport.expects(:connection).with(
|
726
|
-
:
|
727
|
-
:
|
728
|
-
:
|
729
|
-
:
|
730
|
-
).returns(stub(:
|
710
|
+
hostname: "host",
|
711
|
+
username: "user",
|
712
|
+
port: 22,
|
713
|
+
one: "two"
|
714
|
+
).returns(stub(wait_until_ready: true))
|
731
715
|
|
732
716
|
cmd
|
733
717
|
end
|
@@ -742,7 +726,6 @@ describe Kitchen::Driver::SSHBase do
|
|
742
726
|
end
|
743
727
|
|
744
728
|
describe "to maintain backwards compatibility" do
|
745
|
-
|
746
729
|
let(:driver) do
|
747
730
|
Kitchen::Driver::BackCompat.new(config).finalize_config!(instance)
|
748
731
|
end
|
@@ -756,7 +739,6 @@ describe Kitchen::Driver::SSHBase do
|
|
756
739
|
end
|
757
740
|
|
758
741
|
describe "#logger" do
|
759
|
-
|
760
742
|
before { @klog = Kitchen.logger }
|
761
743
|
after { Kitchen.logger = @klog }
|
762
744
|
|
@@ -795,7 +777,6 @@ describe Kitchen::Driver::SSHBase do
|
|
795
777
|
end
|
796
778
|
|
797
779
|
describe ".no_parallel_for" do
|
798
|
-
|
799
780
|
it "registers no serial actions when none are declared" do
|
800
781
|
Kitchen::Driver::SpeedyCompat.serial_actions.must_equal nil
|
801
782
|
end
|
@@ -813,52 +794,52 @@ describe Kitchen::Driver::SSHBase do
|
|
813
794
|
end
|
814
795
|
|
815
796
|
it "raises a ClientError if value is not an action method" do
|
816
|
-
proc
|
817
|
-
Class.new(Kitchen::Driver::BackCompat)
|
797
|
+
proc do
|
798
|
+
Class.new(Kitchen::Driver::BackCompat) do
|
818
799
|
no_parallel_for :telling_stories
|
819
|
-
|
820
|
-
|
800
|
+
end
|
801
|
+
end.must_raise Kitchen::ClientError
|
821
802
|
end
|
822
803
|
end
|
823
804
|
|
824
805
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
825
806
|
def self.constructs_an_ssh_object
|
826
807
|
it "with hostname set from state" do
|
827
|
-
Kitchen::SSH.expects(:new).with
|
808
|
+
Kitchen::SSH.expects(:new).with do |hostname, _username, _opts|
|
828
809
|
hostname.must_equal "fizzy"
|
829
|
-
|
810
|
+
end.returns(connection)
|
830
811
|
|
831
812
|
cmd
|
832
813
|
end
|
833
814
|
|
834
815
|
it "with username set from state" do
|
835
|
-
Kitchen::SSH.expects(:new).with
|
816
|
+
Kitchen::SSH.expects(:new).with do |_hostname, username, _opts|
|
836
817
|
username.must_equal "bork"
|
837
|
-
|
818
|
+
end.returns(connection)
|
838
819
|
|
839
820
|
cmd
|
840
821
|
end
|
841
822
|
|
842
823
|
it "with :user_known_hosts_file option set to /dev/null" do
|
843
|
-
Kitchen::SSH.expects(:new).with
|
824
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
844
825
|
opts[:user_known_hosts_file].must_equal "/dev/null"
|
845
|
-
|
826
|
+
end.returns(connection)
|
846
827
|
|
847
828
|
cmd
|
848
829
|
end
|
849
830
|
|
850
831
|
it "with :paranoid option set to false" do
|
851
|
-
Kitchen::SSH.expects(:new).with
|
832
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
852
833
|
opts[:paranoid].must_equal false
|
853
|
-
|
834
|
+
end.returns(connection)
|
854
835
|
|
855
836
|
cmd
|
856
837
|
end
|
857
838
|
|
858
839
|
it "with :keys_only option set to falsey by default" do
|
859
|
-
Kitchen::SSH.expects(:new).with
|
840
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
860
841
|
opts[:keys_only].nil?
|
861
|
-
|
842
|
+
end.returns(connection)
|
862
843
|
|
863
844
|
cmd
|
864
845
|
end
|
@@ -866,9 +847,9 @@ describe Kitchen::Driver::SSHBase do
|
|
866
847
|
it "with :keys_only option set to true if :ssh_key is set in config" do
|
867
848
|
config[:ssh_key] = "wicked"
|
868
849
|
|
869
|
-
Kitchen::SSH.expects(:new).with
|
850
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
870
851
|
opts[:keys_only].must_equal true
|
871
|
-
|
852
|
+
end.returns(connection)
|
872
853
|
|
873
854
|
cmd
|
874
855
|
end
|
@@ -876,17 +857,17 @@ describe Kitchen::Driver::SSHBase do
|
|
876
857
|
it "with :keys_only option set to true if :ssh_key is set in state" do
|
877
858
|
state[:ssh_key] = "wicked"
|
878
859
|
|
879
|
-
Kitchen::SSH.expects(:new).with
|
860
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
880
861
|
opts[:keys_only].must_equal true
|
881
|
-
|
862
|
+
end.returns(connection)
|
882
863
|
|
883
864
|
cmd
|
884
865
|
end
|
885
866
|
|
886
867
|
it "with :keys option set to falsey by default" do
|
887
|
-
Kitchen::SSH.expects(:new).with
|
868
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
888
869
|
opts[:keys].nil?
|
889
|
-
|
870
|
+
end.returns(connection)
|
890
871
|
|
891
872
|
cmd
|
892
873
|
end
|
@@ -894,9 +875,9 @@ describe Kitchen::Driver::SSHBase do
|
|
894
875
|
it "with :keys option set to an array if :ssh_key is set in config" do
|
895
876
|
config[:ssh_key] = "wicked"
|
896
877
|
|
897
|
-
Kitchen::SSH.expects(:new).with
|
878
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
898
879
|
opts[:keys].must_equal ["wicked"]
|
899
|
-
|
880
|
+
end.returns(connection)
|
900
881
|
|
901
882
|
cmd
|
902
883
|
end
|
@@ -904,17 +885,17 @@ describe Kitchen::Driver::SSHBase do
|
|
904
885
|
it "with :keys option set to an array if :ssh_key is set in state" do
|
905
886
|
state[:ssh_key] = "wicked"
|
906
887
|
|
907
|
-
Kitchen::SSH.expects(:new).with
|
888
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
908
889
|
opts[:keys].must_equal ["wicked"]
|
909
|
-
|
890
|
+
end.returns(connection)
|
910
891
|
|
911
892
|
cmd
|
912
893
|
end
|
913
894
|
|
914
895
|
it "with :password option set to falsey by default" do
|
915
|
-
Kitchen::SSH.expects(:new).with
|
896
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
916
897
|
opts[:password].nil?
|
917
|
-
|
898
|
+
end.returns(connection)
|
918
899
|
|
919
900
|
cmd
|
920
901
|
end
|
@@ -922,9 +903,9 @@ describe Kitchen::Driver::SSHBase do
|
|
922
903
|
it "with :password option set if given in config" do
|
923
904
|
config[:password] = "psst"
|
924
905
|
|
925
|
-
Kitchen::SSH.expects(:new).with
|
906
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
926
907
|
opts[:password].must_equal "psst"
|
927
|
-
|
908
|
+
end.returns(connection)
|
928
909
|
|
929
910
|
cmd
|
930
911
|
end
|
@@ -932,17 +913,17 @@ describe Kitchen::Driver::SSHBase do
|
|
932
913
|
it "with :password option set if given in state" do
|
933
914
|
state[:password] = "psst"
|
934
915
|
|
935
|
-
Kitchen::SSH.expects(:new).with
|
916
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
936
917
|
opts[:password].must_equal "psst"
|
937
|
-
|
918
|
+
end.returns(connection)
|
938
919
|
|
939
920
|
cmd
|
940
921
|
end
|
941
922
|
|
942
923
|
it "with :forward_agent option set to falsey by default" do
|
943
|
-
Kitchen::SSH.expects(:new).with
|
924
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
944
925
|
opts[:forward_agent].nil?
|
945
|
-
|
926
|
+
end.returns(connection)
|
946
927
|
|
947
928
|
cmd
|
948
929
|
end
|
@@ -950,9 +931,9 @@ describe Kitchen::Driver::SSHBase do
|
|
950
931
|
it "with :forward_agent option set if given in config" do
|
951
932
|
config[:forward_agent] = "yeah?"
|
952
933
|
|
953
|
-
Kitchen::SSH.expects(:new).with
|
934
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
954
935
|
opts[:forward_agent].must_equal "yeah?"
|
955
|
-
|
936
|
+
end.returns(connection)
|
956
937
|
|
957
938
|
cmd
|
958
939
|
end
|
@@ -960,17 +941,17 @@ describe Kitchen::Driver::SSHBase do
|
|
960
941
|
it "with :forward_agent option set if given in state" do
|
961
942
|
state[:forward_agent] = "yeah?"
|
962
943
|
|
963
|
-
Kitchen::SSH.expects(:new).with
|
944
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
964
945
|
opts[:forward_agent].must_equal "yeah?"
|
965
|
-
|
946
|
+
end.returns(connection)
|
966
947
|
|
967
948
|
cmd
|
968
949
|
end
|
969
950
|
|
970
951
|
it "with :port option set to 22 by default" do
|
971
|
-
Kitchen::SSH.expects(:new).with
|
952
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
972
953
|
opts[:port].must_equal 22
|
973
|
-
|
954
|
+
end.returns(connection)
|
974
955
|
|
975
956
|
cmd
|
976
957
|
end
|
@@ -978,9 +959,9 @@ describe Kitchen::Driver::SSHBase do
|
|
978
959
|
it "with :port option set if customized in config" do
|
979
960
|
config[:port] = 1234
|
980
961
|
|
981
|
-
Kitchen::SSH.expects(:new).with
|
962
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
982
963
|
opts[:port].must_equal 1234
|
983
|
-
|
964
|
+
end.returns(connection)
|
984
965
|
|
985
966
|
cmd
|
986
967
|
end
|
@@ -988,17 +969,17 @@ describe Kitchen::Driver::SSHBase do
|
|
988
969
|
it "with :port option set if customized in state" do
|
989
970
|
state[:port] = 9999
|
990
971
|
|
991
|
-
Kitchen::SSH.expects(:new).with
|
972
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
992
973
|
opts[:port].must_equal 9999
|
993
|
-
|
974
|
+
end.returns(connection)
|
994
975
|
|
995
976
|
cmd
|
996
977
|
end
|
997
978
|
|
998
979
|
it "with :logger option set to driver's logger" do
|
999
|
-
Kitchen::SSH.expects(:new).with
|
980
|
+
Kitchen::SSH.expects(:new).with do |_hostname, _username, opts|
|
1000
981
|
opts[:logger].must_equal logger
|
1001
|
-
|
982
|
+
end.returns(connection)
|
1002
983
|
|
1003
984
|
cmd
|
1004
985
|
end
|
@@ -1006,9 +987,8 @@ describe Kitchen::Driver::SSHBase do
|
|
1006
987
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
1007
988
|
|
1008
989
|
describe "#run_remote" do
|
1009
|
-
|
1010
990
|
let(:cmd) { driver.use_run_remote(state, "huh") }
|
1011
|
-
let(:connection) { stub(:
|
991
|
+
let(:connection) { stub(exec: true) }
|
1012
992
|
|
1013
993
|
before do
|
1014
994
|
state[:hostname] = "fizzy"
|
@@ -1074,10 +1054,9 @@ describe Kitchen::Driver::SSHBase do
|
|
1074
1054
|
end
|
1075
1055
|
|
1076
1056
|
describe "#transfer_path" do
|
1077
|
-
|
1078
1057
|
let(:cmd) { driver.use_transfer_path(state, ["nope"], "nadda") }
|
1079
|
-
let(:channel) { stub(:
|
1080
|
-
let(:connection) { stub(
|
1058
|
+
let(:channel) { stub(wait: true) }
|
1059
|
+
let(:connection) { stub(upload_path!: true, upload_path: channel) }
|
1081
1060
|
|
1082
1061
|
before do
|
1083
1062
|
state[:hostname] = "fizzy"
|