diff --git a/lib/puppet/parser/functions/mysql_password.rb b/lib/puppet/parser/functions/mysql_password.rb index f057a31..b8a6cda 100644 --- a/lib/puppet/parser/functions/mysql_password.rb +++ b/lib/puppet/parser/functions/mysql_password.rb @@ -10,6 +10,7 @@ module Puppet::Parser::Functions raise(Puppet::ParseError, 'mysql_password(): Wrong number of arguments ' + "given (#{args.size} for 1)") if args.size != 1 + return '' if args[0].empty? '*' + Digest::SHA1.hexdigest(Digest::SHA1.digest(args[0])).upcase end end diff --git a/lib/puppet/type/mysql_user.rb b/lib/puppet/type/mysql_user.rb index c408ccd..dbff3da 100644 --- a/lib/puppet/type/mysql_user.rb +++ b/lib/puppet/type/mysql_user.rb @@ -37,7 +37,7 @@ Puppet::Type.newtype(:mysql_user) do newproperty(:password_hash) do desc 'The password hash of the user. Use mysql_password() for creating such a hash.' - newvalue(/\w+/) + newvalue(/\w*/) end newproperty(:max_user_connections) do diff --git a/spec/unit/puppet/functions/mysql_password_spec.rb b/spec/unit/puppet/functions/mysql_password_spec.rb index 77726d1..14aebd9 100644 --- a/spec/unit/puppet/functions/mysql_password_spec.rb +++ b/spec/unit/puppet/functions/mysql_password_spec.rb @@ -23,5 +23,10 @@ describe 'the mysql_password function' do result = scope.function_mysql_password(%w(password)) expect(result).to(eq('*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19')) end + + it 'should convert an empty password into a empty string' do + result = scope.function_mysql_password([""]) + expect(result).to(eq('')) + end end