spec/beaker/hypervisor/vmpooler_spec.rb in beaker-2.13.0 vs spec/beaker/hypervisor/vmpooler_spec.rb in beaker-2.14.0

- old
+ new

@@ -5,27 +5,28 @@ before :each do vms = make_hosts() MockVsphereHelper.set_config( fog_file_contents ) MockVsphereHelper.set_vms( vms ) - stub_const( "VsphereHelper", MockVsphereHelper ) - stub_const( "Net", MockNet ) + stub_const( "VsphereHelper", MockVsphereHelper ) + stub_const( "Net", MockNet ) allow( JSON ).to receive( :parse ) do |arg| arg end allow( Socket ).to receive( :getaddrinfo ).and_return( true ) - allow_any_instance_of( Beaker::Vmpooler ).to receive(:load_credentials).and_return(fog_file_contents) + allow_any_instance_of( Beaker::Vmpooler ).to \ + receive(:load_credentials).and_return(fog_file_contents) end describe '#get_template_url' do it 'works returns the valid url when passed valid pooling_api and template name' do vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) uri = vmpooler.get_template_url("http://pooling.com", "template") expect( uri ).to be === "http://pooling.com/vm/template" end - + it 'adds a missing scheme to a given URL' do vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) uri = vmpooler.get_template_url("pooling.com", "template") expect( URI.parse(uri).scheme ).to_not be === nil end @@ -37,29 +38,25 @@ it 'raises an error on an invalide template name' do vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) expect{ vmpooler.get_template_url("pooling.com", "t!e&m*p(l\\a/t e")}.to raise_error ArgumentError end - end describe "#provision" do - it 'provisions hosts from the pool' do - + it 'provisions hosts from the pool' do vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) allow( vmpooler ).to receive( :require ).and_return( true ) allow( vmpooler ).to receive( :sleep ).and_return( true ) vmpooler.provision hosts = vmpooler.instance_variable_get( :@hosts ) hosts.each do | host | expect( host['vmhostname'] ).to be === 'pool' end - end - end describe "#cleanup" do it "cleans up hosts in the pool" do @@ -76,12 +73,72 @@ name = host.name vm = MockVsphereHelper.find_vm( name ) expect( vm.runtime.powerState ).to be === "poweredOn" #handed back to the pool, stays on end end + end + end + describe Vmpooler do + before :each do + vms = make_hosts() + MockVsphereHelper.set_config( fog_file_contents ) + MockVsphereHelper.set_vms( vms ) + stub_const( "VsphereHelper", MockVsphereHelper ) + stub_const( "Net", MockNet ) + allow( JSON ).to receive( :parse ) do |arg| + arg + end + allow( Socket ).to receive( :getaddrinfo ).and_return( true ) end - end + describe "#load_credentials" do + it 'continues without credentials when fog file is missing' do + allow_any_instance_of( Beaker::Vmpooler ).to \ + receive(:read_fog_file).and_raise(Errno::ENOENT.new) + + vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) + expect( vmpooler.credentials ).to be == {} + end + + it 'continues without credentials when fog file is empty' do + allow_any_instance_of( Beaker::Vmpooler ).to \ + receive(:read_fog_file).and_return(false) + + vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) + expect( vmpooler.credentials ).to be == {} + end + + it 'continues without credentials when fog file contains no :default section' do + data = { :some => { :other => :data } } + + allow_any_instance_of( Beaker::Vmpooler ).to \ + receive(:read_fog_file).and_return(data) + + vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) + expect( vmpooler.credentials ).to be == { } + end + + it 'continues without credentials when fog file :default section has no :vmpooler_token' do + data = { :default => { :something_else => "TOKEN" } } + + allow_any_instance_of( Beaker::Vmpooler ).to \ + receive(:read_fog_file).and_return(data) + + vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) + expect( vmpooler.credentials ).to be == { } + end + + it 'stores vmpooler token when found in fog file' do + data = { :default => { :vmpooler_token => "TOKEN" } } + + allow_any_instance_of( Beaker::Vmpooler ).to \ + receive(:read_fog_file).and_return(data) + + vmpooler = Beaker::Vmpooler.new( make_hosts, make_opts ) + expect( vmpooler.credentials ).to be == { :vmpooler_token => "TOKEN" } + end + end + end end