Merge pull request #505 from larsks/bz/1093367
lowercase hostname values in qualified usernames
This commit is contained in:
commit
b39ebdcf74
4 changed files with 71 additions and 26 deletions
|
@ -16,6 +16,11 @@ Puppet::Type.newtype(:database_user) do
|
||||||
raise ArgumentError, 'MySQL usernames are limited to a maximum of 16 characters'
|
raise ArgumentError, 'MySQL usernames are limited to a maximum of 16 characters'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
munge do |value|
|
||||||
|
user_part, host_part = value.split('@')
|
||||||
|
"#{user_part}@#{host_part.downcase}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
newproperty(:password_hash) do
|
newproperty(:password_hash) do
|
||||||
|
|
|
@ -15,6 +15,11 @@ Puppet::Type.newtype(:mysql_user) do
|
||||||
raise ArgumentError, 'MySQL usernames are limited to a maximum of 16 characters'
|
raise ArgumentError, 'MySQL usernames are limited to a maximum of 16 characters'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
munge do |value|
|
||||||
|
user_part, host_part = value.split('@')
|
||||||
|
"#{user_part}@#{host_part.downcase}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
newproperty(:password_hash) do
|
newproperty(:password_hash) do
|
||||||
|
|
|
@ -11,21 +11,44 @@ describe 'mysql_user', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operating
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'adding user' do
|
context 'using ashp@localhost' do
|
||||||
it 'should work without errors' do
|
describe 'adding user' do
|
||||||
pp = <<-EOS
|
it 'should work without errors' do
|
||||||
mysql_user { 'ashp@localhost':
|
pp = <<-EOS
|
||||||
password_hash => '6f8c114b58f2ce9e',
|
mysql_user { 'ashp@localhost':
|
||||||
}
|
password_hash => '6f8c114b58f2ce9e',
|
||||||
EOS
|
}
|
||||||
|
EOS
|
||||||
|
|
||||||
apply_manifest(pp, :catch_failures => true)
|
apply_manifest(pp, :catch_failures => true)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should find the user' do
|
||||||
|
shell("mysql -NBe \"select '1' from mysql.user where CONCAT(user, '@', host) = 'ashp@localhost'\"") do |r|
|
||||||
|
expect(r.stdout).to match(/^1$/)
|
||||||
|
expect(r.stderr).to be_empty
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it 'should find the user' do
|
context 'using ashp@LocalHost' do
|
||||||
shell("mysql -NBe \"select '1' from mysql.user where CONCAT(user, '@', host) = 'ashp@localhost'\"") do |r|
|
describe 'adding user' do
|
||||||
expect(r.stdout).to match(/^1$/)
|
it 'should work without errors' do
|
||||||
expect(r.stderr).to be_empty
|
pp = <<-EOS
|
||||||
|
mysql_user { 'ashp@LocalHost':
|
||||||
|
password_hash => '6f8c114b58f2ce9e',
|
||||||
|
}
|
||||||
|
EOS
|
||||||
|
|
||||||
|
apply_manifest(pp, :catch_failures => true)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should find the user' do
|
||||||
|
shell("mysql -NBe \"select '1' from mysql.user where CONCAT(user, '@', host) = 'ashp@localhost'\"") do |r|
|
||||||
|
expect(r.stdout).to match(/^1$/)
|
||||||
|
expect(r.stderr).to be_empty
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,23 +2,10 @@ require 'puppet'
|
||||||
require 'puppet/type/mysql_user'
|
require 'puppet/type/mysql_user'
|
||||||
describe Puppet::Type.type(:mysql_user) do
|
describe Puppet::Type.type(:mysql_user) do
|
||||||
|
|
||||||
before :each do
|
|
||||||
@user = Puppet::Type.type(:mysql_user).new(:name => 'foo@localhost', :password_hash => 'pass')
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should accept a user name' do
|
|
||||||
@user[:name].should == 'foo@localhost'
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'should fail with a long user name' do
|
it 'should fail with a long user name' do
|
||||||
expect {
|
expect {
|
||||||
Puppet::Type.type(:mysql_user).new({:name => '12345678901234567@localhost', :password_hash => 'pass'})
|
Puppet::Type.type(:mysql_user).new({:name => '12345678901234567@localhost', :password_hash => 'pass'})
|
||||||
}.to raise_error /MySQL usernames are limited to a maximum of 16 characters/
|
}.to raise_error /MySQL usernames are limited to a maximum of 16 characters/
|
||||||
end
|
|
||||||
|
|
||||||
it 'should accept a password' do
|
|
||||||
@user[:password_hash] = 'foo'
|
|
||||||
@user[:password_hash].should == 'foo'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should require a name' do
|
it 'should require a name' do
|
||||||
|
@ -27,4 +14,29 @@ describe Puppet::Type.type(:mysql_user) do
|
||||||
}.to raise_error(Puppet::Error, 'Title or name must be provided')
|
}.to raise_error(Puppet::Error, 'Title or name must be provided')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'using foo@localhost' do
|
||||||
|
before :each do
|
||||||
|
@user = Puppet::Type.type(:mysql_user).new(:name => 'foo@localhost', :password_hash => 'pass')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should accept a user name' do
|
||||||
|
@user[:name].should == 'foo@localhost'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should accept a password' do
|
||||||
|
@user[:password_hash] = 'foo'
|
||||||
|
@user[:password_hash].should == 'foo'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'using foo@LocalHost' do
|
||||||
|
before :each do
|
||||||
|
@user = Puppet::Type.type(:mysql_user).new(:name => 'foo@LocalHost', :password_hash => 'pass')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should lowercase the user name' do
|
||||||
|
@user[:name].should == 'foo@localhost'
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue