require 'spec_helper' |
|
describe 'logical_interface', type: :fact do |
let(:networking_hash) do |
{ |
'primary' => 'eth42', |
'interfaces' => { |
'eth0' => { 'ip' => '2.2.2.2' }, |
'eth42:1' => { 'ip' => '1.1.1.1' }, |
}, |
} |
end |
let(:networking_hash_no_alias) do |
{ |
'primary' => 'eth0', |
'interfaces' => { |
'eth0' => { 'ip' => '3.3.3.3' }, |
}, |
} |
end |
# GCE should act the same as on-prem |
let(:networking_hash_gce) do |
networking_hash |
end |
|
context 'On a physical host' do |
before(:each) do |
Facter.clear |
# Workaround for https://github.com/puppetlabs/pdk/issues/694 |
if Facter.fact(:networking).nil? |
Facter.add(:networking) {} |
Facter.flush |
end |
|
allow(Facter.fact(:networking)).to receive(:value).and_return(networking_hash) |
allow(Facter.fact(:kernel)).to receive(:value).and_return('Linux') |
allow(Facter.fact(:virtual)).to receive(:value).and_return('physical') |
end |
|
it "returns the primary's sub-interface hash" do |
expect(Facter.fact(:logical_interface).value).to eq('ip' => '1.1.1.1') |
end |
end |
|
context 'On a physical host with no sub-interface' do |
before(:each) do |
Facter.clear |
# Workaround for https://github.com/puppetlabs/pdk/issues/694 |
if Facter.fact(:networking).nil? |
Facter.add(:networking) {} |
Facter.flush |
end |
|
allow(Facter.fact(:networking)).to receive(:value).and_return(networking_hash_no_alias) |
allow(Facter.fact(:virtual)).to receive(:value).and_return('physical') |
end |
|
it 'returns nil (undef)' do |
expect(Facter.fact(:logical_interface).value).to be_nil |
end |
end |
|
context 'On a GCE host' do |
before(:each) do |
Facter.clear |
# Workaround for https://github.com/puppetlabs/pdk/issues/694 |
if Facter.fact(:networking).nil? |
Facter.add(:networking) {} |
Facter.flush |
end |
|
allow(Facter.fact(:networking)).to receive(:value).and_return(networking_hash_gce) |
allow(Facter.fact(:kernel)).to receive(:value).and_return('Linux') |
allow(Facter.fact(:virtual)).to receive(:value).and_return('gce') |
end |
|
it "returns eth0's hash" do |
expect(Facter.fact(:logical_interface).value).to eq('ip' => '2.2.2.2') |
end |
end |
end
|