From 99710b0df9f960eb5656b781c5c14a2726edbc88 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Wed, 25 Sep 2013 00:17:46 +0000 Subject: [PATCH] Implement Remote::FS#sftp --- lib/producer/core/remote/fs.rb | 4 ++++ spec/producer/core/remote/fs_spec.rb | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/producer/core/remote/fs.rb b/lib/producer/core/remote/fs.rb index 19fec4f..f36a2e7 100644 --- a/lib/producer/core/remote/fs.rb +++ b/lib/producer/core/remote/fs.rb @@ -7,6 +7,10 @@ module Producer def initialize(remote) @remote = remote end + + def sftp + @sftp ||= @remote.session.sftp.connect + end end end end diff --git a/spec/producer/core/remote/fs_spec.rb b/spec/producer/core/remote/fs_spec.rb index 609b841..0a8d32b 100644 --- a/spec/producer/core/remote/fs_spec.rb +++ b/spec/producer/core/remote/fs_spec.rb @@ -10,5 +10,25 @@ module Producer::Core expect(fs.instance_eval { @remote }).to be remote end end + + describe '#sftp', :ssh do + before { sftp_story } + + it 'builds a new SFTP session' do + expect(remote.session.sftp).to receive(:connect) + fs.sftp + end + + it 'returns the new SFTP session' do + session = double('session') + allow(remote.session.sftp).to receive(:connect) { session } + expect(fs.sftp).to be session + end + + it 'memoizes the FS' do + allow(remote.session.sftp).to receive(:connect) { Object.new } + expect(fs.sftp).to be fs.sftp + end + end end end