puppet-swift/spec/classes/swift_proxy_spec.rb
Newptone b0f4834165 Fix dependency problem in class swift
Class swift requires class['ssh::server::install'], otherwise it will
complain and fail to compile the catalog.

Change-Id: Ieeef735cc3e78bb6a6b514c711e5b87a861ee31b
2013-06-10 18:32:41 +08:00

130 lines
3.7 KiB
Ruby

require 'spec_helper'
describe 'swift::proxy' do
describe 'without memcached being included' do
it 'should raise an error' do
expect { subject }.to raise_error(Puppet::Error)
end
end
# set os so memcache will not fail
let :facts do
{:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
:processorcount => 1,
:concat_basedir => '/var/lib/puppet/concat',
}
end
let :fragment_path do
"/var/lib/puppet/concat/_etc_swift_proxy-server.conf/fragments/00_swift_proxy"
end
describe 'with proper dependencies' do
let :pre_condition do
"class { memcached: max_memory => 1}
class { swift: swift_hash_suffix => string }"
end
describe 'without the proxy local network ip address being specified' do
it "should fail" do
expect { subject }.to raise_error(Puppet::Error, /Must pass proxy_local_net_ip/)
end
end
describe 'when proxy_local_net_ip is set' do
let :params do
{:proxy_local_net_ip => '127.0.0.1'}
end
it { should contain_service('swift-proxy').with(
{:ensure => 'running',
:provider => 'upstart',
:enable => true,
:hasstatus => true,
:subscribe => 'Concat[/etc/swift/proxy-server.conf]'
}
)}
it { should contain_file('/etc/swift/proxy-server.conf').with(
{:ensure => 'present',
:owner => 'swift',
:group => 'swift',
:mode => '0660',
}
)}
it 'should build the header file with all of the default contents' do
verify_contents(subject, fragment_path,
[
'[DEFAULT]',
'bind_port = 8080',
"workers = #{facts[:processorcount]}",
'user = swift',
'log_level = INFO',
'[pipeline:main]',
'pipeline = healthcheck cache tempauth proxy-server',
'[app:proxy-server]',
'use = egg:swift#proxy',
'allow_account_management = true',
'account_autocreate = true'
]
)
end
it { should contain_concat__fragment('swift_proxy').with_before(
[
'Class[Swift::Proxy::Healthcheck]',
'Class[Swift::Proxy::Cache]',
'Class[Swift::Proxy::Tempauth]'
]
)}
describe 'when more parameters are set' do
let :params do
{
:proxy_local_net_ip => '10.0.0.2',
:port => '80',
:workers => 3,
:pipeline => ['swauth', 'proxy-server'],
:allow_account_management => false,
:account_autocreate => false,
:log_level => 'DEBUG'
}
end
it 'should build the header file with provided values' do
verify_contents(subject, fragment_path,
[
'[DEFAULT]',
'bind_port = 80',
"workers = 3",
'user = swift',
'log_level = DEBUG',
'[pipeline:main]',
'pipeline = swauth proxy-server',
'[app:proxy-server]',
'use = egg:swift#proxy',
'allow_account_management = false',
'account_autocreate = false'
]
)
end
it { should contain_concat__fragment('swift_proxy').with_before(
'Class[Swift::Proxy::Swauth]'
)}
end
describe 'when supplying bad values for parameters' do
[:account_autocreate, :allow_account_management].each do |param|
it "should fail when #{param} is not passed a boolean" do
params[param] = 'false'
expect { subject }.to raise_error(Puppet::Error, /is not a boolean/)
end
end
end
end
end
end