blob: a3cc74d86a436ba09a90ed4894c8d0949e022fc1 (
plain)
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
|
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../../spec_helper'
require 'puppet/application/inspect'
require 'puppet/resource/catalog'
require 'puppet/indirector/catalog/yaml'
require 'puppet/indirector/report/rest'
describe Puppet::Application::Inspect do
before :each do
@inspect = Puppet::Application[:inspect]
end
describe "during setup" do
it "should print its configuration if asked" do
Puppet[:configprint] = "all"
Puppet.settings.expects(:print_configs).returns(true)
lambda { @inspect.setup }.should raise_error(SystemExit)
end
it "should fail if reporting is turned off" do
Puppet[:report] = false
lambda { @inspect.setup }.should raise_error(/report=true/)
end
end
describe "when executing" do
before :each do
Puppet[:report] = true
Puppet::Util::Log.stubs(:newdestination)
Puppet::Transaction::Report::Rest.any_instance.stubs(:save)
@inspect.setup
end
it "should retrieve the local catalog" do
Puppet::Resource::Catalog::Yaml.any_instance.expects(:find).with {|request| request.key == Puppet[:certname] }.returns(Puppet::Resource::Catalog.new)
@inspect.run_command
end
it "should save the report to REST" do
Puppet::Resource::Catalog::Yaml.any_instance.stubs(:find).returns(Puppet::Resource::Catalog.new)
Puppet::Transaction::Report::Rest.any_instance.expects(:save).with {|request| request.instance.host == Puppet[:certname] }
@inspect.run_command
end
it "should audit the specified properties" do
catalog = Puppet::Resource::Catalog.new
file = Tempfile.new("foo")
file.puts("file contents")
file.flush
resource = Puppet::Resource.new(:file, file.path, :parameters => {:audit => "all"})
catalog.add_resource(resource)
Puppet::Resource::Catalog::Yaml.any_instance.stubs(:find).returns(catalog)
events = nil
Puppet::Transaction::Report::Rest.any_instance.expects(:save).with do |request|
events = request.instance.resource_statuses.values.first.events
end
@inspect.run_command
properties = events.inject({}) do |property_values, event|
property_values.merge(event.property => event.previous_value)
end
properties["ensure"].should == :file
properties["content"].should == "{md5}#{Digest::MD5.hexdigest("file contents\n")}"
end
end
after :all do
Puppet::Resource::Catalog.indirection.reset_terminus_class
Puppet::Transaction::Report.indirection.terminus_class = :processor
end
end
|