- is_expected.to raise_error(Puppet::PreformattedError, %r{expects a match for Enum\['auto', 'hold', 'manual', 'unhold'\], got 'foobar'})
+ expect(subject).to raise_error(Puppet::PreformattedError, %r{expects a match for Enum\['auto', 'hold', 'manual', 'unhold'\], got 'foobar'})
+ end
+ end
+
+ [
+ 'package',
+ 'package1',
+ 'package.name',
+ 'package-name',
+ 'package+name',
+ 'p.ackagename',
+ 'p+ackagename',
+ 'p+',
+ ].each do |value|
+ describe 'with a valid resource title' do
+ let :title do
+ value
+ end
+
+ let :params do
+ {
+ 'setting' => 'manual'
+ }
+ end
+
+ it do
+ expect(subject).to contain_exec("apt-mark manual #{title}")
+ end
+ end
+ end
+
+ # packagenames starting with + are not valid as the title according to puppet
+ # good thing this is also an illegal name for debian packages
+ [
+ '|| ls -la ||',
+ 'packakge with space',
+ 'package<>|',
+ '|| touch /tmp/foo.txt ||',
+ 'package_name',
+ 'PackageName',
+ '.p',
+ 'p',
+ ].each do |value|
+ describe "with an invalid resource title [#{value}]" do
+ let :title do
+ value
+ end
+
+ let :params do
+ {
+ 'setting' => 'manual'
+ }
+ end
+
+ it do
+ expect(subject).to raise_error(Puppet::PreformattedError, %r{Invalid package name: #{title}})
+ end