diff options
author | aliasgar16 <aliasgar.batterywala@msystechnologies.com> | 2017-01-17 17:09:12 +0530 |
---|---|---|
committer | Bryan McLellan <btm@loftninjas.org> | 2017-01-21 10:46:55 -0500 |
commit | a78cd04294cb00e1968ee77c1371842a1a24da7c (patch) | |
tree | a460c8e4a6f67d3aaae9d5b3edfca286f3e1f23d /spec | |
parent | 5b1fe5d74ceeaa89bb5153c0e43c7acecd9b3720 (diff) | |
download | chef-a78cd04294cb00e1968ee77c1371842a1a24da7c.tar.gz |
Added RSpecs.
Signed-off-by: aliasgar16 <aliasgar.batterywala@msystechnologies.com>
Diffstat (limited to 'spec')
-rw-r--r-- | spec/unit/win32/error_spec.rb | 67 | ||||
-rw-r--r-- | spec/unit/win32/security_spec.rb | 66 |
2 files changed, 133 insertions, 0 deletions
diff --git a/spec/unit/win32/error_spec.rb b/spec/unit/win32/error_spec.rb new file mode 100644 index 0000000000..7a2057303d --- /dev/null +++ b/spec/unit/win32/error_spec.rb @@ -0,0 +1,67 @@ +# +# Author:: Aliasgar Batterywala (aliasgar.batterywala@msystechnologies.com) +# Copyright:: Copyright 2017, Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require "spec_helper" +if Chef::Platform.windows? + require "chef/win32/error" + require "chef/win32/api/error" +end + +describe "Chef::Win32::Error", :windows_only do + describe "self.raise!" do + context "code is not passed to the raise! method" do + context "last error received is user_not_found" do + it "raises UserIDNotFound exception" do + expect(Chef::ReservedNames::Win32::Error).to receive(:get_last_error).and_return( + Chef::ReservedNames::Win32::API::Error::ERROR_USER_NOT_FOUND + ) + expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip) + expect{ Chef::ReservedNames::Win32::Error.raise! }.to raise_error Chef::Exceptions::UserIDNotFound + end + end + + context "last error received is not user_not_found" do + it "raises Win32APIError exception" do + expect(Chef::ReservedNames::Win32::Error).to receive(:get_last_error).and_return( + Chef::ReservedNames::Win32::API::Error::ERROR_BAD_USERNAME + ) + expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip).and_return('Bad Username') + expect{ Chef::ReservedNames::Win32::Error.raise! }.to raise_error Chef::Exceptions::Win32APIError + end + end + end + + context "code is passed to the raise! method" do + context "last error received is user_not_found" do + it "raises UserIDNotFound exception" do + expect(Chef::ReservedNames::Win32::Error).to_not receive(:get_last_error) + expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip) + expect{ Chef::ReservedNames::Win32::Error.raise! nil, Chef::ReservedNames::Win32::API::Error::ERROR_USER_NOT_FOUND }.to raise_error Chef::Exceptions::UserIDNotFound + end + end + + context "last error received is not user_not_found" do + it "raises Win32APIError exception" do + expect(Chef::ReservedNames::Win32::Error).to_not receive(:get_last_error) + expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip).and_return('Bad Username') + expect{ Chef::ReservedNames::Win32::Error.raise! nil, Chef::ReservedNames::Win32::API::Error::ERROR_BAD_USERNAME }.to raise_error Chef::Exceptions::Win32APIError + end + end + end + end +end diff --git a/spec/unit/win32/security_spec.rb b/spec/unit/win32/security_spec.rb new file mode 100644 index 0000000000..8634526d39 --- /dev/null +++ b/spec/unit/win32/security_spec.rb @@ -0,0 +1,66 @@ +# +# Author:: Aliasgar Batterywala (aliasgar.batterywala@msystechnologies.com) +# Copyright:: Copyright 2017, Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require "spec_helper" +if Chef::Platform.windows? + require "chef/win32/error" + require "chef/win32/security" + require "chef/win32/api/error" +end + +describe "Chef::Win32::Security", :windows_only do + describe "self.get_named_security_info" do + context "when HR result is ERROR_SUCCESS" do + it "does not raise the exception" do + expect(Chef::ReservedNames::Win32::Security).to receive(:GetNamedSecurityInfoW).and_return( + Chef::ReservedNames::Win32::API::Error::ERROR_SUCCESS + ) + expect { Chef::ReservedNames::Win32::Security.get_named_security_info '/temp_path' }.to_not raise_error + end + end + + context "when HR result is not ERROR_SUCCESS and not ERROR_USER_NOT_FOUND" do + it "raises Win32APIError exception" do + expect(Chef::ReservedNames::Win32::Security).to receive(:GetNamedSecurityInfoW).and_return( + Chef::ReservedNames::Win32::API::Error::ERROR_INVALID_ACCESS + ) + expect { Chef::ReservedNames::Win32::Security.get_named_security_info '/temp_path' }.to raise_error Chef::Exceptions::Win32APIError + end + end + end + + describe "self.set_named_security_info" do + context "when HR result is ERROR_SUCCESS" do + it "does not raise the exception" do + expect(Chef::ReservedNames::Win32::Security).to receive(:SetNamedSecurityInfoW).and_return( + Chef::ReservedNames::Win32::API::Error::ERROR_SUCCESS + ) + expect { Chef::ReservedNames::Win32::Security.set_named_security_info '/temp_path', :SE_FILE_OBJECT, {} }.to_not raise_error + end + end + + context "when HR result is not ERROR_SUCCESS but it is ERROR_USER_NOT_FOUND" do + it "raises UserIDNotFound exception" do + expect(Chef::ReservedNames::Win32::Security).to receive(:SetNamedSecurityInfoW).and_return( + Chef::ReservedNames::Win32::API::Error::ERROR_USER_NOT_FOUND + ) + expect { Chef::ReservedNames::Win32::Security.set_named_security_info '/temp_path', :SE_FILE_OBJECT, {} }.to raise_error Chef::Exceptions::Chef::Exceptions::UserIDNotFound + end + end + end +end |