diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/support/shared/unit/execute_resource.rb | 109 | ||||
-rw-r--r-- | spec/unit/resource/execute_spec.rb | 25 |
2 files changed, 63 insertions, 71 deletions
diff --git a/spec/support/shared/unit/execute_resource.rb b/spec/support/shared/unit/execute_resource.rb index ae56a9697d..2708eccade 100644 --- a/spec/support/shared/unit/execute_resource.rb +++ b/spec/support/shared/unit/execute_resource.rb @@ -20,142 +20,135 @@ require "spec_helper" shared_examples_for "an execute resource" do - - before(:each) do - @resource = execute_resource - end - - it "should create a new Chef::Resource::Execute" do - expect(@resource).to be_a_kind_of(Chef::Resource) - expect(@resource).to be_a_kind_of(Chef::Resource::Execute) + it "resource_name should equal :execute" do + expect(resource.resource_name).to eq(:execute) end - it "should set the command to the first argument to new" do - expect(@resource.command).to eql(resource_instance_name) + it "should set the command to the resource name" do + expect(resource.command).to eql("some command") end it "should accept an array on instantiation, too" do resource = Chef::Resource::Execute.new(%w{something else}) - expect(resource).to be_a_kind_of(Chef::Resource) - expect(resource).to be_a_kind_of(Chef::Resource::Execute) + expect(resource.resource_name).to eq(:execute) expect(resource.command).to eql(%w{something else}) end it "should accept a string for the command to run" do - @resource.command "something" - expect(@resource.command).to eql("something") + resource.command "something" + expect(resource.command).to eql("something") end it "should accept an array for the command to run" do - @resource.command %w{something else} - expect(@resource.command).to eql(%w{something else}) + resource.command %w{something else} + expect(resource.command).to eql(%w{something else}) end it "should accept a string for the cwd" do - @resource.cwd "something" - expect(@resource.cwd).to eql("something") + resource.cwd "something" + expect(resource.cwd).to eql("something") end it "should accept a hash for the environment" do test_hash = { :one => :two } - @resource.environment(test_hash) - expect(@resource.environment).to eql(test_hash) + resource.environment(test_hash) + expect(resource.environment).to eql(test_hash) end it "allows the environment to be specified with #env" do - expect(@resource).to respond_to(:env) + expect(resource).to respond_to(:env) end it "should accept a string for the group" do - @resource.group "something" - expect(@resource.group).to eql("something") + resource.group "something" + expect(resource.group).to eql("something") end it "should accept an integer for the group" do - @resource.group 1 - expect(@resource.group).to eql(1) + resource.group 1 + expect(resource.group).to eql(1) end it "the old path property (that never worked) is not supported in chef >= 13" do - expect { @resource.path [ "woot" ] }.to raise_error + expect { resource.path [ "woot" ] }.to raise_error end it "should accept an integer for the return code" do - @resource.returns 1 - expect(@resource.returns).to eql(1) + resource.returns 1 + expect(resource.returns).to eql(1) end it "should accept an integer for the timeout" do - @resource.timeout 1 - expect(@resource.timeout).to eql(1) + resource.timeout 1 + expect(resource.timeout).to eql(1) end it "should accept a string for the user" do - @resource.user "something" - expect(@resource.user).to eql("something") + resource.user "something" + expect(resource.user).to eql("something") end it "should accept an integer for the user" do - @resource.user 1 - expect(@resource.user).to eql(1) + resource.user 1 + expect(resource.user).to eql(1) end it "should accept a string for the domain" do - @resource.domain "mothership" - expect(@resource.domain).to eql("mothership") + resource.domain "mothership" + expect(resource.domain).to eql("mothership") end it "should accept a string for the password" do - @resource.password "we.funk!" - expect(@resource.password).to eql("we.funk!") + resource.password "we.funk!" + expect(resource.password).to eql("we.funk!") end it "should accept a string for creates" do - @resource.creates "something" - expect(@resource.creates).to eql("something") + resource.creates "something" + expect(resource.creates).to eql("something") end it "should accept a boolean for live streaming" do - @resource.live_stream true - expect(@resource.live_stream).to be true + resource.live_stream true + expect(resource.live_stream).to be true end describe "the resource's sensitive attribute" do it "should be false by default" do - expect(@resource.sensitive).to eq(false) + expect(resource.sensitive).to eq(false) end it "should be true if set to true" do - expect(@resource.sensitive).to eq(false) - @resource.sensitive true - expect(@resource.sensitive).to eq(true) + expect(resource.sensitive).to eq(false) + resource.sensitive true + expect(resource.sensitive).to eq(true) end it "should be true if the password is non-nil" do - @resource.password("we.funk!") - expect(@resource.sensitive).to eq(true) + resource.password("we.funk!") + expect(resource.sensitive).to eq(true) end it "should be true if the password is non-nil but the value is explicitly set to false" do - @resource.password("we.funk!") - @resource.sensitive false - expect(@resource.sensitive).to eq(true) + resource.password("we.funk!") + resource.sensitive false + expect(resource.sensitive).to eq(true) end end describe "when it has cwd, environment, group, path, return value, and a user" do before do - @resource.command("grep") - @resource.cwd("/tmp/") - @resource.environment({ :one => :two }) - @resource.group("legos") - @resource.returns(1) - @resource.user("root") + resource.command("grep") + resource.cwd("/tmp/") + resource.environment({ :one => :two }) + resource.group("legos") + resource.returns(1) + resource.user("root") end it "returns the command as its identity" do - expect(@resource.identity).to eq("grep") + expect(resource.identity).to eq("grep") end end end diff --git a/spec/unit/resource/execute_spec.rb b/spec/unit/resource/execute_spec.rb index c99e87b351..469d4105c4 100644 --- a/spec/unit/resource/execute_spec.rb +++ b/spec/unit/resource/execute_spec.rb @@ -20,16 +20,15 @@ require "spec_helper" describe Chef::Resource::Execute do - let(:resource_instance_name) { "some command" } - let(:execute_resource) { Chef::Resource::Execute.new(resource_instance_name) } + let(:resource) { Chef::Resource::Execute.new("some command") } it_behaves_like "an execute resource" it "default guard interpreter is :execute interpreter" do - expect(execute_resource.guard_interpreter).to be(:execute) + expect(resource.guard_interpreter).to be(:execute) end it "defaults to not being a guard interpreter" do - expect(execute_resource.is_guard_interpreter).to eq(false) + expect(resource.is_guard_interpreter).to eq(false) end describe "#qualify_user" do @@ -40,7 +39,7 @@ describe Chef::Resource::Execute do let(:username) { "user@domain" } it "correctly parses the user and domain" do - identity = execute_resource.qualify_user(username, password, domain) + identity = resource.qualify_user(username, password, domain) expect(identity[:domain]).to eq("domain") expect(identity[:user]).to eq("user") end @@ -50,7 +49,7 @@ describe Chef::Resource::Execute do let(:username) { "domain\\user" } it "correctly parses the user and domain" do - identity = execute_resource.qualify_user(username, password, domain) + identity = resource.qualify_user(username, password, domain) expect(identity[:domain]).to eq("domain") expect(identity[:user]).to eq("user") end @@ -60,14 +59,14 @@ describe Chef::Resource::Execute do shared_examples_for "it received valid credentials" do describe "the validation method" do it "does not raise an error" do - expect { execute_resource.validate_identity_platform(username, password, domain) }.not_to raise_error + expect { resource.validate_identity_platform(username, password, domain) }.not_to raise_error end end describe "the name qualification method" do it "correctly translates the user and domain" do identity = nil - expect { identity = execute_resource.qualify_user(username, password, domain) }.not_to raise_error + expect { identity = resource.qualify_user(username, password, domain) }.not_to raise_error expect(identity[:domain]).to eq(domain) expect(identity[:user]).to eq(username) end @@ -77,7 +76,7 @@ describe Chef::Resource::Execute do shared_examples_for "it received invalid credentials" do describe "the validation method" do it "raises an error" do - expect { execute_resource.validate_identity_platform(username, password, domain, elevated) }.to raise_error(ArgumentError) + expect { resource.validate_identity_platform(username, password, domain, elevated) }.to raise_error(ArgumentError) end end end @@ -85,7 +84,7 @@ describe Chef::Resource::Execute do shared_examples_for "it received invalid username and domain" do describe "the validation method" do it "raises an error" do - expect { execute_resource.qualify_user(username, password, domain) }.to raise_error(ArgumentError) + expect { resource.qualify_user(username, password, domain) }.to raise_error(ArgumentError) end end end @@ -93,7 +92,7 @@ describe Chef::Resource::Execute do shared_examples_for "it received credentials that are not valid on the platform" do describe "the validation method" do it "raises an error" do - expect { execute_resource.validate_identity_platform(username, password, domain) }.to raise_error(Chef::Exceptions::UnsupportedPlatform) + expect { resource.validate_identity_platform(username, password, domain) }.to raise_error(Chef::Exceptions::UnsupportedPlatform) end end end @@ -101,7 +100,7 @@ describe Chef::Resource::Execute do shared_examples_for "a consumer of the Execute resource" do context "when running on Windows" do before do - allow(execute_resource).to receive(:node).and_return({ :platform_family => "windows" }) + allow(resource).to receive(:node).and_return({ :platform_family => "windows" }) end context "when no user, domain, or password is specified" do @@ -203,7 +202,7 @@ describe Chef::Resource::Execute do context "when not running on Windows" do before do - allow(execute_resource).to receive(:node).and_return({ :platform_family => "ubuntu" }) + allow(resource).to receive(:node).and_return({ :platform_family => "ubuntu" }) end context "when no user, domain, or password is specified" do |