(#13073) Add missing puppet spec tests
This commit adds full puppet spec coverage for all classes and defines.
This commit is contained in:
parent
b90860d312
commit
05fcec5f9c
14
Rakefile
Normal file
14
Rakefile
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
require 'rake'
|
||||||
|
|
||||||
|
task :default => [:spec]
|
||||||
|
|
||||||
|
desc "Run all module spec tests (Requires rspec-puppet gem)"
|
||||||
|
task :spec do
|
||||||
|
system("rspec spec")
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build package"
|
||||||
|
task :build do
|
||||||
|
system("puppet-module build")
|
||||||
|
end
|
||||||
|
|
@ -14,5 +14,8 @@
|
|||||||
class apache::dev {
|
class apache::dev {
|
||||||
include apache::params
|
include apache::params
|
||||||
|
|
||||||
package{$apache::params::apache_dev: ensure => installed}
|
package { "apache_dev_package":
|
||||||
|
name => $apache::params::apache_dev,
|
||||||
|
ensure => installed
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#
|
#
|
||||||
class apache {
|
class apache {
|
||||||
include apache::params
|
include apache::params
|
||||||
package { 'httpd':
|
package { 'httpd':
|
||||||
name => $apache::params::apache_name,
|
name => $apache::params::apache_name,
|
||||||
ensure => installed,
|
ensure => installed,
|
||||||
}
|
}
|
||||||
@ -25,7 +25,8 @@ class apache {
|
|||||||
subscribe => Package['httpd'],
|
subscribe => Package['httpd'],
|
||||||
}
|
}
|
||||||
|
|
||||||
file { $apache::params::vdir:
|
file { "httpd_vdir":
|
||||||
|
name => $apache::params::vdir,
|
||||||
ensure => directory,
|
ensure => directory,
|
||||||
recurse => true,
|
recurse => true,
|
||||||
purge => true,
|
purge => true,
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
class apache::php {
|
class apache::php {
|
||||||
include apache::params
|
include apache::params
|
||||||
|
|
||||||
package { $apache::params::php_package:
|
package { "apache_php_package":
|
||||||
|
name => $apache::params::php_package,
|
||||||
ensure => present,
|
ensure => present,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,8 @@ class apache::python {
|
|||||||
include apache::params
|
include apache::params
|
||||||
include apache
|
include apache
|
||||||
|
|
||||||
package { $apache::params::python_package:
|
package { "apache_python_package":
|
||||||
|
name => $apache::params::python_package,
|
||||||
ensure => present,
|
ensure => present,
|
||||||
}
|
}
|
||||||
a2mod { "python": ensure => present, }
|
a2mod { "python": ensure => present, }
|
||||||
|
@ -15,10 +15,12 @@
|
|||||||
class apache::ssl {
|
class apache::ssl {
|
||||||
|
|
||||||
include apache
|
include apache
|
||||||
|
|
||||||
case $operatingsystem {
|
case $operatingsystem {
|
||||||
'centos', 'fedora', 'redhat', 'scientific': {
|
'centos', 'fedora', 'redhat', 'scientific': {
|
||||||
package { $apache::params::ssl_package:
|
package { "apache_ssl_package":
|
||||||
|
name => "$apache::params::ssl_package",
|
||||||
|
ensure => installed,
|
||||||
require => Package['httpd'],
|
require => Package['httpd'],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,8 +65,8 @@ define apache::vhost(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
file {
|
file { "${priority}-${name}.conf":
|
||||||
"${apache::params::vdir}/${priority}-${name}.conf":
|
name => "${apache::params::vdir}/${priority}-${name}.conf",
|
||||||
content => template($template),
|
content => template($template),
|
||||||
owner => 'root',
|
owner => 'root',
|
||||||
group => 'root',
|
group => 'root',
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
# Configures an apache vhost that will only proxy requests
|
# Configures an apache vhost that will only proxy requests
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
# * $port:
|
# * $port:
|
||||||
# The port on which the vhost will respond
|
# The port on which the vhost will respond
|
||||||
# * $dest:
|
# * $dest:
|
||||||
# URI that the requests will be proxied for
|
# URI that the requests will be proxied for
|
||||||
# - $priority
|
# - $priority
|
||||||
# - $template -- the template to use for the vhost
|
# - $template -- the template to use for the vhost
|
||||||
@ -31,13 +31,16 @@ define apache::vhost::proxy (
|
|||||||
|
|
||||||
include apache
|
include apache
|
||||||
|
|
||||||
|
$apache_name = $apache::params::apache_name
|
||||||
|
$ssl_path = $apache::params::ssl_path
|
||||||
$srvname = $name
|
$srvname = $name
|
||||||
|
|
||||||
if $ssl == true {
|
if $ssl == true {
|
||||||
include apache::ssl
|
include apache::ssl
|
||||||
}
|
}
|
||||||
|
|
||||||
file {"${apache::params::vdir}/${priority}-${name}":
|
file { "${priority}-${name}":
|
||||||
|
name => "${apache::params::vdir}/${priority}-${name}",
|
||||||
content => template($template),
|
content => template($template),
|
||||||
owner => 'root',
|
owner => 'root',
|
||||||
group => 'root',
|
group => 'root',
|
||||||
|
@ -29,7 +29,8 @@ define apache::vhost::redirect (
|
|||||||
|
|
||||||
$srvname = $name
|
$srvname = $name
|
||||||
|
|
||||||
file {"${apache::params::vdir}/${priority}-${name}":
|
file { "${priority}-${name}":
|
||||||
|
name => "${apache::params::vdir}/${priority}-${name}",
|
||||||
content => template($template),
|
content => template($template),
|
||||||
owner => 'root',
|
owner => 'root',
|
||||||
group => 'root',
|
group => 'root',
|
||||||
|
24
spec/classes/apache_spec.rb
Normal file
24
spec/classes/apache_spec.rb
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache', :type => :class do
|
||||||
|
|
||||||
|
it { should include_class("apache::params") }
|
||||||
|
|
||||||
|
it { should contain_package("httpd") }
|
||||||
|
|
||||||
|
it { should contain_service("httpd").with(
|
||||||
|
'ensure' => 'running',
|
||||||
|
'enable' => 'true',
|
||||||
|
'subscribe' => 'Package[httpd]'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
it { should contain_file("httpd_vdir").with(
|
||||||
|
'ensure' => 'directory',
|
||||||
|
'recurse' => 'true',
|
||||||
|
'purge' => 'true',
|
||||||
|
'notify' => 'Service[httpd]',
|
||||||
|
'require' => 'Package[httpd]'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
end
|
8
spec/classes/dev_spec.rb
Normal file
8
spec/classes/dev_spec.rb
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::dev', :type => :class do
|
||||||
|
|
||||||
|
it { should include_class("apache::params") }
|
||||||
|
it { should contain_package("apache_dev_package") }
|
||||||
|
|
||||||
|
end
|
18
spec/classes/mod/python_spec.rb
Normal file
18
spec/classes/mod/python_spec.rb
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::mod::python', :type => :class do
|
||||||
|
|
||||||
|
it { should include_class("apache") }
|
||||||
|
|
||||||
|
it { should contain_package("mod_python_package").with(
|
||||||
|
'ensure' => 'installed',
|
||||||
|
'require' => 'Package[httpd]'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
it { should contain_a2mod("python").with(
|
||||||
|
'ensure' => 'present'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
17
spec/classes/mod/wsgi_spec.rb
Normal file
17
spec/classes/mod/wsgi_spec.rb
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::mod::wsgi', :type => :class do
|
||||||
|
|
||||||
|
it { should include_class("apache") }
|
||||||
|
|
||||||
|
it { should contain_package("mod_wsgi_package").with(
|
||||||
|
'require' => 'Package[httpd]'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
it { should contain_a2mod("wsgi").with(
|
||||||
|
'ensure' => 'present'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
13
spec/classes/params_spec.rb
Normal file
13
spec/classes/params_spec.rb
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::params', :type => :class do
|
||||||
|
|
||||||
|
it { should contain_apache__params }
|
||||||
|
|
||||||
|
# There are 4 resources in this class currently
|
||||||
|
# there should not be any more resources because it is a params class
|
||||||
|
# The resources are class[apache::params], class[main], class[settings], stage[main]
|
||||||
|
it "Should not contain any resources" do
|
||||||
|
subject.resources.size.should == 4
|
||||||
|
end
|
||||||
|
end
|
8
spec/classes/php_spec.rb
Normal file
8
spec/classes/php_spec.rb
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::php', :type => :class do
|
||||||
|
|
||||||
|
it { should include_class("apache::params") }
|
||||||
|
it { should contain_package("apache_php_package") }
|
||||||
|
|
||||||
|
end
|
13
spec/classes/python_spec.rb
Normal file
13
spec/classes/python_spec.rb
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::python', :type => :class do
|
||||||
|
|
||||||
|
it { should include_class("apache") }
|
||||||
|
it { should include_class("apache::params") }
|
||||||
|
it { should contain_package("apache_python_package") }
|
||||||
|
it { should contain_a2mod("python").with(
|
||||||
|
'ensure' => 'present'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
30
spec/classes/ssl_spec.rb
Normal file
30
spec/classes/ssl_spec.rb
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::ssl', :type => :class do
|
||||||
|
|
||||||
|
it { should include_class("apache") }
|
||||||
|
it { should include_class("apache::params") }
|
||||||
|
|
||||||
|
describe "it should install the ssl package in redhat" do
|
||||||
|
let :facts do
|
||||||
|
{ :operatingsystem => 'redhat' }
|
||||||
|
end
|
||||||
|
|
||||||
|
it { should contain_package("apache_ssl_package").with(
|
||||||
|
'ensure' => 'installed'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "it should contain a2mod ssl in debian" do
|
||||||
|
let :facts do
|
||||||
|
{ :operatingsystem => 'debian' }
|
||||||
|
end
|
||||||
|
|
||||||
|
it { should contain_a2mod("ssl").with(
|
||||||
|
'ensure' => 'present'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
61
spec/defines/vhost/proxy_spec.rb
Normal file
61
spec/defines/vhost/proxy_spec.rb
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::vhost::proxy', :type => :define do
|
||||||
|
|
||||||
|
let :title do
|
||||||
|
'my_proxy_vhost'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
let :default_params do
|
||||||
|
{
|
||||||
|
:port => '80',
|
||||||
|
:dest => 'example.com',
|
||||||
|
:priority => '10',
|
||||||
|
:template => "apache/vhost-proxy.conf.erb",
|
||||||
|
:servername => '',
|
||||||
|
:serveraliases => '',
|
||||||
|
:ssl => false,
|
||||||
|
:vhost_name => '*'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
[{
|
||||||
|
:dest => 'example2.com',
|
||||||
|
:port => '80',
|
||||||
|
:ssl => true
|
||||||
|
},
|
||||||
|
].each do |param_set|
|
||||||
|
|
||||||
|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
|
||||||
|
|
||||||
|
let :param_hash do
|
||||||
|
default_params.merge(param_set)
|
||||||
|
end
|
||||||
|
|
||||||
|
let :params do
|
||||||
|
param_set
|
||||||
|
end
|
||||||
|
|
||||||
|
it { should include_class("apache") }
|
||||||
|
it { should contain_apache__params }
|
||||||
|
|
||||||
|
it {
|
||||||
|
if param_hash[:ssl]
|
||||||
|
should contain_apache__ssl
|
||||||
|
else
|
||||||
|
should_not contain_apache__ssl
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
it { should contain_file("#{param_hash[:priority]}-#{title}").with({
|
||||||
|
'owner' => 'root',
|
||||||
|
'group' => 'root',
|
||||||
|
'mode' => '755',
|
||||||
|
'require' => 'Package[httpd]',
|
||||||
|
'notify' => 'Service[httpd]'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
56
spec/defines/vhost/redirect_spec.rb
Normal file
56
spec/defines/vhost/redirect_spec.rb
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::vhost::redirect', :type => :define do
|
||||||
|
let :title do
|
||||||
|
'my_vhost_redirect'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
let :default_params do
|
||||||
|
{
|
||||||
|
:port => '80',
|
||||||
|
:dest => 'example.com',
|
||||||
|
:priority => '10',
|
||||||
|
:template => "apache/vhost-redirect.conf.erb",
|
||||||
|
:vhost_name => '*'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
[{
|
||||||
|
:dest => 'example2.com',
|
||||||
|
:port => '80',
|
||||||
|
},
|
||||||
|
].each do |param_set|
|
||||||
|
|
||||||
|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
|
||||||
|
|
||||||
|
let :param_hash do
|
||||||
|
default_params.merge(param_set)
|
||||||
|
end
|
||||||
|
|
||||||
|
let :params do
|
||||||
|
param_set
|
||||||
|
end
|
||||||
|
|
||||||
|
it { should include_class("apache") }
|
||||||
|
it { should contain_apache__params }
|
||||||
|
|
||||||
|
it { should contain_file("#{param_hash[:priority]}-#{title}").with({
|
||||||
|
'owner' => 'root',
|
||||||
|
'group' => 'root',
|
||||||
|
'mode' => '755',
|
||||||
|
'require' => 'Package[httpd]',
|
||||||
|
'notify' => 'Service[httpd]'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
# FIXME: Firewall is not actually realized anywhere
|
||||||
|
#it { should contain_firewall("0100-INPUT ACCEPT #{param_hash[:port]}").with( {
|
||||||
|
# 'jump' => 'Accept',
|
||||||
|
# 'dport' => "#{param_hash[:port]}",
|
||||||
|
# 'proto' => 'tcp'
|
||||||
|
# })
|
||||||
|
#}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
77
spec/defines/vhost_spec.rb
Normal file
77
spec/defines/vhost_spec.rb
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'apache::vhost', :type => :define do
|
||||||
|
|
||||||
|
let :title do
|
||||||
|
'my_vhost'
|
||||||
|
end
|
||||||
|
|
||||||
|
let :default_params do
|
||||||
|
{
|
||||||
|
:apache_name => 'apache2',
|
||||||
|
:auth => false,
|
||||||
|
:docroot => 'path/to/docroot',
|
||||||
|
:options => 'Indexes FollowSymLinks MultiViews',
|
||||||
|
:port => '80',
|
||||||
|
:priority => '25',
|
||||||
|
:redirect_ssl => false,
|
||||||
|
:serveraliases => '',
|
||||||
|
:servername => '',
|
||||||
|
:ssl => true,
|
||||||
|
:template => 'apache/vhost-default.conf.erb',
|
||||||
|
:vhost_name => '*'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
[{
|
||||||
|
:apache_name => 'httpd',
|
||||||
|
:docroot => 'path/to/docroot',
|
||||||
|
:port => '80',
|
||||||
|
:priority => '25',
|
||||||
|
:ssl => false,
|
||||||
|
:template => 'apache/vhost-default.conf.erb',
|
||||||
|
},
|
||||||
|
].each do |param_set|
|
||||||
|
|
||||||
|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
|
||||||
|
|
||||||
|
let :param_hash do
|
||||||
|
default_params.merge(param_set)
|
||||||
|
end
|
||||||
|
|
||||||
|
let :params do
|
||||||
|
param_set
|
||||||
|
end
|
||||||
|
|
||||||
|
it { should include_class("apache") }
|
||||||
|
it { should contain_apache__params }
|
||||||
|
|
||||||
|
it {
|
||||||
|
if param_hash[:ssl]
|
||||||
|
should contain_apache__ssl
|
||||||
|
else
|
||||||
|
should_not contain_apache__ssl
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
it { should contain_file("#{param_hash[:priority]}-#{title}.conf").with({
|
||||||
|
'owner' => 'root',
|
||||||
|
'group' => 'root',
|
||||||
|
'mode' => '755',
|
||||||
|
'require' => 'Package[httpd]',
|
||||||
|
'notify' => 'Service[httpd]'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
# FIXME: Firewall is not actually realized anywhere
|
||||||
|
#it { should contain_firewall("0100-INPUT ACCEPT #{param_hash[:port]}").with( {
|
||||||
|
# 'action' => 'accept',
|
||||||
|
# 'dport' => "#{param_hash[:port]}",
|
||||||
|
# 'proto' => 'tcp'
|
||||||
|
# })
|
||||||
|
#}
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
11
spec/spec_helper.rb
Normal file
11
spec/spec_helper.rb
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
require 'puppet'
|
||||||
|
require 'rubygems'
|
||||||
|
require 'rspec-puppet'
|
||||||
|
|
||||||
|
def param_value(subject, type, title, param)
|
||||||
|
subject.resource(type, title).send(:parameters)[param.to_sym]
|
||||||
|
end
|
||||||
|
|
||||||
|
RSpec.configure do |c|
|
||||||
|
c.module_path = File.join(File.dirname(__FILE__), '../../')
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user