diff --git a/spec/producer/core/remote_spec.rb b/spec/producer/core/remote_spec.rb index 5f8d6c3..132126c 100644 --- a/spec/producer/core/remote_spec.rb +++ b/spec/producer/core/remote_spec.rb @@ -2,9 +2,6 @@ require 'spec_helper' module Producer::Core describe Remote do - require 'net/ssh/test' - include Net::SSH::Test - let(:hostname) { 'some_host.example' } subject(:remote) { Remote.new(hostname) } @@ -32,30 +29,12 @@ module Producer::Core end end - describe '#execute' do + describe '#execute', type: :ssh do let(:args) { 'some remote command'} let(:command) { "echo #{args}" } - # FIXME: refactor this with helpers, expectations and/or matchers. - def with_new_channel_story - story do |session| - ch = session.opens_channel - yield ch - ch.gets_close - ch.sends_close - end - end - - def story_completed? - socket.script.events.empty? - end - - before do - allow(remote).to receive(:session) { connection } - end - it 'executes the given command in a new channel' do - with_new_channel_story do |ch| + story_with_new_channel do |ch| ch.sends_exec command ch.gets_data args end @@ -64,7 +43,7 @@ module Producer::Core end it 'returns the output' do - with_new_channel_story do |ch| + story_with_new_channel do |ch| ch.sends_exec command ch.gets_data args end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 95f6163..a81edcd 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,3 +2,12 @@ require 'producer/core' require 'support/exit_helpers' require 'support/fixtures_helpers' +require 'support/net_ssh_story_helpers' + + +RSpec.configure do |c| + c.include NetSSHStoryHelpers, type: :ssh + c.before(:each, type: :ssh) do + allow(remote).to receive(:session) { connection } + end +end diff --git a/spec/support/net_ssh_story_helpers.rb b/spec/support/net_ssh_story_helpers.rb new file mode 100644 index 0000000..ee9f26a --- /dev/null +++ b/spec/support/net_ssh_story_helpers.rb @@ -0,0 +1,17 @@ +module NetSSHStoryHelpers + require 'net/ssh/test' + include Net::SSH::Test + + def story_with_new_channel + story do |session| + ch = session.opens_channel + yield ch + ch.gets_close + ch.sends_close + end + end + + def story_completed? + socket.script.events.empty? + end +end