Adding dash to key_server validate regex

Dashes should be allow when defining domain or url for key_server. Rspec
test cases are included to make sure no malform domain name or url are
used.
This commit is contained in:
innyso 2014-06-10 00:09:28 +01:00
parent 1a3d6625f4
commit 3cbe24e18e
4 changed files with 97 additions and 6 deletions

View file

@ -60,10 +60,10 @@ Puppet::Type.newtype(:apt_key) do
end
newparam(:server) do
desc 'The key server to fetch the key from based on the ID.'
desc 'The key server to fetch the key from based on the ID. It can either be a domain name or url.'
defaultto :'keyserver.ubuntu.com'
# Need to validate this, preferably through stdlib is_fqdn
# but still working on getting to that.
newvalues(/\A((hkp|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,4})?$/)
end
newparam(:keyserver_options) do

View file

@ -69,7 +69,7 @@ define apt::key (
}
if $key_server {
validate_re($key_server,['\A((hkp|http|https):\/\/)?([a-z\d]{0,62}\.)+[a-z\d]+(:\d{2,4})?$'])
validate_re($key_server,['\A((hkp|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,4})?$'])
}
if $key_options {

View file

@ -192,6 +192,22 @@ ugVIB2pi+8u84f+an4Hml4xlyijgYu05pqNvnLRyJDLd61hviLC8GYU=
end
end
context 'hkp://pgp.mit.edu:80' do
it 'works' do
pp = <<-EOS
apt_key { 'puppetlabs':
id => '#{PUPPETLABS_GPG_KEY_ID}',
ensure => 'present',
server => 'hkp://pgp.mit.edu:80',
}
EOS
apply_manifest(pp, :catch_failures => true)
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
end
end
context 'nonexistant.key.server' do
it 'fails' do
pp = <<-EOS
@ -207,6 +223,22 @@ ugVIB2pi+8u84f+an4Hml4xlyijgYu05pqNvnLRyJDLd61hviLC8GYU=
end
end
end
context 'key server start with dot' do
it 'fails' do
pp = <<-EOS
apt_key { 'puppetlabs':
id => '#{PUPPETLABS_GPG_KEY_ID}',
ensure => 'present',
server => '.pgp.key.server',
}
EOS
apply_manifest(pp, :expect_failures => true) do |r|
expect(r.stderr).to match(/Invalid value \".pgp.key.server\"/)
end
end
end
end
describe 'source =>' do

View file

@ -169,6 +169,46 @@ describe 'apt::key', :type => :define do
end
end
context "domain with dash" do
let(:params) do{
:key_server => 'p-gp.m-it.edu',
} end
it "should contain apt::key" do
should contain_apt__key(title).with({
:key => title,
:ensure => 'present',
:key_server => 'p-gp.m-it.edu',
})
end
end
context "domain begin with dash" do
let(:params) do{
:key_server => '-pgp.mit.edu',
} end
it 'fails' do
expect { subject } .to raise_error(/does not match/)
end
end
context "domain begin with dot" do
let(:params) do{
:key_server => '.pgp.mit.edu',
} end
it 'fails' do
expect { subject } .to raise_error(/does not match/)
end
end
context "domain end with dot" do
let(:params) do{
:key_server => "pgp.mit.edu.",
} end
it 'fails' do
expect { subject } .to raise_error(/does not match/)
end
end
context "url" do
let (:params) do{
:key_server => 'hkp://pgp.mit.edu',
@ -218,7 +258,7 @@ describe 'apt::key', :type => :define do
expect { subject }.to raise_error(/does not match/)
end
end
context "malform url" do
context "url ending with a dot" do
let (:params) do{
:key_server => 'hkp://pgp.mit.edu.'
} end
@ -226,6 +266,26 @@ describe 'apt::key', :type => :define do
expect { subject }.to raise_error(/does not match/)
end
end
context "url begin with a dash" do
let(:params) do{
:key_server => "hkp://-pgp.mit.edu",
} end
it 'fails' do
expect { subject }.to raise_error(/does not match/)
end
end
context "url with dash" do
let(:params) do{
:key_server => 'hkp://p-gp.m-it.edu',
} end
it "should contain apt::key" do
should contain_apt__key(title).with({
:key => title,
:ensure => 'present',
:key_server => 'hkp://p-gp.m-it.edu',
})
end
end
context "exceed characher url" do
let (:params) do{
:key_server => 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
@ -234,7 +294,6 @@ describe 'apt::key', :type => :define do
expect { subject }.to raise_error(/does not match/)
end
end
end
describe 'key_options =>' do