Port 8080 is a bad choice and bumps into puppetdb
[puppet-modules/puppetlabs-apt.git] / spec / defines / ppa_spec.rb
1 require 'spec_helper'
2 describe 'apt::ppa', :type => :define do
3   [ { :lsbdistrelease => '11.04',
4       :lsbdistcodename => 'natty',
5       :operatingsystem => 'Ubuntu',
6       :package => 'python-software-properties'},
7     { :lsbdistrelease => '12.10',
8       :lsbdistcodename => 'quantal',
9       :operatingsystem => 'Ubuntu',
10       :package => 'software-properties-common'},
11   ].each do |platform|
12     context "on #{platform[:lsbdistcodename]}" do
13       let :facts do
14         {
15           :lsbdistrelease => platform[:lsbdistrelease],
16           :lsbdistcodename => platform[:lsbdistcodename],
17           :operatingsystem => platform[:operatingsystem],
18         }
19       end
20       let :release do
21         "#{platform[:lsbdistcodename]}"
22       end
23       let :package do
24         "#{platform[:package]}"
25       end
26       let :options do
27         "-y"
28       end
29       ['ppa:dans_ppa', 'dans_ppa','ppa:dans-daily/ubuntu'].each do |t|
30         describe "with title #{t}" do
31           let :pre_condition do
32             'class { "apt": }'
33           end
34           let :title do
35             t
36           end
37           let :filename do
38             t.sub(/^ppa:/,'').gsub('/','-') << "-" << "#{release}.list"
39           end
40
41           it { should contain_package("#{package}") }
42
43           it { should contain_exec("apt_update").with(
44             'command'     => '/usr/bin/apt-get update',
45             'refreshonly' => true
46             )
47           }
48
49           it { should contain_exec("add-apt-repository-#{t}").with(
50             'command' => "/usr/bin/add-apt-repository #{options} #{t}",
51             'unless'  => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
52             'require' => ["File[sources.list.d]", "Package[#{package}]"],
53             'notify'  => "Exec[apt_update]"
54             )
55           }
56
57           it { should create_file("/etc/apt/sources.list.d/#{filename}").with(
58             'ensure'  => 'file',
59             'require' => "Exec[add-apt-repository-#{t}]"
60             )
61           }
62         end
63       end
64       describe 'without a proxy defined' do
65         let :title do
66           'rspec_ppa'
67         end
68         let :pre_condition do
69           'class { "apt":
70              proxy_host => false
71           }'
72         end
73         let :filename do
74           "#{title}-#{release}.list"
75         end
76
77         it { should contain_exec("add-apt-repository-#{title}").with(
78           'environment' => [],
79           'command'     => "/usr/bin/add-apt-repository #{options} #{title}",
80           'unless'      => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
81           'require'     => ["File[sources.list.d]", "Package[#{package}]"],
82           'notify'      => "Exec[apt_update]"
83           )
84         }
85       end
86
87       describe 'behind a proxy' do
88         let :title do
89           'rspec_ppa'
90         end
91         let :pre_condition do
92           'class { "apt":
93             proxy_host => "user:pass@proxy",
94           }'
95         end
96           let :filename do
97             "#{title}-#{release}.list"
98           end
99
100         it { should contain_exec("add-apt-repository-#{title}").with(
101           'environment' => [
102             "http_proxy=http://user:pass@proxy:8080",
103             "https_proxy=http://user:pass@proxy:8080",
104           ],
105           'command'     => "/usr/bin/add-apt-repository #{options} #{title}",
106           'unless'      => "/usr/bin/test -s /etc/apt/sources.list.d/#{filename}",
107           'require'     => ["File[sources.list.d]", "Package[#{package}]"],
108           'notify'      => "Exec[apt_update]"
109           )
110         }
111       end
112     end
113   end
114
115   [ { :lsbdistcodename => 'natty',
116       :package => 'python-software-properties' },
117     { :lsbdistcodename => 'quantal',
118       :package => 'software-properties-common'},
119   ].each do |platform|
120     context "on #{platform[:lsbdistcodename]}" do
121       describe "it should not error if package['#{platform[:package]}'] is already defined" do
122         let :pre_condition do
123            'class {"apt": }' +
124            'package { "#{platform[:package]}": }->Apt::Ppa["ppa"]'
125         end
126         let :facts do
127           {:lsbdistcodename => '#{platform[:lsbdistcodename]}',
128            :operatingsystem => 'Ubuntu'}
129         end
130         let(:title) { "ppa" }
131         let(:release) { "#{platform[:lsbdistcodename]}" }
132         it { should contain_package('#{platform[:package]}') }
133       end
134     end
135   end
136
137   describe "without Class[apt] should raise a Puppet::Error" do
138     let(:release) { "natty" }
139     let(:title) { "ppa" }
140     it { expect { should contain_apt__ppa(title) }.to raise_error(Puppet::Error) }
141   end
142
143   describe "without release should raise a Puppet::Error" do
144     let(:title) { "ppa:" }
145     it { expect { should contain_apt__ppa(:release) }.to raise_error(Puppet::Error) }
146   end
147 end