Merge pull request #1085 from puppetlabs/CONT-493-ppa_validation_fix
[puppet-modules/puppetlabs-apt.git] / spec / defines / ppa_spec.rb
index c056b5ba3df24bf30b8b2ba751df2ea910b2eb1f..00424dccb75f7a3da9710a15e951bea36051a3c9 100644 (file)
@@ -30,6 +30,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache'
       }
     end
 
@@ -43,6 +44,69 @@ describe 'apt::ppa' do
     }
   end
 
+  [
+    'ppa:foo/bar',
+    'ppa:foo/bar1.0',
+    'ppa:foo10/bar10',
+    'ppa:foo-/bar_',
+  ].each do |value|
+    describe 'valid resource names' do
+      let :facts do
+        {
+          os: {
+            family: 'Debian',
+            name: 'Ubuntu',
+            release: {
+              major: '18',
+              full: '18.04',
+            },
+            distro: {
+              codename: 'trusty',
+              id: 'Ubuntu',
+            },
+          },
+        }
+      end
+
+      let(:title) { value }
+
+      it { is_expected.not_to raise_error }
+      it { is_expected.to contain_exec("add-apt-repository-#{value}") }
+    end
+  end
+
+  [
+    'ppa:foo!/bar',
+    'ppa:foo/bar!',
+    'ppa:foo1,0/bar',
+    'ppa:foo/bar/foobar',
+    '|| ls -la ||',
+    '|| touch /tmp/foo.txt ||',
+  ].each do |value|
+    describe 'invalid resource names' do
+      let :facts do
+        {
+          os: {
+            family: 'Debian',
+            name: 'Ubuntu',
+            release: {
+              major: '18',
+              full: '18.04',
+            },
+            distro: {
+              codename: 'trusty',
+              id: 'Ubuntu',
+            },
+          },
+        }
+      end
+
+      let(:title) { value }
+
+      it { is_expected.to raise_error(Puppet::PreformattedError, %r{Invalid PPA name: #{value}}) }
+    end
+  end
+
   describe 'Ubuntu 15.10 sources.list filename' do
     let :facts do
       {
@@ -58,6 +122,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end
 
@@ -96,6 +161,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end
 
@@ -128,6 +194,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end
 
@@ -168,6 +235,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end
 
@@ -210,6 +278,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end
 
@@ -250,6 +319,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end
 
@@ -290,6 +360,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end
 
@@ -328,6 +399,7 @@ describe 'apt::ppa' do
             id: 'Ubuntu',
           },
         },
+        puppet_vardir: '/opt/puppetlabs/puppet/cache',
       }
     end