X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=spec%2Fdefines%2Fppa_spec.rb;h=05718ebc34ca972b570f65410d95880a2bef8c4c;hb=refs%2Fheads%2Frelease-prep;hp=74265cde99bbc5376ec31962f70d42cf862e3bb5;hpb=58265f32854aaaa03d1abb83c1511563a2879e0b;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/spec/defines/ppa_spec.rb b/spec/defines/ppa_spec.rb index 74265cd..05718eb 100644 --- a/spec/defines/ppa_spec.rb +++ b/spec/defines/ppa_spec.rb @@ -23,12 +23,12 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, puppet_vardir: '/opt/puppetlabs/puppet/cache' } @@ -37,13 +37,77 @@ describe 'apt::ppa' do let(:title) { 'ppa:needs/substitution' } it { is_expected.not_to contain_package('python-software-properties') } + it { - is_expected.to contain_exec('add-apt-repository-ppa:needs/substitution') + expect(subject).to contain_exec('add-apt-repository-ppa:needs/substitution') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('needs', 'substitution')) } 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 { @@ -52,21 +116,21 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '15', - full: '15.10', + full: '15.10' }, distro: { codename: 'wily', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end let(:title) { 'ppa:user/foo' } it { - is_expected.to contain_exec('add-apt-repository-ppa:user/foo') + expect(subject).to contain_exec('add-apt-repository-ppa:user/foo') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('user', 'foo', 'wily')) } @@ -80,7 +144,7 @@ describe 'apt::ppa' do let :params do { package_name: 'software-properties-common', - package_manage: true, + package_manage: true } end @@ -91,22 +155,23 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end let(:title) { 'ppa:needs/substitution' } it { is_expected.to contain_package('software-properties-common') } + it { - is_expected.to contain_exec('add-apt-repository-ppa:needs/substitution') + expect(subject).to contain_exec('add-apt-repository-ppa:needs/substitution') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('needs', 'substitution')) } @@ -124,28 +189,29 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end let :params do { - package_manage: false, + package_manage: false } end let(:title) { 'ppa:needs/substitution' } it { is_expected.not_to contain_package('python-software-properties') } + it { - is_expected.to contain_exec('add-apt-repository-ppa:needs/substitution') + expect(subject).to contain_exec('add-apt-repository-ppa:needs/substitution') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('needs', 'substitution')) } @@ -165,21 +231,21 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end let :params do { package_manage: true, - require: 'Apt::Ppa[ppa:user/foo2]', + require: 'Apt::Ppa[ppa:user/foo2]' } end @@ -187,8 +253,9 @@ describe 'apt::ppa' do it { is_expected.to compile.with_all_deps } it { is_expected.to contain_package('software-properties-common') } + it { - is_expected.to contain_exec('add-apt-repository-ppa:user/foo') + expect(subject).to contain_exec('add-apt-repository-ppa:user/foo') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('user', 'foo')) } @@ -208,28 +275,29 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end let :params do { - 'package_manage' => true, + 'package_manage' => true } end let(:title) { 'ppa:user/foo' } it { is_expected.to contain_package('software-properties-common') } + it { - is_expected.to contain_exec('add-apt-repository-ppa:user/foo') + expect(subject).to contain_exec('add-apt-repository-ppa:user/foo') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('user', 'foo', 'trusty', ['http_proxy=http://localhost:8080'])) } @@ -249,28 +317,29 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end let :params do { - package_manage: true, + package_manage: true } end let(:title) { 'ppa:user/foo' } it { is_expected.to contain_package('software-properties-common') } + it { - is_expected.to contain_exec('add-apt-repository-ppa:user/foo') + expect(subject).to contain_exec('add-apt-repository-ppa:user/foo') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('user', 'foo', 'trusty', ['http_proxy=http://localhost:8180'])) } @@ -290,28 +359,29 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end let :params do { - package_manage: true, + package_manage: true } end let(:title) { 'ppa:user/foo' } it { is_expected.to contain_package('software-properties-common') } + it { - is_expected.to contain_exec('add-apt-repository-ppa:user/foo') + expect(subject).to contain_exec('add-apt-repository-ppa:user/foo') .that_notifies('Class[Apt::Update]') .with(*ppa_exec_params('user', 'foo', 'trusty', ['http_proxy=http://localhost:8180', 'https_proxy=https://localhost:8180'])) } @@ -329,14 +399,14 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: 'trusty', - id: 'Ubuntu', - }, + id: 'Ubuntu' + } }, - puppet_vardir: '/opt/puppetlabs/puppet/cache', + puppet_vardir: '/opt/puppetlabs/puppet/cache' } end @@ -344,15 +414,15 @@ describe 'apt::ppa' do let :params do { - ensure: 'absent', + ensure: 'absent' } end it { - is_expected.to contain_tidy("remove-apt-repository-script-#{title}") + expect(subject).to contain_tidy("remove-apt-repository-script-#{title}") .with('path' => '/opt/puppetlabs/puppet/cache/add-apt-repository-user-ubuntu-foo-trusty.sh') - is_expected.to contain_tidy("remove-apt-repository-#{title}") + expect(subject).to contain_tidy("remove-apt-repository-#{title}") .with('path' => '/etc/apt/sources.list.d/user-ubuntu-foo-trusty.list') .that_notifies('Class[Apt::Update]') } @@ -367,20 +437,20 @@ describe 'apt::ppa' do name: 'Ubuntu', release: { major: '18', - full: '18.04', + full: '18.04' }, distro: { codename: nil, - id: 'Ubuntu', - }, - }, + id: 'Ubuntu' + } + } } end let(:title) { 'ppa:user/foo' } it do - is_expected.to raise_error(Puppet::Error, %r{os.distro.codename fact not available: release parameter required}) + expect(subject).to raise_error(Puppet::Error, %r{os.distro.codename fact not available: release parameter required}) end end @@ -392,20 +462,20 @@ describe 'apt::ppa' do name: 'Debian', release: { major: '6', - full: '6.0.7', + full: '6.0.7' }, distro: { codename: 'wheezy', - id: 'Debian', - }, - }, + id: 'Debian' + } + } } end let(:title) { 'ppa:user/foo' } it do - is_expected.to raise_error(Puppet::Error, %r{not currently supported on Debian}) + expect(subject).to raise_error(Puppet::Error, %r{not currently supported on Debian}) end end end