Sha256: 751efd5ce0356e5f4b3bcecf49dd1c448f93dde2dcefd9412520b343d3358b6f

Contents?: true

Size: 1.93 KB

Versions: 26

Compression:

Stored size: 1.93 KB

Contents

#! /usr/bin/env ruby

require 'spec_helper'
require 'facter/util/ip'


def ifconfig_fixture(filename)
  File.read(fixtures('ifconfig', filename))
end

describe "macaddress fact" do
  include FacterSpec::ConfigHelper

  before do
    given_a_configuration_of(:is_windows => false)
  end

  describe "when run on Linux" do
    before :each do
      Facter.fact(:kernel).stubs(:value).returns("Linux")
      Facter.fact(:operatingsystem).stubs(:value).returns("Linux")
      Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
    end

    it "should return the macaddress of the first interface" do
      Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
        returns(ifconfig_fixture('linux_ifconfig_all_with_multiple_interfaces'))

      Facter.value(:macaddress).should == "00:12:3f:be:22:01"
    end

    it "should return nil when no macaddress can be found" do
      Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
        returns(ifconfig_fixture('linux_ifconfig_no_mac'))

      proc { Facter.value(:macaddress) }.should_not raise_error
      Facter.value(:macaddress).should be_nil
    end

    # some interfaces dont have a real mac addresses (like venet inside a container)
    it "should return nil when no interface has a real macaddress" do
      Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
        returns(ifconfig_fixture('linux_ifconfig_venet'))

      proc { Facter.value(:macaddress) }.should_not raise_error
      Facter.value(:macaddress).should be_nil
    end
  end

  describe "when run on BSD" do
    it "should return macaddress information" do
      Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
      Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
      Facter::Util::IP.stubs(:exec_ifconfig).
        returns(ifconfig_fixture('bsd_ifconfig_all_with_multiple_interfaces'))

      Facter.value(:macaddress).should == "00:0b:db:93:09:67"
    end
  end

end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
facter-1.7.6 spec/unit/macaddress_spec.rb
facter-2.0.2 spec/unit/macaddress_spec.rb
facter-2.0.2-x86-mingw32 spec/unit/macaddress_spec.rb
facter-2.0.2-universal-darwin spec/unit/macaddress_spec.rb
facter-2.0.1 spec/unit/macaddress_spec.rb
facter-2.0.1-x86-mingw32 spec/unit/macaddress_spec.rb
facter-2.0.1-universal-darwin spec/unit/macaddress_spec.rb
facter-2.0.1.rc4 spec/unit/macaddress_spec.rb
facter-2.0.1.rc4-x86-mingw32 spec/unit/macaddress_spec.rb
facter-2.0.1.rc4-universal-darwin spec/unit/macaddress_spec.rb
facter-2.0.1.rc3 spec/unit/macaddress_spec.rb
facter-2.0.1.rc3-x86-mingw32 spec/unit/macaddress_spec.rb
facter-2.0.1.rc3-universal-darwin spec/unit/macaddress_spec.rb
facter-2.0.1.rc2 spec/unit/macaddress_spec.rb
facter-2.0.1.rc2-x86-mingw32 spec/unit/macaddress_spec.rb
facter-2.0.1.rc2-universal-darwin spec/unit/macaddress_spec.rb
facter-2.0.1.rc1 spec/unit/macaddress_spec.rb
facter-2.0.1.rc1-x86-mingw32 spec/unit/macaddress_spec.rb
facter-2.0.1.rc1-universal-darwin spec/unit/macaddress_spec.rb
facter-1.7.5 spec/unit/macaddress_spec.rb