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