diff options
author | Jacob Helwig <jacob@puppetlabs.com> | 2011-04-22 15:03:17 -0700 |
---|---|---|
committer | Jacob Helwig <jacob@puppetlabs.com> | 2011-04-22 15:08:03 -0700 |
commit | c306db2037a12fcf5064ab496b96eaa3011d5e71 (patch) | |
tree | 7a750e930eb6fbfb8c3593fc5dd85d08a1777a23 | |
parent | 0008b630f8bd6c5dbeb96fd0f097dd15c22ffaf4 (diff) | |
download | puppet-c306db2037a12fcf5064ab496b96eaa3011d5e71.tar.gz puppet-c306db2037a12fcf5064ab496b96eaa3011d5e71.tar.xz puppet-c306db2037a12fcf5064ab496b96eaa3011d5e71.zip |
(#6487) Add some testing for OS X version support in DirectoryService provider
This adds some basic testing around whether url, or plist data is used
for the various versions of OS X. Unfortunately this involves
stubbing larger sections of the implementation than we'd like, but
this did not attempt to re-structure the implementation at all.
Paired-with: Josh Cooper <josh@puppetlabs.com>
-rwxr-xr-x | spec/unit/provider/nameservice/directoryservice_spec.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/unit/provider/nameservice/directoryservice_spec.rb b/spec/unit/provider/nameservice/directoryservice_spec.rb index 661899db9..07f75e3f4 100755 --- a/spec/unit/provider/nameservice/directoryservice_spec.rb +++ b/spec/unit/provider/nameservice/directoryservice_spec.rb @@ -36,3 +36,63 @@ require File.dirname(__FILE__) + '/../../../spec_helper' end end end + +describe 'DirectoryService.single_report' do + it 'should fail on OS X < 10.4' do + Puppet::Provider::NameService::DirectoryService.stubs(:get_macosx_version_major).returns("10.3") + + lambda { + Puppet::Provider::NameService::DirectoryService.single_report('resource_name') + }.should raise_error(RuntimeError, "Puppet does not support OS X versions < 10.4") + end + + it 'should use url data on 10.4' do + Puppet::Provider::NameService::DirectoryService.stubs(:get_macosx_version_major).returns("10.4") + Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users') + Puppet::Provider::NameService::DirectoryService.stubs(:list_all_present).returns( + ['root', 'user1', 'user2', 'resource_name'] + ) + Puppet::Provider::NameService::DirectoryService.stubs(:generate_attribute_hash) + Puppet::Provider::NameService::DirectoryService.stubs(:execute) + Puppet::Provider::NameService::DirectoryService.expects(:parse_dscl_url_data) + + Puppet::Provider::NameService::DirectoryService.single_report('resource_name') + end + + it 'should use plist data on > 10.4' do + Puppet::Provider::NameService::DirectoryService.stubs(:get_macosx_version_major).returns("10.5") + Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users') + Puppet::Provider::NameService::DirectoryService.stubs(:list_all_present).returns( + ['root', 'user1', 'user2', 'resource_name'] + ) + Puppet::Provider::NameService::DirectoryService.stubs(:generate_attribute_hash) + Puppet::Provider::NameService::DirectoryService.stubs(:execute) + Puppet::Provider::NameService::DirectoryService.expects(:parse_dscl_plist_data) + + Puppet::Provider::NameService::DirectoryService.single_report('resource_name') + end +end + +describe 'DirectoryService.get_exec_preamble' do + it 'should fail on OS X < 10.4' do + Puppet::Provider::NameService::DirectoryService.stubs(:get_macosx_version_major).returns("10.3") + + lambda { + Puppet::Provider::NameService::DirectoryService.get_exec_preamble('-list') + }.should raise_error(RuntimeError, "Puppet does not support OS X versions < 10.4") + end + + it 'should use url data on 10.4' do + Puppet::Provider::NameService::DirectoryService.stubs(:get_macosx_version_major).returns("10.4") + Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users') + + Puppet::Provider::NameService::DirectoryService.get_exec_preamble('-list').should include("-url") + end + + it 'should use plist data on > 10.4' do + Puppet::Provider::NameService::DirectoryService.stubs(:get_macosx_version_major).returns("10.5") + Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users') + + Puppet::Provider::NameService::DirectoryService.get_exec_preamble('-list').should include("-plist") + end +end |