spec/lib/spawn/ssh_spec.rb in evrone-common-spawn-0.0.3 vs spec/lib/spawn/ssh_spec.rb in evrone-common-spawn-0.0.4
- old
+ new
@@ -1,13 +1,14 @@
require 'spec_helper'
require 'timeout'
describe Evrone::Common::Spawn::SSH, ssh: true do
- let(:user) { ENV['SSH_USER'] }
- let(:host) { ENV['SSH_HOST'] }
- let(:pass) { ENV['SSH_PASS'] }
+ let(:user) { ENV['SSH_USER'] || 'vagrant' }
+ let(:host) { ENV['SSH_HOST'] || 'localhost' }
+ let(:pass) { ENV['SSH_PASS'] || 'vagrant' }
+ let(:port) { ENV['SSH_PORT'] || 2222 }
let(:collected) { '' }
it "run command successfuly" do
code = run_ssh 'echo $USER'
expect(collected).to eq "#{user}\n"
@@ -19,15 +20,31 @@
expect(collected).to eq ""
expect(code).to eq 1
end
it "run command with env successfuly" do
- code = run_ssh({'FOO' => "BAR"}, 'echo $FOO')
- expect(collected).to match(re "FAILED: couldn't execute command (ssh.channel.env)")
+ code = run_ssh({'FOO' => "BAR"}, "sh -c 'echo $FOO'")
+ expect(collected).to eq "BAR\n"
expect(code).to eq 0
end
+ it "run command with chdir successfuly" do
+ code = run_ssh("echo $(pwd)", chdir: "/tmp")
+ expect(collected).to eq "/tmp\n"
+ expect(code).to eq 0
+ end
+
+ it "run command with chdir and env successfuly" do
+ code = run_ssh(
+ {'FOO' => "BAR"},
+ "sh -c 'echo $FOO' ; echo $(pwd)",
+ chdir: '/tmp'
+ )
+ expect(collected).to eq "BAR\n/tmp\n"
+ expect(code).to eq 0
+ end
+
context "timeout" do
it 'run command with timeout' do
expect{
run_ssh('echo $USER; sleep 0.5', timeout: 0.2)
}.to raise_error(Evrone::Common::Spawn::TimeoutError)
@@ -79,10 +96,10 @@
expect(collected).to eq "#{user}\n"
expect(code).to eq(-1)
end
def open_ssh(&block)
- described_class.open(host, user, password: pass, verbose: 2, &block)
+ described_class.open(host, user, password: pass, paranoid: false, verbose: 2, port: port, &block)
end
def re(s)
Regexp.escape s
end