1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
require 'spec_helper'
require 'puppet/face'
describe Puppet::Face[:node, '0.0.1'] do
describe '#cleanup' do
it "should clean everything" do
{
"cert" => ['hostname'],
"cached_facts" => ['hostname'],
"cached_node" => ['hostname'],
"reports" => ['hostname'],
}.each { |k, v| expect(subject).to receive("clean_#{k}".to_sym).with(*v) }
subject.cleanup('hostname')
end
end
describe 'when running #clean' do
it 'should invoke #cleanup' do
expect(subject).to receive(:cleanup).with('hostname')
subject.clean('hostname')
end
end
describe "clean action" do
before :each do
allow(subject).to receive(:cleanup)
end
it "should have a clean action" do
expect(subject).to be_action :clean
end
it "should not accept a call with no arguments" do
expect { subject.clean() }.to raise_error(RuntimeError, /At least one node should be passed/)
end
it "should accept a node name" do
expect { subject.clean('hostname') }.to_not raise_error
end
it "should accept more than one node name" do
expect do
subject.clean('hostname', 'hostname2', {})
end.to_not raise_error
expect do
subject.clean('hostname', 'hostname2', 'hostname3')
end.to_not raise_error
end
context "clean action" do
subject { Puppet::Face[:node, :current] }
before :each do
allow(Puppet::Util::Log).to receive(:newdestination)
allow(Puppet::Util::Log).to receive(:level=)
end
describe "during setup" do
it "should set facts terminus and cache class to yaml" do
expect(Puppet::Node::Facts.indirection).to receive(:terminus_class=).with(:yaml)
expect(Puppet::Node::Facts.indirection).to receive(:cache_class=).with(:yaml)
subject.clean('hostname')
end
it "should run in server mode" do
subject.clean('hostname')
expect(Puppet.run_mode).to be_server
end
it "should set node cache as yaml" do
expect(Puppet::Node.indirection).to receive(:terminus_class=).with(:yaml)
expect(Puppet::Node.indirection).to receive(:cache_class=).with(:yaml)
subject.clean('hostname')
end
end
describe "when cleaning certificate", :if => Puppet.features.puppetserver_ca? do
it "should call the CA CLI gem's clean action" do
expect_any_instance_of(Puppetserver::Ca::Action::Clean).
to receive(:clean_certs).
with(['hostname'], anything).
and_return(:success)
if Puppet[:cadir].start_with?(Puppet[:ssldir])
expect_any_instance_of(LoggerIO).
to receive(:warn).
with(/cadir is currently configured to be inside/)
end
expect(Puppet).not_to receive(:warning)
result = subject.clean_cert('hostname')
expect(result).to eq(0)
end
it "should not call the CA CLI gem's clean action if the gem is missing" do
expect(Puppet.features).to receive(:puppetserver_ca?).and_return(false)
expect_any_instance_of(Puppetserver::Ca::Action::Clean).not_to receive(:run)
subject.clean_cert("hostname")
end
end
describe "when cleaning cached facts" do
it "should destroy facts" do
@host = 'node'
expect(Puppet::Node::Facts.indirection).to receive(:destroy).with(@host)
subject.clean_cached_facts(@host)
end
end
describe "when cleaning cached node" do
it "should destroy the cached node" do
expect(Puppet::Node.indirection).to receive(:destroy).with(@host)
subject.clean_cached_node(@host)
end
end
describe "when cleaning archived reports" do
it "should tell the reports to remove themselves" do
allow(Puppet::Transaction::Report.indirection).to receive(:destroy).with(@host)
subject.clean_reports(@host)
end
end
end
end
end
|