diff options
author | tyler-ball <tyleraball@gmail.com> | 2014-12-09 09:09:17 -0800 |
---|---|---|
committer | tyler-ball <tyleraball@gmail.com> | 2014-12-09 09:09:17 -0800 |
commit | f8ef27aa8e202934f5d2f9d09fa264fc4d54e7ea (patch) | |
tree | 474d67200f8cb69ed6728f7dda9484a698363c93 | |
parent | ef40a662c42f343d40da394186a4e26f8008a692 (diff) | |
download | chef-f8ef27aa8e202934f5d2f9d09fa264fc4d54e7ea.tar.gz |
Adding audit DSL coveragetball/dsl-test
-rw-r--r-- | spec/unit/dsl/audit_spec.rb | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/spec/unit/dsl/audit_spec.rb b/spec/unit/dsl/audit_spec.rb index 7565a42d58..38707127f0 100644 --- a/spec/unit/dsl/audit_spec.rb +++ b/spec/unit/dsl/audit_spec.rb @@ -2,18 +2,19 @@ require 'spec_helper' require 'chef/dsl/audit' -class AuditDSLTester +class AuditDSLTester < Chef::Recipe include Chef::DSL::Audit end -describe Chef::DSL::Audit do - let(:auditor) { AuditDSLTester.new } - let(:run_context) { instance_double(Chef::RunContext, :audits => audits) } - let(:audits) { [] } +class BadAuditDSLTester + include Chef::DSL::Audit +end - before do - allow(auditor).to receive(:run_context).and_return(run_context) - end +describe Chef::DSL::Audit do + let(:auditor) { AuditDSLTester.new("cookbook_name", "recipe_name", run_context) } + let(:run_context) { instance_double(Chef::RunContext, :audits => audits, :cookbook_collection => cookbook_collection) } + let(:audits) { {} } + let(:cookbook_collection) { {} } it "raises an error when a block of audits is not provided" do expect{ auditor.controls "name" }.to raise_error(Chef::Exceptions::NoAuditsProvided) @@ -23,8 +24,20 @@ describe Chef::DSL::Audit do expect{ auditor.controls do end }.to raise_error(Chef::Exceptions::AuditNameMissing) end - it "raises an error if the audit name is a duplicate" do - expect(audits).to receive(:has_key?).with("unique").and_return(true) - expect { auditor.controls "unique" do end }.to raise_error(Chef::Exceptions::AuditControlGroupDuplicate) + context "audits already populated" do + let(:audits) { {"unique" => {} } } + + it "raises an error if the audit name is a duplicate" do + expect { auditor.controls "unique" do end }.to raise_error(Chef::Exceptions::AuditControlGroupDuplicate) + end end + + context "included in a class without recipe DSL" do + let(:auditor) { BadAuditDSLTester.new } + + it "fails because it relies on the recipe DSL existing" do + expect { auditor.controls "unique" do end }.to raise_error(NoMethodError, /undefined method `cookbook_name'/) + end + end + end |