@@ -925,28 +925,75 @@ module Puppet::Util::Plist
925925 }
926926 end
927927
928- it 'should call set_salted_sha512 on 10.7 when given a salted-SHA512 password hash' do
929- expect ( provider ) . to receive ( :get_users_plist ) . and_return ( sample_users_plist )
930- expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( sample_users_plist ) . and_return ( sha512_shadowhashdata )
931- expect ( provider . class ) . to receive ( :get_os_version ) . and_return ( '10.7' )
932- expect ( provider ) . to receive ( :set_salted_sha512 ) . with ( sample_users_plist , sha512_shadowhashdata , sha512_password_hash )
933- provider . write_password_to_users_plist ( sha512_password_hash )
928+ before do
929+ allow ( provider ) . to receive ( :merge_attribute_with_dscl ) . with ( 'Users' , username , 'AuthenticationAuthority' , any_args )
934930 end
935931
936- it 'should call set_salted_pbkdf2 on 10.8 when given a PBKDF2 password hash' do
937- expect ( provider ) . to receive ( :get_users_plist ) . and_return ( sample_users_plist )
938- expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( sample_users_plist ) . and_return ( pbkdf2_shadowhashdata )
939- expect ( provider . class ) . to receive ( :get_os_version ) . and_return ( '10.8' )
940- expect ( provider ) . to receive ( :set_salted_pbkdf2 ) . with ( sample_users_plist , pbkdf2_shadowhashdata , 'entropy' , pbkdf2_password_hash )
941- provider . write_password_to_users_plist ( pbkdf2_password_hash )
932+ describe 'when on macOS 11 (Big Sur) or greater' do
933+ before do
934+ allow ( provider . class ) . to receive ( :get_os_version ) . and_return ( '11.0.0' )
935+ end
936+
937+ it 'should add salted_sha512_pbkdf2 AuthenticationAuthority key if missing' do
938+ expect ( provider ) . to receive ( :get_users_plist ) . and_return ( sample_users_plist )
939+ expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( sample_users_plist ) . and_return ( pbkdf2_shadowhashdata )
940+ expect ( provider ) . to receive ( :set_salted_pbkdf2 ) . with ( sample_users_plist , pbkdf2_shadowhashdata , 'entropy' , pbkdf2_password_hash )
941+ expect ( provider ) . to receive ( :needs_sha512_pbkdf2_authentication_authority_to_be_added? ) . and_return ( true )
942+
943+ expect ( Puppet ) . to receive ( :debug ) . with ( "Adding 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash to user 'nonexistent_user'" )
944+ provider . write_password_to_users_plist ( pbkdf2_password_hash )
945+ end
946+
947+ it 'should not add salted_sha512_pbkdf2 AuthenticationAuthority key if not missing' do
948+ expect ( provider ) . to receive ( :get_users_plist ) . and_return ( sample_users_plist )
949+ expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( sample_users_plist ) . and_return ( pbkdf2_shadowhashdata )
950+ expect ( provider ) . to receive ( :set_salted_pbkdf2 ) . with ( sample_users_plist , pbkdf2_shadowhashdata , 'entropy' , pbkdf2_password_hash )
951+ expect ( provider ) . to receive ( :needs_sha512_pbkdf2_authentication_authority_to_be_added? ) . and_return ( false )
952+
953+ expect ( Puppet ) . not_to receive ( :debug ) . with ( "Adding 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash to user 'nonexistent_user'" )
954+ provider . write_password_to_users_plist ( pbkdf2_password_hash )
955+ end
942956 end
943957
944- it "should delete the SALTED-SHA512 key in the shadow_hash_data hash if it exists on a 10.8 system and write_password_to_users_plist has been called to set the user's password" do
945- expect ( provider ) . to receive ( :get_users_plist ) . and_return ( 'users_plist' )
946- expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( 'users_plist' ) . and_return ( sha512_shadowhashdata )
947- expect ( provider . class ) . to receive ( :get_os_version ) . and_return ( '10.8' )
948- expect ( provider ) . to receive ( :set_salted_pbkdf2 ) . with ( 'users_plist' , { } , 'entropy' , pbkdf2_password_hash )
949- provider . write_password_to_users_plist ( pbkdf2_password_hash )
958+ describe 'when on macOS version lower than 11' do
959+ before do
960+ allow ( provider . class ) . to receive ( :get_os_version )
961+ allow ( provider ) . to receive ( :needs_sha512_pbkdf2_authentication_authority_to_be_added? ) . and_return ( false )
962+ end
963+
964+ it 'should not add salted_sha512_pbkdf2 AuthenticationAuthority' do
965+ expect ( provider ) . to receive ( :get_users_plist ) . and_return ( sample_users_plist )
966+ expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( sample_users_plist ) . and_return ( pbkdf2_shadowhashdata )
967+ expect ( provider ) . to receive ( :set_salted_pbkdf2 ) . with ( sample_users_plist , pbkdf2_shadowhashdata , 'entropy' , pbkdf2_password_hash )
968+ expect ( provider ) . to receive ( :needs_sha512_pbkdf2_authentication_authority_to_be_added? ) . and_return ( false )
969+
970+ expect ( Puppet ) . not_to receive ( :debug ) . with ( "Adding 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash to user 'nonexistent_user'" )
971+ provider . write_password_to_users_plist ( pbkdf2_password_hash )
972+ end
973+
974+ it 'should call set_salted_sha512 on 10.7 when given a salted-SHA512 password hash' do
975+ expect ( provider ) . to receive ( :get_users_plist ) . and_return ( sample_users_plist )
976+ expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( sample_users_plist ) . and_return ( sha512_shadowhashdata )
977+ expect ( provider . class ) . to receive ( :get_os_version ) . and_return ( '10.7' )
978+ expect ( provider ) . to receive ( :set_salted_sha512 ) . with ( sample_users_plist , sha512_shadowhashdata , sha512_password_hash )
979+ provider . write_password_to_users_plist ( sha512_password_hash )
980+ end
981+
982+ it 'should call set_salted_pbkdf2 on 10.8 when given a PBKDF2 password hash' do
983+ expect ( provider ) . to receive ( :get_users_plist ) . and_return ( sample_users_plist )
984+ expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( sample_users_plist ) . and_return ( pbkdf2_shadowhashdata )
985+ expect ( provider . class ) . to receive ( :get_os_version ) . and_return ( '10.8' )
986+ expect ( provider ) . to receive ( :set_salted_pbkdf2 ) . with ( sample_users_plist , pbkdf2_shadowhashdata , 'entropy' , pbkdf2_password_hash )
987+ provider . write_password_to_users_plist ( pbkdf2_password_hash )
988+ end
989+
990+ it "should delete the SALTED-SHA512 key in the shadow_hash_data hash if it exists on a 10.8 system and write_password_to_users_plist has been called to set the user's password" do
991+ expect ( provider ) . to receive ( :get_users_plist ) . and_return ( 'users_plist' )
992+ expect ( provider ) . to receive ( :get_shadow_hash_data ) . with ( 'users_plist' ) . and_return ( sha512_shadowhashdata )
993+ expect ( provider . class ) . to receive ( :get_os_version ) . and_return ( '10.8' )
994+ expect ( provider ) . to receive ( :set_salted_pbkdf2 ) . with ( 'users_plist' , { } , 'entropy' , pbkdf2_password_hash )
995+ provider . write_password_to_users_plist ( pbkdf2_password_hash )
996+ end
950997 end
951998 end
952999
@@ -1203,6 +1250,7 @@ module Puppet::Util::Plist
12031250 before :each do
12041251 allow ( provider . class ) . to receive ( :get_all_users ) . and_return ( all_users_hash )
12051252 allow ( provider . class ) . to receive ( :get_list_of_groups ) . and_return ( group_plist_hash_guid )
1253+ allow ( provider ) . to receive ( :merge_attribute_with_dscl ) . with ( 'Users' , username , 'AuthenticationAuthority' , any_args )
12061254 provider . class . prefetch ( { } )
12071255 end
12081256
0 commit comments