X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=spec%2Fdefines%2Fsource_spec.rb;h=9da8b235feff81e8623d255d8d2796ba7dc77454;hb=d7da1cef383663bb2ecee3d8afa612aea74219f7;hp=333d53460f033b35ab4f69ca7c15982c08f93c55;hpb=2d688f4cdc121da434db873f818dd95977385a46;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/spec/defines/source_spec.rb b/spec/defines/source_spec.rb index 333d534..9da8b23 100644 --- a/spec/defines/source_spec.rb +++ b/spec/defines/source_spec.rb @@ -1,11 +1,13 @@ require 'spec_helper' describe 'apt::source', :type => :define do + let(:facts) { { :lsbdistid => 'Debian' } } let :title do 'my_source' end let :default_params do { + :ensure => 'present', :location => '', :release => 'karmic', :repos => 'main', @@ -13,14 +15,15 @@ describe 'apt::source', :type => :define do :required_packages => false, :key => false, :key_server => 'keyserver.ubuntu.com', - :pin => false, - :key_content => false + :key_content => false, + :key_source => false, + :pin => false } end [{}, { - :location => 'somewhere', + :location => 'http://example.com', :release => 'precise', :repos => 'security', :include_src => false, @@ -29,11 +32,35 @@ describe 'apt::source', :type => :define do :key_server => 'keyserver.debian.com', :pin => '600', :key_content => 'ABCD1234' + }, + { + :key => 'key_name', + :key_server => 'keyserver.debian.com', + :key_content => false, + }, + { + :ensure => 'absent', + :location => 'http://example.com', + :release => 'precise', + :repos => 'security', + }, + { + :release => '', + }, + { + :release => 'custom', + }, + { + :architecture => 'amd64', } ].each do |param_set| describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do let :param_hash do - param_set == {} ? default_params : params + default_params.merge(param_set) + end + + let :facts do + {:lsbdistcodename => 'karmic', :lsbdistid => 'Ubuntu'} end let :params do @@ -46,83 +73,95 @@ describe 'apt::source', :type => :define do let :content do content = "# #{title}" - content << "\ndeb #{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n" + if param_hash[:architecture] + arch = "[arch=#{param_hash[:architecture]}] " + end + content << "\ndeb #{arch}#{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n" + if param_hash[:include_src] - content << "deb-src #{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n" + content << "deb-src #{arch}#{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n" end content end - it { should contain_class("apt::params") } + it { should contain_apt__params } - it { should contain_file("#{title}.list")\ - .with_path(filename)\ - .with_ensure("file")\ - .with_owner("root")\ - .with_group("root")\ - .with_mode(644)\ - .with_content(content) + it { should contain_file("#{title}.list").with({ + 'ensure' => param_hash[:ensure], + 'path' => filename, + 'owner' => 'root', + 'group' => 'root', + 'mode' => '0644', + 'content' => content, + }) } it { if param_hash[:pin] - should create_resource("apt::pin", param_hash[:release]).with_param("priority", param_hash[:pin]).with_param("before", "File[#{title}.list]") + should contain_apt__pin(title).with({ + "priority" => param_hash[:pin], + "before" => "File[#{title}.list]" + }) else - should_not create_resource("apt::pin", param_hash[:release]).with_param("priority", param_hash[:pin]).with_param("before", "File[#{title}.list]") + should_not contain_apt__pin(title).with({ + "priority" => param_hash[:pin], + "before" => "File[#{title}.list]" + }) end } it { - should contain_exec("#{title} apt update")\ - .with_command("/usr/bin/apt-get update")\ - .with_subscribe("File[#{title}.list]")\ - .with_refreshonly(true) + should contain_exec("apt_update").with({ + "command" => "/usr/bin/apt-get update", + "refreshonly" => true + }) } it { if param_hash[:required_packages] - should contain_exec("/usr/bin/apt-get -y install #{param_hash[:required_packages]}")\ - .with_subscribe("File[#{title}.list]")\ - .with_refreshonly(true) + should contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({ + "command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}", + "subscribe" => "File[#{title}.list]", + "refreshonly" => true, + "before" => 'Exec[apt_update]', + }) else - should_not contain_exec("/usr/bin/apt-get -y install #{param_hash[:required_packages]}")\ - .with_subscribe("File[#{title}.list]")\ - .with_refreshonly(true) + should_not contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({ + "command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}", + "subscribe" => "File[#{title}.list]", + "refreshonly" => true + }) end } it { if param_hash[:key] - if param_hash[:key_content] - should contain_exec("Add key: #{param_hash[:key]} from content")\ - .with_command("/bin/echo '#{param_hash[:key_content]}' | /usr/bin/apt-key add -")\ - .with_unless("/usr/bin/apt-key list | /bin/grep '#{param_hash[:key]}'")\ - .with_before("File[#{title}.list]") - should_not contain_exec("/usr/bin/apt-key adv --keyserver #{param_hash[:key_server]} --recv-keys #{param_hash[:key]}")\ - .with_unless("/usr/bin/apt-key list | /bin/grep #{param_hash[:key]}")\ - .with_before("File[#{title}.list]") - - else - should contain_exec("/usr/bin/apt-key adv --keyserver #{param_hash[:key_server]} --recv-keys #{param_hash[:key]}")\ - .with_unless("/usr/bin/apt-key list | /bin/grep #{param_hash[:key]}")\ - .with_before("File[#{title}.list]") - should_not contain_exec("Add key: #{param_hash[:key]} from content")\ - .with_command("/bin/echo '#{param_hash[:key_content]}' | /usr/bin/apt-key add -")\ - .with_unless("/usr/bin/apt-key list | /bin/grep '#{param_hash[:key]}'")\ - .with_before("File[#{title}.list]") - end + should contain_apt__key("Add key: #{param_hash[:key]} from Apt::Source #{title}").with({ + "key" => param_hash[:key], + "ensure" => :present, + "key_server" => param_hash[:key_server], + "key_content" => param_hash[:key_content], + "key_source" => param_hash[:key_source], + "before" => "File[#{title}.list]" + }) else - should_not contain_exec("Add key: #{param_hash[:key]} from content")\ - .with_command("/bin/echo '#{param_hash[:key_content]}' | /usr/bin/apt-key add -")\ - .with_unless("/usr/bin/apt-key list | /bin/grep '#{param_hash[:key]}'")\ - .with_before("File[#{title}.list]") - should_not contain_exec("/usr/bin/apt-key adv --keyserver #{param_hash[:key_server]} --recv-keys #{param_hash[:key]}")\ - .with_unless("/usr/bin/apt-key list | /bin/grep #{param_hash[:key]}")\ - .with_before("File[#{title}.list]") - + should_not contain_apt__key("Add key: #{param_hash[:key]} from Apt::Source #{title}").with({ + "key" => param_hash[:key], + "ensure" => :present, + "key_server" => param_hash[:key_server], + "key_content" => param_hash[:key_content], + "key_source" => param_hash[:key_source], + "before" => "File[#{title}.list]" + }) end } end end + describe "without release should raise a Puppet::Error" do + let(:default_params) { Hash.new } + let(:facts) { Hash.new } + it { expect { should raise_error(Puppet::Error) } } + let(:facts) { { :lsbdistcodename => 'lucid', :lsbdistid => 'Ubuntu' } } + it { should contain_apt__source(title) } + end end -