require 'spec_helper'

module Eos
  describe Host do
    let(:options)  { @options ? @options : {} }
    let(:platform) {
      if @platform
        { :platform => Beaker::Platform.new( @platform) }
      else
        { :platform => Beaker::Platform.new( 'eos-vers-arch-extra' ) }
      end
    }
    let(:host)    { make_host( 'name', options.merge(platform) ) }

    describe '#get_puppet_agent_package_info' do
      it 'raises an error if puppet_collection isn\'t passed' do
        expect { host.get_puppet_agent_package_info(nil, 'maybe') }.to raise_error(ArgumentError)
      end

      it 'raises as error if puppet_agent_version isn\'t passed' do
        expect { host.get_puppet_agent_package_info('maybe', nil) }.to raise_error(ArgumentError)
      end

      it 'returns two strings that include the passed parameters' do
        return1, return2 = host.get_puppet_agent_package_info('pc1', 'pav1')
        expect( return1 ).to match(/pc1/)
        expect( return2 ).to match(/pav1/)
      end

      it 'gets the correct file type' do
        _, return2 = host.get_puppet_agent_package_info('pc1', 'pav1')
        expect( return2 ).to match(/swix/)
      end
    end

    describe '#get_remote_file' do
      it 'calls enable first' do
        expect( host ).to receive( :execute ).with(/enable/)
        host.get_remote_file( 'remote_url' )
      end

      it 'begins second line with the copy command' do
        expect( host ).to receive( :execute ).with(/\ncopy/)
        host.get_remote_file( 'remote_url' )
      end

      it 'ends second line with particular extension location' do
        expect( host ).to receive( :execute ).with(/extension\:\'$/)
        host.get_remote_file( 'remote_url' )
      end
    end

    describe '#install_from_file' do
      it 'calls enable first' do
        expect( host ).to receive( :execute ).with(/enable/)
        host.install_from_file( 'local_file' )
      end

      it 'begins second line with the extension command' do
        expect( host ).to receive( :execute ).with(/\nextension/)
        host.install_from_file( 'local_file' )
      end
    end
  end
end