module-nginx/spec/defines/resource_upstream_spec.rb
Matthew Haughton 962fa6672a rspec tests for v0.0.6
Resolves #65
2013-11-21 22:14:00 -05:00

86 lines
2.4 KiB
Ruby

require 'spec_helper'
describe 'nginx::resource::upstream' do
let :title do
'upstream-test'
end
let :default_params do
{
:members => ['test'],
}
end
describe 'os-independent items' do
describe 'basic assumptions' do
let :params do default_params end
it { should contain_file("/etc/nginx/conf.d/#{title}-upstream.conf").with(
{
'owner' => 'root',
'group' => 'root',
'mode' => '0644',
'ensure' => 'file',
'content' => /upstream #{title}/,
}
)}
end
describe "upstream.conf template content" do
[
{
:title => 'should contain ordered prepended directives',
:attr => 'upstream_cfg_prepend',
:value => {
'test3' => 'test value 3',
'test1' => 'test value 1',
'test2' => 'test value 2',
},
:match => [
' test1 test value 1;',
' test2 test value 2;',
#TODO: fix this output in the template; should be no trailing
#spaces
' test3 test value 3; ',
],
},
{
:title => 'should set server',
:attr => 'members',
:value => [
'test3',
'test1',
'test2',
],
:match => [
' server test3;',
' server test1;',
' server test2;',
],
},
].each do |param|
context "when #{param[:attr]} is #{param[:value]}" do
let :params do default_params.merge({ param[:attr].to_sym => param[:value] }) end
it { should contain_file("/etc/nginx/conf.d/#{title}-upstream.conf").with_mode('0644') }
it param[:title] do
verify_contents(subject, "/etc/nginx/conf.d/#{title}-upstream.conf", Array(param[:match]))
lines = subject.resource('file', "/etc/nginx/conf.d/#{title}-upstream.conf").send(:parameters)[:content].split("\n")
(Array(param[:notmatch]).collect { |x| lines.grep x }.flatten).should be_empty
end
end
end
context 'when ensure => absent' do
let :params do default_params.merge(
{
:ensure => 'absent'
}
) end
it { should contain_file("/etc/nginx/conf.d/#{title}-upstream.conf").with_ensure('absent') }
end
end
end
end