--- /dev/null
+require 'spec_helper'
+
+describe 'apache::mod::wsgi', :type => :class do
+ let :pre_condition do
+ 'include apache'
+ end
+ context "on a Debian OS" do
+ let :facts do
+ {
+ :osfamily => 'Debian',
+ :operatingsystemrelease => '6',
+ :concat_basedir => '/dne',
+ :lsbdistcodename => 'squeeze',
+ :operatingsystem => 'Debian',
+ :id => 'root',
+ :kernel => 'Linux',
+ :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ :is_pe => false,
+ }
+ end
+ it { is_expected.to contain_class("apache::params") }
+ it { is_expected.to contain_class('apache::mod::wsgi').with(
+ 'wsgi_socket_prefix' => nil
+ )
+ }
+ it { is_expected.to contain_package("libapache2-mod-wsgi") }
+ end
+ context "on a RedHat OS" do
+ let :facts do
+ {
+ :osfamily => 'RedHat',
+ :operatingsystemrelease => '6',
+ :concat_basedir => '/dne',
+ :operatingsystem => 'RedHat',
+ :id => 'root',
+ :kernel => 'Linux',
+ :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ :is_pe => false,
+ }
+ end
+ it { is_expected.to contain_class("apache::params") }
+ it { is_expected.to contain_class('apache::mod::wsgi').with(
+ 'wsgi_socket_prefix' => '/var/run/wsgi'
+ )
+ }
+ it { is_expected.to contain_package("mod_wsgi") }
+
+ describe "with custom WSGISocketPrefix" do
+ let :params do
+ { :wsgi_socket_prefix => 'run/wsgi' }
+ end
+ it {is_expected.to contain_file('wsgi.conf').with_content(/^ WSGISocketPrefix run\/wsgi$/)}
+ end
+ describe "with custom WSGIPythonHome" do
+ let :params do
+ { :wsgi_python_home => '/path/to/virtenv' }
+ end
+ it {is_expected.to contain_file('wsgi.conf').with_content(/^ WSGIPythonHome "\/path\/to\/virtenv"$/)}
+ end
+ describe "with custom package_name and mod_path" do
+ let :params do
+ {
+ :package_name => 'mod_wsgi_package',
+ :mod_path => '/foo/bar/baz',
+ }
+ end
+ it { is_expected.to contain_apache__mod('wsgi').with({
+ 'package' => 'mod_wsgi_package',
+ 'path' => '/foo/bar/baz',
+ })
+ }
+ it { is_expected.to contain_package("mod_wsgi_package") }
+ it { is_expected.to contain_file('wsgi.load').with_content(%r"LoadModule wsgi_module /foo/bar/baz") }
+ end
+ describe "with custom mod_path not containing /" do
+ let :params do
+ {
+ :package_name => 'mod_wsgi_package',
+ :mod_path => 'wsgi_mod_name.so',
+ }
+ end
+ it { is_expected.to contain_apache__mod('wsgi').with({
+ 'path' => 'modules/wsgi_mod_name.so',
+ 'package' => 'mod_wsgi_package',
+ })
+ }
+ it { is_expected.to contain_file('wsgi.load').with_content(%r"LoadModule wsgi_module modules/wsgi_mod_name.so") }
+
+ end
+ describe "with package_name but no mod_path" do
+ let :params do
+ {
+ :mod_path => '/foo/bar/baz',
+ }
+ end
+ it { expect { catalogue }.to raise_error Puppet::Error, /apache::mod::wsgi - both package_name and mod_path must be specified!/ }
+ end
+ describe "with mod_path but no package_name" do
+ let :params do
+ {
+ :package_name => '/foo/bar/baz',
+ }
+ end
+ it { expect { catalogue }.to raise_error Puppet::Error, /apache::mod::wsgi - both package_name and mod_path must be specified!/ }
+ end
+ end
+ context "on a FreeBSD OS" do
+ let :facts do
+ {
+ :osfamily => 'FreeBSD',
+ :operatingsystemrelease => '9',
+ :concat_basedir => '/dne',
+ :operatingsystem => 'FreeBSD',
+ :id => 'root',
+ :kernel => 'FreeBSD',
+ :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ :is_pe => false,
+ }
+ end
+ it { is_expected.to contain_class("apache::params") }
+ it { is_expected.to contain_class('apache::mod::wsgi').with(
+ 'wsgi_socket_prefix' => nil
+ )
+ }
+ it { is_expected.to contain_package("www/mod_wsgi") }
+ end
+ context "on a Gentoo OS" do
+ let :facts do
+ {
+ :osfamily => 'Gentoo',
+ :operatingsystem => 'Gentoo',
+ :operatingsystemrelease => '3.16.1-gentoo',
+ :concat_basedir => '/dne',
+ :id => 'root',
+ :kernel => 'Linux',
+ :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
+ :is_pe => false,
+ }
+ end
+ it { is_expected.to contain_class("apache::params") }
+ it { is_expected.to contain_class('apache::mod::wsgi').with(
+ 'wsgi_socket_prefix' => nil
+ )
+ }
+ it { is_expected.to contain_package("www-apache/mod_wsgi") }
+ end
+end