summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/unit/provider/osx_profile_spec.rb255
-rw-r--r--spec/unit/provider_resolver_spec.rb2
-rw-r--r--spec/unit/resource/osx_profile_spec.rb233
3 files changed, 234 insertions, 256 deletions
diff --git a/spec/unit/provider/osx_profile_spec.rb b/spec/unit/provider/osx_profile_spec.rb
deleted file mode 100644
index 9554f235f3..0000000000
--- a/spec/unit/provider/osx_profile_spec.rb
+++ /dev/null
@@ -1,255 +0,0 @@
-#
-# Author:: Nate Walck (<nate.walck@gmail.com>)
-# Copyright:: Copyright 2015-2016, Chef, 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"
-
-describe Chef::Provider::OsxProfile do
- let(:shell_out_success) do
- double("shell_out", exitstatus: 0, error?: false)
- end
- describe "action_create" do
- let(:node) { Chef::Node.new }
- let(:events) { Chef::EventDispatch::Dispatcher.new }
- let(:run_context) { Chef::RunContext.new(node, {}, events) }
- let(:new_resource) { Chef::Resource::OsxProfile.new("Profile Test", run_context) }
- let(:provider) { Chef::Provider::OsxProfile.new(new_resource, run_context) }
- let(:all_profiles) do
- { "_computerlevel" => [{ "ProfileDisplayName" => "Finder Settings",
- "ProfileIdentifier" => "com.apple.finder",
- "ProfileInstallDate" => "2015-11-08 23:15:21 +0000",
- "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.finder" => { "Forced" => [{ "mcx_preference_settings" => { "ShowExternalHardDrivesOnDesktop" => false } }] } } },
- "PayloadDisplayName" => "Custom: (com.apple.finder)",
- "PayloadIdentifier" => "com.apple.finder",
- "PayloadType" => "com.apple.ManagedClient.preferences",
- "PayloadUUID" => "a017048f-684b-4e81-baa3-43afe316d739",
- "PayloadVersion" => 1 }],
- "ProfileOrganization" => "Chef",
- "ProfileRemovalDisallowed" => "false",
- "ProfileType" => "Configuration",
- "ProfileUUID" => "e2e09bef-e673-44a6-bcbe-ecb5f1c1b740",
- "ProfileVerificationState" => "unsigned",
- "ProfileVersion" => 1 },
- { "ProfileDisplayName" => "ScreenSaver Settings",
- "ProfileIdentifier" => "com.testprofile.screensaver",
- "ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
- "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
- "PayloadDisplayName" => "Custom: (com.apple.screensaver)",
- "PayloadIdentifier" => "com.apple.screensaver",
- "PayloadType" => "com.apple.ManagedClient.preferences",
- "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c110",
- "PayloadVersion" => 1 }],
- "ProfileOrganization" => "Chef",
- "ProfileRemovalDisallowed" => "false",
- "ProfileType" => "Configuration",
- "ProfileUUID" => "6e95927c-f200-54b4-85c7-52ab99b61c47",
- "ProfileVerificationState" => "unsigned",
- "ProfileVersion" => 1 }],
- }
- end
- # If anything is changed within this profile, be sure to update the
- # ProfileUUID in all_profiles to match the new config specific UUID
- let(:test_profile) do
- {
- "PayloadIdentifier" => "com.testprofile.screensaver",
- "PayloadRemovalDisallowed" => false,
- "PayloadScope" => "System",
- "PayloadType" => "Configuration",
- "PayloadUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
- "PayloadOrganization" => "Chef",
- "PayloadVersion" => 1,
- "PayloadDisplayName" => "Screensaver Settings",
- "PayloadContent" => [
- {
- "PayloadType" => "com.apple.ManagedClient.preferences",
- "PayloadVersion" => 1,
- "PayloadIdentifier" => "com.testprofile.screensaver",
- "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c108",
- "PayloadEnabled" => true,
- "PayloadDisplayName" => "com.apple.screensaver",
- "PayloadContent" => {
- "com.apple.screensaver" => {
- "Forced" => [
- {
- "mcx_preference_settings" => {
- "idleTime" => 0,
- },
- },
- ],
- },
- },
- },
- ],
- }
- end
- let(:no_profiles) do
- {}
- end
-
- before(:each) do
- allow(provider).to receive(:cookbook_file_available?).and_return(true)
- allow(provider).to receive(:cache_cookbook_profile).and_return("/tmp/test.mobileconfig.remote")
- allow(provider).to receive(:get_new_profile_hash).and_return(test_profile)
- allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
- allow(provider).to receive(:read_plist).and_return(all_profiles)
- allow(::File).to receive(:unlink).and_return(true)
- end
-
- it "should build the get all profiles shellout command correctly" do
- profile_name = "com.testprofile.screensaver.mobileconfig"
- tempfile = "/tmp/allprofiles.plist"
- new_resource.profile_name profile_name
- allow(provider).to receive(:generate_tempfile).and_return(tempfile)
- allow(provider).to receive(:get_installed_profiles).and_call_original
- allow(provider).to receive(:read_plist).and_return(all_profiles)
- expect(provider).to receive(:shell_out_compacted!).with("/usr/bin/profiles", "-P", "-o", "/tmp/allprofiles.plist")
- provider.load_current_resource
- end
-
- it "should use profile name as profile when no profile is set" do
- profile_name = "com.testprofile.screensaver.mobileconfig"
- new_resource.profile_name profile_name
- provider.load_current_resource
- expect(new_resource.profile_name).to eql(profile_name)
- end
-
- it "should use identifier from specified profile" do
- new_resource.profile test_profile
- provider.load_current_resource
- expect(
- provider.instance_variable_get(:@new_profile_identifier)
- ).to eql(test_profile["PayloadIdentifier"])
- end
-
- it "should install when not installed" do
- new_resource.profile test_profile
- allow(provider).to receive(:get_installed_profiles).and_return(no_profiles)
- provider.load_current_resource
- expect(provider).to receive(:install_profile)
- expect { provider.run_action(:install) }.to_not raise_error
- end
-
- it "does not install if the profile is already installed" do
- new_resource.profile test_profile
- allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
- provider.load_current_resource
- expect(provider).to_not receive(:install_profile)
- expect { provider.action_install }.to_not raise_error
- end
-
- it "should install when installed but uuid differs" do
- new_resource.profile test_profile
- all_profiles["_computerlevel"][1]["ProfileUUID"] = "1781fbec-3325-565f-9022-9bb39245d4dd"
- provider.load_current_resource
- expect(provider).to receive(:install_profile)
- expect { provider.run_action(:install) }.to_not raise_error
- end
-
- it "should build the shellout install command correctly" do
- profile_path = "/tmp/test.mobileconfig"
- new_resource.profile test_profile
- # Change the profile so it triggers an install
- all_profiles["_computerlevel"][1]["ProfileUUID"] = "1781fbec-3325-565f-9022-9bb39245d4dd"
- provider.load_current_resource
- allow(provider).to receive(:write_profile_to_disk).and_return(profile_path)
- expect(provider).to receive(:shell_out_compacted).with("/usr/bin/profiles", "-I", "-F", profile_path).and_return(shell_out_success)
- provider.action_install
- end
-
- it "should fail if there is no identifier inside the profile" do
- test_profile.delete("PayloadIdentifier")
- new_resource.profile test_profile
- error_message = "The specified profile does not seem to be valid"
- expect { provider.run_action(:install) }.to raise_error(RuntimeError, error_message)
- end
-
- end
-
- describe "action_remove" do
- let(:node) { Chef::Node.new }
- let(:events) { Chef::EventDispatch::Dispatcher.new }
- let(:run_context) { Chef::RunContext.new(node, {}, events) }
- let(:new_resource) { Chef::Resource::OsxProfile.new("Profile Test", run_context) }
- let(:provider) { Chef::Provider::OsxProfile.new(new_resource, run_context) }
- let(:current_resource) { Chef::Resource::OsxProfile.new("Profile Test") }
- let(:all_profiles) do
- { "_computerlevel" => [{ "ProfileDisplayName" => "ScreenSaver Settings",
- "ProfileIdentifier" => "com.apple.screensaver",
- "ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
- "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
- "PayloadDisplayName" => "Custom: (com.apple.screensaver)",
- "PayloadIdentifier" => "com.apple.screensaver",
- "PayloadType" => "com.apple.ManagedClient.preferences",
- "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c108",
- "PayloadVersion" => 1 }],
- "ProfileOrganization" => "Chef",
- "ProfileRemovalDisallowed" => "false",
- "ProfileType" => "Configuration",
- "ProfileUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
- "ProfileVerificationState" => "unsigned",
- "ProfileVersion" => 1 },
- { "ProfileDisplayName" => "ScreenSaver Settings",
- "ProfileIdentifier" => "com.testprofile.screensaver",
- "ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
- "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
- "PayloadDisplayName" => "Custom: (com.apple.screensaver)",
- "PayloadIdentifier" => "com.apple.screensaver",
- "PayloadType" => "com.apple.ManagedClient.preferences",
- "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c110",
- "PayloadVersion" => 1 }],
- "ProfileOrganization" => "Chef",
- "ProfileRemovalDisallowed" => "false",
- "ProfileType" => "Configuration",
- "ProfileUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
- "ProfileVerificationState" => "unsigned",
- "ProfileVersion" => 1 }],
- }
- end
- before(:each) do
- provider.current_resource = current_resource
- allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
- end
-
- it "should use resource name for identifier when not specified" do
- new_resource.profile_name "com.testprofile.screensaver"
- new_resource.action(:remove)
- provider.load_current_resource
- expect(provider.instance_variable_get(:@new_profile_identifier)).to eql(new_resource.profile_name)
- end
-
- it "should use specified identifier" do
- new_resource.identifier "com.testprofile.screensaver"
- new_resource.action(:remove)
- provider.load_current_resource
- expect(provider.instance_variable_get(:@new_profile_identifier)).to eql(new_resource.identifier)
- end
-
- it "should work with spaces in the identifier" do
- provider.action = :remove
- provider.define_resource_requirements
- expect { provider.process_resource_requirements }.not_to raise_error
- end
-
- it "should build the shellout remove command correctly" do
- new_resource.identifier "com.testprofile.screensaver"
- new_resource.action(:remove)
- provider.load_current_resource
- expect(provider).to receive(:shell_out_compacted).with("/usr/bin/profiles", "-R", "-p", new_resource.identifier).and_return(shell_out_success)
- provider.action_remove
- end
- end
-end
diff --git a/spec/unit/provider_resolver_spec.rb b/spec/unit/provider_resolver_spec.rb
index dc8619a663..f4212e3a8d 100644
--- a/spec/unit/provider_resolver_spec.rb
+++ b/spec/unit/provider_resolver_spec.rb
@@ -722,7 +722,7 @@ describe Chef::ProviderResolver do
%w{mac_os_x mac_os_x_server} => {
group: [ Chef::Resource::Group, Chef::Provider::Group::Dscl ],
package: [ Chef::Resource::HomebrewPackage, Chef::Provider::Package::Homebrew ],
- osx_profile: [ Chef::Resource::OsxProfile, Chef::Provider::OsxProfile],
+ osx_profile: [ Chef::Resource::OsxProfile],
user: [ Chef::Resource::User::DsclUser, Chef::Provider::User::Dscl ],
"mac_os_x" => {
diff --git a/spec/unit/resource/osx_profile_spec.rb b/spec/unit/resource/osx_profile_spec.rb
index 5653044358..a9acadced8 100644
--- a/spec/unit/resource/osx_profile_spec.rb
+++ b/spec/unit/resource/osx_profile_spec.rb
@@ -58,4 +58,237 @@ describe Chef::Resource::OsxProfile do
resource.profile test_profile
expect(resource.profile).to be_a(Hash)
end
+
+ let(:shell_out_success) do
+ double("shell_out", exitstatus: 0, error?: false)
+ end
+
+ describe "action_create" do
+ let(:node) { Chef::Node.new }
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
+ let(:resource) { Chef::Resource::OsxProfile.new("Profile Test", run_context) }
+ let(:provider) { resource.provider_for_action(:create) }
+ let(:all_profiles) do
+ { "_computerlevel" => [{ "ProfileDisplayName" => "Finder Settings",
+ "ProfileIdentifier" => "com.apple.finder",
+ "ProfileInstallDate" => "2015-11-08 23:15:21 +0000",
+ "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.finder" => { "Forced" => [{ "mcx_preference_settings" => { "ShowExternalHardDrivesOnDesktop" => false } }] } } },
+ "PayloadDisplayName" => "Custom: (com.apple.finder)",
+ "PayloadIdentifier" => "com.apple.finder",
+ "PayloadType" => "com.apple.ManagedClient.preferences",
+ "PayloadUUID" => "a017048f-684b-4e81-baa3-43afe316d739",
+ "PayloadVersion" => 1 }],
+ "ProfileOrganization" => "Chef",
+ "ProfileRemovalDisallowed" => "false",
+ "ProfileType" => "Configuration",
+ "ProfileUUID" => "e2e09bef-e673-44a6-bcbe-ecb5f1c1b740",
+ "ProfileVerificationState" => "unsigned",
+ "ProfileVersion" => 1 },
+ { "ProfileDisplayName" => "ScreenSaver Settings",
+ "ProfileIdentifier" => "com.testprofile.screensaver",
+ "ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
+ "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
+ "PayloadDisplayName" => "Custom: (com.apple.screensaver)",
+ "PayloadIdentifier" => "com.apple.screensaver",
+ "PayloadType" => "com.apple.ManagedClient.preferences",
+ "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c110",
+ "PayloadVersion" => 1 }],
+ "ProfileOrganization" => "Chef",
+ "ProfileRemovalDisallowed" => "false",
+ "ProfileType" => "Configuration",
+ "ProfileUUID" => "6e95927c-f200-54b4-85c7-52ab99b61c47",
+ "ProfileVerificationState" => "unsigned",
+ "ProfileVersion" => 1 }],
+ }
+ end
+ # If anything is changed within this profile, be sure to update the
+ # ProfileUUID in all_profiles to match the new config specific UUID
+ let(:test_profile) do
+ {
+ "PayloadIdentifier" => "com.testprofile.screensaver",
+ "PayloadRemovalDisallowed" => false,
+ "PayloadScope" => "System",
+ "PayloadType" => "Configuration",
+ "PayloadUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
+ "PayloadOrganization" => "Chef",
+ "PayloadVersion" => 1,
+ "PayloadDisplayName" => "Screensaver Settings",
+ "PayloadContent" => [
+ {
+ "PayloadType" => "com.apple.ManagedClient.preferences",
+ "PayloadVersion" => 1,
+ "PayloadIdentifier" => "com.testprofile.screensaver",
+ "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c108",
+ "PayloadEnabled" => true,
+ "PayloadDisplayName" => "com.apple.screensaver",
+ "PayloadContent" => {
+ "com.apple.screensaver" => {
+ "Forced" => [
+ {
+ "mcx_preference_settings" => {
+ "idleTime" => 0,
+ },
+ },
+ ],
+ },
+ },
+ },
+ ],
+ }
+ end
+ let(:no_profiles) do
+ {}
+ end
+
+ before(:each) do
+ allow(provider).to receive(:cookbook_file_available?).and_return(true)
+ allow(provider).to receive(:cache_cookbook_profile).and_return("/tmp/test.mobileconfig.remote")
+ allow(provider).to receive(:get_new_profile_hash).and_return(test_profile)
+ allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
+ allow(provider).to receive(:read_plist).and_return(all_profiles)
+ allow(::File).to receive(:unlink).and_return(true)
+ end
+
+ it "should build the get all profiles shellout command correctly" do
+ profile_name = "com.testprofile.screensaver.mobileconfig"
+ resource.profile_name profile_name
+ allow(provider).to receive(:get_installed_profiles).and_call_original
+ allow(provider).to receive(:read_plist).and_return(all_profiles)
+ expect(provider).to receive(:shell_out_compacted!).with("/usr/bin/profiles", "-P", "-o", kind_of(String))
+ provider.load_current_resource
+ end
+
+ it "should use profile name as profile when no profile is set" do
+ profile_name = "com.testprofile.screensaver.mobileconfig"
+ resource.profile_name profile_name
+ provider.load_current_resource
+ expect(resource.profile_name).to eql(profile_name)
+ end
+
+ it "should use identifier from specified profile" do
+ resource.profile test_profile
+ provider.load_current_resource
+ expect(
+ provider.instance_variable_get(:@new_profile_identifier)
+ ).to eql(test_profile["PayloadIdentifier"])
+ end
+
+ it "should install when not installed" do
+ resource.profile test_profile
+ allow(provider).to receive(:get_installed_profiles).and_return(no_profiles)
+ provider.load_current_resource
+ expect(provider).to receive(:install_profile)
+ expect { provider.run_action(:install) }.to_not raise_error
+ end
+
+ it "does not install if the profile is already installed" do
+ resource.profile test_profile
+ allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
+ provider.load_current_resource
+ expect(provider).to_not receive(:install_profile)
+ expect { provider.action_install }.to_not raise_error
+ end
+
+ it "should install when installed but uuid differs" do
+ resource.profile test_profile
+ all_profiles["_computerlevel"][1]["ProfileUUID"] = "1781fbec-3325-565f-9022-9bb39245d4dd"
+ provider.load_current_resource
+ expect(provider).to receive(:install_profile)
+ expect { provider.run_action(:install) }.to_not raise_error
+ end
+
+ it "should build the shellout install command correctly" do
+ profile_path = "/tmp/test.mobileconfig"
+ resource.profile test_profile
+ # Change the profile so it triggers an install
+ all_profiles["_computerlevel"][1]["ProfileUUID"] = "1781fbec-3325-565f-9022-9bb39245d4dd"
+ provider.load_current_resource
+ allow(provider).to receive(:write_profile_to_disk).and_return(profile_path)
+ expect(provider).to receive(:shell_out_compacted!).with("/usr/bin/profiles", "-I", "-F", profile_path).and_return(shell_out_success)
+ provider.action_install
+ end
+
+ it "should fail if there is no identifier inside the profile" do
+ test_profile.delete("PayloadIdentifier")
+ resource.profile test_profile
+ error_message = "The specified profile does not seem to be valid"
+ expect { provider.run_action(:install) }.to raise_error(RuntimeError, error_message)
+ end
+ end
+
+ describe "action_remove" do
+ let(:node) { Chef::Node.new }
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
+ let(:resource) { Chef::Resource::OsxProfile.new("Profile Test", run_context) }
+ let(:provider) { resource.provider_for_action(:remove) }
+ let(:current_resource) { Chef::Resource::OsxProfile.new("Profile Test") }
+ let(:all_profiles) do
+ { "_computerlevel" => [{ "ProfileDisplayName" => "ScreenSaver Settings",
+ "ProfileIdentifier" => "com.apple.screensaver",
+ "ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
+ "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
+ "PayloadDisplayName" => "Custom: (com.apple.screensaver)",
+ "PayloadIdentifier" => "com.apple.screensaver",
+ "PayloadType" => "com.apple.ManagedClient.preferences",
+ "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c108",
+ "PayloadVersion" => 1 }],
+ "ProfileOrganization" => "Chef",
+ "ProfileRemovalDisallowed" => "false",
+ "ProfileType" => "Configuration",
+ "ProfileUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
+ "ProfileVerificationState" => "unsigned",
+ "ProfileVersion" => 1 },
+ { "ProfileDisplayName" => "ScreenSaver Settings",
+ "ProfileIdentifier" => "com.testprofile.screensaver",
+ "ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
+ "ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
+ "PayloadDisplayName" => "Custom: (com.apple.screensaver)",
+ "PayloadIdentifier" => "com.apple.screensaver",
+ "PayloadType" => "com.apple.ManagedClient.preferences",
+ "PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c110",
+ "PayloadVersion" => 1 }],
+ "ProfileOrganization" => "Chef",
+ "ProfileRemovalDisallowed" => "false",
+ "ProfileType" => "Configuration",
+ "ProfileUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
+ "ProfileVerificationState" => "unsigned",
+ "ProfileVersion" => 1 }],
+ }
+ end
+
+ before(:each) do
+ provider.current_resource = current_resource
+ allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
+ end
+
+ it "should use resource name for identifier when not specified" do
+ resource.profile_name "com.testprofile.screensaver"
+ resource.action(:remove)
+ provider.load_current_resource
+ expect(provider.instance_variable_get(:@new_profile_identifier)).to eql(resource.profile_name)
+ end
+
+ it "should use specified identifier" do
+ resource.identifier "com.testprofile.screensaver"
+ resource.action(:remove)
+ provider.load_current_resource
+ expect(provider.instance_variable_get(:@new_profile_identifier)).to eql(resource.identifier)
+ end
+
+ it "should work with spaces in the identifier" do
+ provider.action = :remove
+ provider.define_resource_requirements
+ expect { provider.process_resource_requirements }.not_to raise_error
+ end
+
+ it "should build the shellout remove command correctly" do
+ resource.identifier "com.testprofile.screensaver"
+ resource.action(:remove)
+ provider.load_current_resource
+ expect(provider).to receive(:shell_out_compacted!).with("/usr/bin/profiles", "-R", "-p", resource.identifier).and_return(shell_out_success)
+ provider.action_remove
+ end
+ end
end