spec/vagrant-winrm/commands/winrm_spec.rb in vagrant-winrm-0.0.2 vs spec/vagrant-winrm/commands/winrm_spec.rb in vagrant-winrm-0.4.0

- old
+ new

@@ -1,120 +1,120 @@ -require 'spec_helper' -require 'stringio' - -describe VagrantPlugins::VagrantWinRM::WinRM, :unit => true do - -=begin ############ -# Here we mock! -=end ############## - - let(:idx) { double('idx') } - let(:communicator) { double('communicator') } - let(:config_vm) { double('config_vm', communicator: :winrm) } - let(:machine_config) { double('machine_config', vm: config_vm) } - let(:machine) { double('machine', config: machine_config, name: 'vagrant', provider: 'virtualbox', config: machine_config, communicate: communicator, ui: double('ui', opts: {})) } - let(:env) { double('env', root_path: '', home_path: '', ui_class: '', machine_names: [machine.name], active_machines: [machine], machine_index: idx, default_provider: 'virtualbox') } - - before do - # Mock the local env creation - allow(machine).to receive(:vagrant_env).with('', { :ui_class => '' }).and_return env - - # Mock the index to include only our machine - allow(idx).to receive(:release).with machine - allow(idx).to receive(:include?).with(any_args) do |name| - 'vagrant' == name - end - allow(idx).to receive(:get).with(any_args) do |name| - env.machine(name.to_sym, :virtualbox) - end - - # Add our machine to the environment - allow(env).to receive(:machine).with(any_args, :virtualbox) do |name, provider| - machine if :vagrant == name - end - end - -=begin ############ -# Here we test! -=end ############## - describe 'execute' do - it 'does nothing with no option' do - c = VagrantPlugins::VagrantWinRM::WinRM.new([], env) - expect { - expect(c.execute).to be_zero - }.not_to output.to_stdout - end - - it 'gives proper version with option --plugin-version' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['--plugin-version'], env) - expect { - expect(c.execute).to be_zero - }.to output("Vagrant-winrm plugin 0.0.1\n").to_stdout - end - - it 'displays help message with option --help' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['--help'], env) - expect { - expect(c.execute).to be_nil - }.to output.to_stdout - end - - it 'raises error when communicator not winrm' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'dummyCommand'], env) - expect(config_vm).to receive(:communicator).and_return :ssh - - expect { c.execute }.to raise_error(VagrantPlugins::VagrantWinRM::Errors::ConfigurationError, /not configured to communicate through WinRM/) - end - - it 'raises error on unknown target' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command1', 'unknownTarget'], env) - expect { c.execute }.to raise_error(Vagrant::Errors::VMNotFoundError) - end - - it 'raises error ''invalid options'' on unknown option' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['--unknown'], env) - expect { c.execute }.to raise_error(Vagrant::Errors::CLIInvalidOptions) - end - - it 'passes commands to communicator with no target' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command1', '--command', 'command2', '-c', 'command3', '--command', 'command4'], env) - - expect(communicator).to receive(:execute).ordered.with('command1').and_return 0 - expect(communicator).to receive(:execute).ordered.with('command2').and_return 0 - expect(communicator).to receive(:execute).ordered.with('command3').and_return 0 - expect(communicator).to receive(:execute).ordered.with('command4').and_return 0 - - expect { - expect(c.execute).to be_zero - }.not_to output.to_stdout - end - - it 'passes commands to communicator even with a specific target' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command5', '--command', 'command6', '-c', 'command7', '--command', 'command8', 'vagrant'], env) - expect(communicator).to receive(:execute).ordered.with('command5').and_return 0 - expect(communicator).to receive(:execute).ordered.with('command6').and_return 0 - expect(communicator).to receive(:execute).ordered.with('command7').and_return 0 - expect(communicator).to receive(:execute).ordered.with('command8').and_return 0 - expect { - expect(c.execute).to be_zero - }.not_to output.to_stdout - end - - it 'redirects winrm outputs to stdout' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command'], env) - - expect(communicator).to receive(:execute).with('command').and_yield(:stdout, 'output message').and_return 0 - expect { - expect(c.execute).to be_zero - }.to output('output message').to_stdout - end - - it 'redirects winrm errors to stderr' do - c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command'], env) - - expect(communicator).to receive(:execute).with('command').and_yield(:stderr, 'error message').and_return 0 - expect { - expect(c.execute).to be_zero - }.to output('error message').to_stderr - end - end -end +require 'spec_helper' +require 'stringio' + +describe VagrantPlugins::VagrantWinRM::WinRM, :unit => true do + +=begin ############ +# Here we mock! +=end ############## + + let(:idx) { double('idx') } + let(:communicator) { double('communicator') } + let(:config_vm) { double('config_vm', communicator: :winrm) } + let(:machine_config) { double('machine_config', vm: config_vm) } + let(:machine) { double('machine', config: machine_config, name: 'vagrant', provider: 'virtualbox', config: machine_config, communicate: communicator, ui: double('ui', opts: {})) } + let(:env) { double('env', root_path: '', home_path: '', ui_class: '', machine_names: [machine.name], active_machines: [machine], machine_index: idx, default_provider: 'virtualbox') } + + before do + # Mock the local env creation + allow(machine).to receive(:vagrant_env).with('', { :ui_class => '' }).and_return env + + # Mock the index to include only our machine + allow(idx).to receive(:release).with machine + allow(idx).to receive(:include?).with(any_args) do |name| + 'vagrant' == name + end + allow(idx).to receive(:get).with(any_args) do |name| + env.machine(name.to_sym, :virtualbox) + end + + # Add our machine to the environment + allow(env).to receive(:machine).with(any_args, :virtualbox) do |name, provider| + machine if :vagrant == name + end + end + +=begin ############ +# Here we test! +=end ############## + describe 'execute' do + it 'does nothing with no option' do + c = VagrantPlugins::VagrantWinRM::WinRM.new([], env) + expect { + expect(c.execute).to be_zero + }.not_to output.to_stdout + end + + it 'gives proper version with option --plugin-version' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['--plugin-version'], env) + expect { + expect(c.execute).to be_zero + }.to output("Vagrant-winrm plugin #{VagrantPlugins::VagrantWinRM::VERSION}\n").to_stdout + end + + it 'displays help message with option --help' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['--help'], env) + expect { + expect(c.execute).to be_nil + }.to output.to_stdout + end + + it 'raises error when communicator not winrm' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'dummyCommand'], env) + expect(config_vm).to receive(:communicator).and_return :ssh + + expect { c.execute }.to raise_error(VagrantPlugins::VagrantWinRM::Errors::ConfigurationError, /not configured to communicate through WinRM/) + end + + it 'raises error on unknown target' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command1', 'unknownTarget'], env) + expect { c.execute }.to raise_error(Vagrant::Errors::VMNotFoundError) + end + + it 'raises error ''invalid options'' on unknown option' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['--unknown'], env) + expect { c.execute }.to raise_error(Vagrant::Errors::CLIInvalidOptions) + end + + it 'passes commands to communicator with no target' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command1', '--command', 'command2', '-c', 'command3', '--command', 'command4'], env) + + expect(communicator).to receive(:execute).ordered.with('command1', { shell: :powershell }).and_return 0 + expect(communicator).to receive(:execute).ordered.with('command2', { shell: :powershell }).and_return 0 + expect(communicator).to receive(:execute).ordered.with('command3', { shell: :powershell }).and_return 0 + expect(communicator).to receive(:execute).ordered.with('command4', { shell: :powershell }).and_return 0 + + expect { + expect(c.execute).to be_zero + }.not_to output.to_stdout + end + + it 'passes commands to communicator even with a specific target' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command5', '--command', 'command6', '-c', 'command7', '--command', 'command8', 'vagrant'], env) + expect(communicator).to receive(:execute).ordered.with('command5', { shell: :powershell }).and_return 0 + expect(communicator).to receive(:execute).ordered.with('command6', { shell: :powershell }).and_return 0 + expect(communicator).to receive(:execute).ordered.with('command7', { shell: :powershell }).and_return 0 + expect(communicator).to receive(:execute).ordered.with('command8', { shell: :powershell }).and_return 0 + expect { + expect(c.execute).to be_zero + }.not_to output.to_stdout + end + + it 'redirects winrm outputs to stdout' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command'], env) + + expect(communicator).to receive(:execute).with('command', { shell: :powershell }).and_yield(:stdout, 'output message').and_return 0 + expect { + expect(c.execute).to be_zero + }.to output('output message').to_stdout + end + + it 'redirects winrm errors to stderr' do + c = VagrantPlugins::VagrantWinRM::WinRM.new(['-c', 'command'], env) + + expect(communicator).to receive(:execute).with('command', { shell: :powershell }).and_yield(:stderr, 'error message').and_return 0 + expect { + expect(c.execute).to be_zero + }.to output('error message').to_stderr + end + end +end