summaryrefslogtreecommitdiff
path: root/spec/unit/file_content_management/deploy/mv_windows_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/file_content_management/deploy/mv_windows_spec.rb')
-rw-r--r--spec/unit/file_content_management/deploy/mv_windows_spec.rb179
1 files changed, 0 insertions, 179 deletions
diff --git a/spec/unit/file_content_management/deploy/mv_windows_spec.rb b/spec/unit/file_content_management/deploy/mv_windows_spec.rb
deleted file mode 100644
index 7c2a2d7e71..0000000000
--- a/spec/unit/file_content_management/deploy/mv_windows_spec.rb
+++ /dev/null
@@ -1,179 +0,0 @@
-#
-# Author:: Daniel DeLeo (<dan@opscode.com>)
-# Copyright:: Copyright (c) 2013 Opscode, 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'
-
-unless Chef::Platform.windows?
- class Chef
- module ReservedNames
- module Win32
- module Security
- ACL = Object.new
- SecurableObject = Object.new
- end
- end
- end
- end
-end
-
-require 'chef/file_content_management/deploy/mv_windows'
-
-describe Chef::FileContentManagement::Deploy::MvWindows do
-
- let(:content_deployer) { described_class.new }
- let(:target_file_path) { "/etc/my_app.conf" }
-
- describe "creating the file" do
-
- it "touches the file to create it" do
- FileUtils.should_receive(:touch).with(target_file_path)
- content_deployer.create(target_file_path)
- end
- end
-
- describe "updating the file" do
-
- let(:staging_file_path) { "/tmp/random-dir/staging-file.tmp" }
-
- let(:target_file_security_object) do
- double "Securable Object for target file"
- end
-
- let(:updated_target_security_object) do
- double "Securable Object for target file after staging file deploy"
- end
-
- before do
- Chef::ReservedNames::Win32::Security::SecurableObject.
- stub(:new).
- with(target_file_path).
- and_return(target_file_security_object, updated_target_security_object)
-
- end
-
- context "when run without adminstrator privileges" do
- before do
- target_file_security_object.should_receive(:security_descriptor).and_raise(Chef::Exceptions::Win32APIError)
- end
-
- it "errors out with a WindowsNotAdmin error" do
- lambda { content_deployer.deploy(staging_file_path, target_file_path)}.should raise_error(Chef::Exceptions::WindowsNotAdmin)
- end
-
- end
-
- context "when run with administrator privileges" do
-
- let(:original_target_file_owner) { double("original target file owner") }
- let(:original_target_file_group) { double("original target file group") }
-
- let(:target_file_security_descriptor) do
- double "security descriptor for target file",
- :group => original_target_file_group,
- :owner => original_target_file_owner
- end
-
- let(:updated_target_security_descriptor) do
- double "security descriptor for target file"
- end
-
-
- before do
- target_file_security_object.stub(:security_descriptor).and_return(target_file_security_descriptor)
-
- FileUtils.should_receive(:mv).with(staging_file_path, target_file_path)
-
- updated_target_security_object.should_receive(:group=).with(original_target_file_group)
- updated_target_security_object.should_receive(:owner=).with(original_target_file_owner)
- end
-
- context "and the target file has no dacl or sacl" do
-
- before do
- target_file_security_descriptor.stub(:dacl_present?).and_return(false)
- target_file_security_descriptor.stub(:sacl_present?).and_return(false)
- end
-
- it "fixes up permissions and moves the file into place" do
- content_deployer.deploy(staging_file_path, target_file_path)
- end
-
- end
-
- context "and the target has a dacl and sacl" do
- let(:inherited_dacl_ace) { double("Windows dacl ace (inherited)", :inherited? => true) }
- let(:not_inherited_dacl_ace) { double("Windows dacl ace (not inherited)", :inherited? => false) }
-
- let(:original_target_file_dacl) { [inherited_dacl_ace, not_inherited_dacl_ace] }
-
- let(:inherited_sacl_ace) { double("Windows sacl ace (inherited)", :inherited? => true) }
- let(:not_inherited_sacl_ace) { double("Windows sacl ace (not inherited)", :inherited? => false) }
- let(:original_target_file_sacl) { [inherited_sacl_ace, not_inherited_sacl_ace] }
-
- let(:custom_dacl) { double("Windows ACL for non-inherited dacl aces") }
- let(:custom_sacl) { double("Windows ACL for non-inherited sacl aces") }
-
- before do
- target_file_security_descriptor.stub(:dacl_present?).and_return(true)
- target_file_security_descriptor.stub(:dacl_inherits?).and_return(dacl_inherits?)
-
- target_file_security_descriptor.stub(:dacl).and_return(original_target_file_dacl)
- Chef::ReservedNames::Win32::Security::ACL.
- should_receive(:create).
- with([not_inherited_dacl_ace]).
- and_return(custom_dacl)
-
- target_file_security_descriptor.stub(:sacl_present?).and_return(true)
- target_file_security_descriptor.stub(:sacl_inherits?).and_return(sacl_inherits?)
-
- target_file_security_descriptor.stub(:sacl).and_return(original_target_file_sacl)
- Chef::ReservedNames::Win32::Security::ACL.
- should_receive(:create).
- with([not_inherited_sacl_ace]).
- and_return(custom_sacl)
-
- updated_target_security_object.should_receive(:set_dacl).with(custom_dacl, dacl_inherits?)
- updated_target_security_object.should_receive(:set_sacl).with(custom_sacl, sacl_inherits?)
- end
-
- context "and the dacl and sacl don't inherit" do
- let(:dacl_inherits?) { false }
- let(:sacl_inherits?) { false }
-
- it "fixes up permissions and moves the file into place" do
- content_deployer.deploy(staging_file_path, target_file_path)
- end
- end
-
- context "and the dacl and sacl inherit" do
- let(:dacl_inherits?) { true }
- let(:sacl_inherits?) { true }
-
- it "fixes up permissions and moves the file into place" do
- content_deployer.deploy(staging_file_path, target_file_path)
- end
- end
-
- end
-
- end
-
- end
-end
-
-