Sha256: 4b9de8ffa67e0fb89c16faccd01f0c64559b1ceb92e91b3ba452ce362f26727e

Contents?: true

Size: 1.88 KB

Versions: 16

Compression:

Stored size: 1.88 KB

Contents

require 'spec_helper'

describe Rubix::ChefMonitor do

  def mock_query query, nodes=[]
    require 'chef'
    chef_query = mock("Chef::Search::Query")
    ::Chef::Search::Query.should_receive(:new).and_return(chef_query)
    chef_query.should_receive(:search).with('node', query).and_return([nodes, nodes.length])
  end
  
  before do
    @wrapper = Class.new(Rubix::Monitor)
    @wrapper.send(:include, Rubix::ChefMonitor)
  end

  it "has options for talking to Chef" do
    @wrapper.default_settings.should include(:chef_server_url)
    @wrapper.default_settings.should include(:chef_node_name)
    @wrapper.default_settings.should include(:chef_client_key)
  end

  describe "finding nodes in Chef" do

    describe 'when a node exists' do
      before do
        @node = { 'node_name' => 'foobar', 'ipaddress' => '123', 'fdqn' => '456' }
      end

      it "can find it based on its node name" do
        mock_query('name:foobar', [@node])
        @wrapper.new(@wrapper.default_settings).chef_node_from_node_name('foobar').should == @node
      end

      it "can find it based on its IP" do
        mock_query('ipaddress:123 OR fqdn:123', [@node])
        @wrapper.new(@wrapper.default_settings).chef_node_from_ip('123').should == @node
      end

      it "can find it based on its FQDN" do
        mock_query('ipaddress:456 OR fqdn:456', [@node])
        @wrapper.new(@wrapper.default_settings).chef_node_from_ip('456').should == @node
      end
    end

    describe "when a node doesn't exist" do
      
      it "returns nil when searching by node name" do
        mock_query('name:foobar')
        @wrapper.new(@wrapper.default_settings).chef_node_from_node_name('foobar').should be_nil
      end

      it "returns nil when searching by IP" do
        mock_query('ipaddress:123 OR fqdn:123')
        @wrapper.new(@wrapper.default_settings).chef_node_from_ip('123').should be_nil
      end
    end
  end
end
  

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rubix-0.5.14 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.13 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.9 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.8 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.7 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.6 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.5 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.4 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.3 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.2 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.1 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.5.0 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.4.3 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.4.2 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.4.1 spec/rubix/monitors/chef_monitor_spec.rb
rubix-0.4.0 spec/rubix/monitors/chef_monitor_spec.rb