2013-11-22 04:10:53 +01:00
require 'spec_helper'
2014-06-10 23:10:00 +02:00
require 'digest/md5'
2013-11-22 04:10:53 +01:00
describe 'nginx::resource::location' do
let :title do
'rspec-test'
end
let :facts do
{
:osfamily = > 'Debian' ,
:operatingsystem = > 'debian' ,
}
end
let :pre_condition do
[
'include ::nginx::params' ,
'include ::nginx::config' ,
]
end
describe 'os-independent items' do
describe 'basic assumptions' do
let :params do {
:www_root = > " /var/www/rspec " ,
:vhost = > 'vhost1' ,
} end
2013-12-06 18:04:39 +01:00
it { should contain_class ( " nginx::params " ) }
it { should contain_class ( " nginx::config " ) }
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( " f25e14942fb58942ee13b1465a4e1719 " ) . with_content ( / location rspec-test / ) }
2013-11-22 04:10:53 +01:00
it { should_not contain_file ( '/etc/nginx/fastcgi_params' ) }
2013-12-01 01:52:12 +01:00
it { should_not contain_concat__fragment ( " vhost1-800-rspec-test-ssl " ) }
2013-11-22 04:10:53 +01:00
it { should_not contain_file ( " /etc/nginx/rspec-test_htpasswd " ) }
end
describe " vhost_location_proxy template content " do
[
{
:title = > 'should set the location' ,
:attr = > 'location' ,
:value = > 'my_location' ,
:match = > ' location my_location {' ,
} ,
{
:title = > 'should contain ordered prepended directives' ,
:attr = > 'location_cfg_prepend' ,
2014-03-07 15:20:58 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
2014-03-13 11:01:40 +01:00
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
2014-03-07 13:53:32 +01:00
' allow test value 3;' ,
' test1 test value 1;' ,
' test2 test value 2a;' ,
' test2 test value 2b;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
{
:title = > 'should set proxy_cache' ,
:attr = > 'proxy_cache' ,
:value = > 'value' ,
:match = > ' proxy_cache value;' ,
} ,
{
:title = > 'should not set proxy_cache' ,
:attr = > 'proxy_cache' ,
:value = > false ,
:notmatch = > / proxy_cache /
} ,
2013-11-28 11:42:34 +01:00
{
:title = > 'should set proxy_method' ,
:attr = > 'proxy_method' ,
:value = > 'value' ,
:match = > ' proxy_method value;' ,
} ,
{
:title = > 'should set proxy_set_body' ,
:attr = > 'proxy_set_body' ,
:value = > 'value' ,
:match = > ' proxy_set_body value;' ,
} ,
2013-11-22 04:10:53 +01:00
{
:title = > 'should set proxy_pass' ,
:attr = > 'proxy' ,
:value = > 'value' ,
:match = > ' proxy_pass value;' ,
} ,
{
:title = > 'should set proxy_read_timeout' ,
:attr = > 'proxy_read_timeout' ,
:value = > 'value' ,
:match = > ' proxy_read_timeout value;' ,
} ,
{
:title = > 'should contain ordered appended directives' ,
:attr = > 'location_cfg_append' ,
2014-03-07 15:20:58 +01:00
:value = > { 'test1' = > [ 'test value 1a' , 'test value 1b' ] , 'test2' = > 'test value 2' , 'allow' = > 'test value 3' ,
2014-03-13 11:01:40 +01:00
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
' allow test value 3;' ,
2014-03-07 13:53:32 +01:00
' test1 test value 1a;' ,
' test1 test value 1b;' ,
2013-11-22 04:10:53 +01:00
' test2 test value 2;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
2014-01-13 19:20:02 +01:00
{
:title = > 'should contain rewrite rules' ,
:attr = > 'rewrite_rules' ,
:value = > [
'^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last' ,
'^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last' ,
'^/users/(.*)$ /show?user=$1? last' ,
] ,
:match = > [
' rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;' ,
' rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;' ,
' rewrite ^/users/(.*)$ /show?user=$1? last;' ,
] ,
} ,
{
:title = > 'should not set rewrite_rules' ,
:attr = > 'rewrite_rules' ,
:value = > [ ] ,
:notmatch = > / rewrite /
} ,
2013-11-22 04:10:53 +01:00
] . each do | param |
context " when #{ param [ :attr ] } is #{ param [ :value ] } " do
let :default_params do { :location = > 'location' , :proxy = > 'proxy_value' , :vhost = > 'vhost1' } end
let :params do default_params . merge ( { param [ :attr ] . to_sym = > param [ :value ] } ) end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) }
2013-11-22 04:10:53 +01:00
it param [ :title ] do
2014-06-10 23:10:00 +02:00
lines = subject . resource ( 'concat::fragment' , Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . send ( :parameters ) [ :content ] . split ( " \n " )
2013-12-01 01:52:12 +01:00
( lines & Array ( param [ :match ] ) ) . should == Array ( param [ :match ] )
2013-12-06 17:36:28 +01:00
Array ( param [ :notmatch ] ) . each do | item |
2014-06-10 23:10:00 +02:00
should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . without_content ( item )
2013-12-06 17:36:28 +01:00
end
2013-11-22 04:10:53 +01:00
end
end
end
context " when proxy_cache_valid is 10m " do
let :params do {
:location = > 'location' ,
:proxy = > 'proxy_value' ,
:vhost = > 'vhost1' ,
2014-01-06 18:41:47 +01:00
:proxy_cache = > 'true' ,
2013-11-22 04:10:53 +01:00
:proxy_cache_valid = > '10m' ,
} end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500-location " ) ) . with_content ( / proxy_cache_valid 10m; / ) }
2013-11-22 04:10:53 +01:00
end
end
describe " vhost_location_alias template content " do
[
{
:title = > 'should set the location' ,
:attr = > 'location' ,
:value = > 'my_location' ,
:match = > ' location my_location {' ,
} ,
2013-11-22 05:04:39 +01:00
{
:title = > 'should contain ordered prepended directives' ,
:attr = > 'location_cfg_prepend' ,
2014-03-13 11:01:40 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 05:04:39 +01:00
:match = > [
' allow test value 3;' ,
2014-03-13 11:01:40 +01:00
' test1 test value 1;' ,
' test2 test value 2a;' ,
' test2 test value 2b;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 05:04:39 +01:00
] ,
} ,
2013-11-22 04:10:53 +01:00
{
:title = > 'should set alias' ,
:attr = > 'location_alias' ,
:value = > 'value' ,
:match = > ' alias value;' ,
} ,
2013-11-22 05:04:39 +01:00
{
:title = > 'should contain ordered appended directives' ,
:attr = > 'location_cfg_append' ,
2014-03-13 11:01:40 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 05:04:39 +01:00
:match = > [
2014-03-13 11:01:40 +01:00
' allow test value 3;' ,
2013-11-22 05:04:39 +01:00
' test1 test value 1;' ,
2014-03-13 11:01:40 +01:00
' test2 test value 2a;' ,
' test2 test value 2b;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 05:04:39 +01:00
] ,
} ,
2013-11-22 04:10:53 +01:00
] . each do | param |
context " when #{ param [ :attr ] } is #{ param [ :value ] } " do
let :default_params do { :location = > 'location' , :location_alias = > 'location_alias_value' , :vhost = > 'vhost1' } end
let :params do default_params . merge ( { param [ :attr ] . to_sym = > param [ :value ] } ) end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) }
2013-11-22 04:10:53 +01:00
it param [ :title ] do
2014-06-10 23:10:00 +02:00
lines = subject . resource ( 'concat::fragment' , Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . send ( :parameters ) [ :content ] . split ( " \n " )
2013-12-01 01:52:12 +01:00
( lines & Array ( param [ :match ] ) ) . should == Array ( param [ :match ] )
2013-12-06 17:36:28 +01:00
Array ( param [ :notmatch ] ) . each do | item |
2014-06-10 23:10:00 +02:00
should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . without_content ( item )
2013-12-06 17:36:28 +01:00
end
2013-11-22 04:10:53 +01:00
end
end
end
end
describe " vhost_location_stub_status template content " do
[
{
:title = > 'should set the location' ,
:attr = > 'location' ,
:value = > 'my_location' ,
:match = > ' location my_location {' ,
} ,
{
:title = > 'should contain ordered prepended directives' ,
:attr = > 'location_cfg_prepend' ,
2014-03-07 15:20:58 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
2014-03-13 11:01:40 +01:00
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
2014-03-07 15:20:58 +01:00
' allow test value 3;' ,
' test1 test value 1;' ,
' test2 test value 2a;' ,
' test2 test value 2b;' ,
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
{
:title = > 'should contain ordered appended directives' ,
:attr = > 'location_cfg_append' ,
2014-03-07 15:20:58 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
2014-03-13 11:01:40 +01:00
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
2014-03-07 15:20:58 +01:00
' allow test value 3;' ,
' test1 test value 1;' ,
' test2 test value 2a;' ,
' test2 test value 2b;' ,
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
] . each do | param |
context " when #{ param [ :attr ] } is #{ param [ :value ] } " do
let :default_params do { :location = > 'location' , :stub_status = > true , :vhost = > 'vhost1' } end
let :params do default_params . merge ( { param [ :attr ] . to_sym = > param [ :value ] } ) end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) }
2013-11-22 04:10:53 +01:00
it param [ :title ] do
2014-06-10 23:10:00 +02:00
lines = subject . resource ( 'concat::fragment' , Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . send ( :parameters ) [ :content ] . split ( " \n " )
2013-12-01 01:52:12 +01:00
( lines & Array ( param [ :match ] ) ) . should == Array ( param [ :match ] )
2013-12-06 17:36:28 +01:00
Array ( param [ :notmatch ] ) . each do | item |
2014-06-10 23:10:00 +02:00
should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . without_content ( item )
2013-12-06 17:36:28 +01:00
end
2013-11-22 04:10:53 +01:00
end
end
end
end
describe " vhost_location_fastcgi template content " do
[
{
:title = > 'should set the location' ,
:attr = > 'location' ,
:value = > 'my_location' ,
:match = > ' location my_location {' ,
} ,
{
:title = > 'should contain ordered prepended directives' ,
:attr = > 'location_cfg_prepend' ,
2014-03-13 11:01:40 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
2014-03-07 13:53:32 +01:00
' allow test value 3;' ,
2014-03-13 11:01:40 +01:00
' test1 test value 1;' ,
' test2 test value 2a;' ,
' test2 test value 2b;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
{
:title = > 'should set www_root' ,
:attr = > 'www_root' ,
:value = > '/' ,
:match = > ' root /;'
} ,
{
:title = > 'should set fastcgi_split_path' ,
:attr = > 'fastcgi_split_path' ,
:value = > 'value' ,
:match = > ' fastcgi_split_path_info value;'
} ,
{
:title = > 'should set try_file(s)' ,
:attr = > 'try_files' ,
:value = > [ 'name1' , 'name2' ] ,
2013-11-22 05:04:39 +01:00
:match = > ' try_files name1 name2;' ,
2013-11-22 04:10:53 +01:00
} ,
{
:title = > 'should set fastcgi_params' ,
:attr = > 'fastcgi_params' ,
:value = > 'value' ,
:match = > ' include value;'
} ,
{
:title = > 'should set fastcgi_pass' ,
:attr = > 'fastcgi' ,
:value = > 'value' ,
:match = > ' fastcgi_pass value;'
} ,
{
:title = > 'should set fastcgi_param' ,
:attr = > 'fastcgi_script' ,
:value = > 'value' ,
:match = > ' fastcgi_param SCRIPT_FILENAME value;' ,
} ,
{
:title = > 'should contain ordered appended directives' ,
:attr = > 'location_cfg_append' ,
2014-03-07 15:20:58 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
2014-03-13 11:01:40 +01:00
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
' allow test value 3;' ,
' test1 test value 1;' ,
2014-03-07 13:53:32 +01:00
' test2 test value 2a;' ,
' test2 test value 2b;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
] . each do | param |
context " when #{ param [ :attr ] } is #{ param [ :value ] } " do
2014-01-06 18:41:47 +01:00
let :default_params do { :location = > 'location' , :fastcgi = > 'localhost:9000' , :vhost = > 'vhost1' } end
2013-11-22 04:10:53 +01:00
let :params do default_params . merge ( { param [ :attr ] . to_sym = > param [ :value ] } ) end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) }
2013-11-22 04:10:53 +01:00
it param [ :title ] do
2014-06-10 23:10:00 +02:00
lines = subject . resource ( 'concat::fragment' , Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . send ( :parameters ) [ :content ] . split ( " \n " )
2013-12-01 01:52:12 +01:00
( lines & Array ( param [ :match ] ) ) . should == Array ( param [ :match ] )
2013-12-06 17:36:28 +01:00
Array ( param [ :notmatch ] ) . each do | item |
2014-06-10 23:10:00 +02:00
should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . without_content ( / #{ item } / )
2013-12-06 17:36:28 +01:00
end
2013-11-22 04:10:53 +01:00
end
end
end
end
describe " vhost_location_directory template content " do
[
{
:title = > 'should set the location' ,
:attr = > 'location' ,
:value = > 'my_location' ,
:match = > ' location my_location {' ,
} ,
{
:title = > 'should set the allow directive' ,
:attr = > 'location_allow' ,
:value = > [ 'rule1' , 'rule2' ] ,
2014-03-12 17:18:05 +01:00
:match = > [ ' allow rule1;' , ' allow rule2;' ] ,
2013-11-22 04:10:53 +01:00
} ,
{
:title = > 'should set the deny directive' ,
:attr = > 'location_deny' ,
:value = > [ 'rule1' , 'rule2' ] ,
2014-03-12 17:18:05 +01:00
:match = > [ ' deny rule1;' , ' deny rule2;' ] ,
2013-11-22 04:10:53 +01:00
} ,
{
:title = > 'should contain ordered prepended directives' ,
:attr = > 'location_cfg_prepend' ,
2014-03-07 15:20:58 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
2014-03-13 11:01:40 +01:00
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
' allow test value 3;' ,
' test1 test value 1;' ,
2014-03-07 13:53:32 +01:00
' test2 test value 2a;' ,
' test2 test value 2b;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
{
:title = > 'should set www_root' ,
:attr = > 'www_root' ,
:value = > '/' ,
:match = > ' root /;'
} ,
{
:title = > 'should set try_file(s)' ,
:attr = > 'try_files' ,
:value = > [ 'name1' , 'name2' ] ,
2013-11-22 05:04:39 +01:00
:match = > ' try_files name1 name2;' ,
2013-11-22 04:10:53 +01:00
} ,
{
:title = > 'should set index_file(s)' ,
:attr = > 'index_files' ,
:value = > [ 'name1' , 'name2' ] ,
:match = > ' index name1 name2;' ,
} ,
2013-11-22 05:22:01 +01:00
{
:title = > 'should set auth_basic' ,
:attr = > 'auth_basic' ,
:value = > 'value' ,
:match = > ' auth_basic "value";' ,
} ,
{
:title = > 'should set auth_basic_user_file' ,
:attr = > 'auth_basic_user_file' ,
:value = > 'value' ,
:match = > ' auth_basic_user_file value;' ,
} ,
2013-11-22 04:10:53 +01:00
{
:title = > 'should contain ordered appended directives' ,
:attr = > 'location_cfg_append' ,
2014-03-13 11:01:40 +01:00
:value = > { 'test1' = > 'test value 1' , 'test2' = > [ 'test value 2a' , 'test value 2b' ] , 'allow' = > 'test value 3' ,
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
' allow test value 3;' ,
2014-03-13 11:01:40 +01:00
' test1 test value 1;' ,
' test2 test value 2a;' ,
' test2 test value 2b;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
2014-01-13 19:20:02 +01:00
{
:title = > 'should contain rewrite rules' ,
:attr = > 'rewrite_rules' ,
:value = > [
'^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last' ,
'^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last' ,
'^/users/(.*)$ /show?user=$1? last' ,
] ,
:match = > [
' rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;' ,
' rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;' ,
' rewrite ^/users/(.*)$ /show?user=$1? last;' ,
] ,
} ,
{
:title = > 'should not set rewrite_rules' ,
:attr = > 'rewrite_rules' ,
:value = > [ ] ,
:notmatch = > / rewrite /
} ,
2013-11-22 04:10:53 +01:00
] . each do | param |
context " when #{ param [ :attr ] } is #{ param [ :value ] } " do
let :default_params do { :location = > 'location' , :www_root = > '/var/www/root' , :vhost = > 'vhost1' } end
let :params do default_params . merge ( { param [ :attr ] . to_sym = > param [ :value ] } ) end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) }
2013-11-22 04:10:53 +01:00
it param [ :title ] do
2014-06-10 23:10:00 +02:00
lines = subject . resource ( 'concat::fragment' , Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . send ( :parameters ) [ :content ] . split ( " \n " )
2013-12-01 01:52:12 +01:00
( lines & Array ( param [ :match ] ) ) . should == Array ( param [ :match ] )
2013-12-06 17:36:28 +01:00
Array ( param [ :notmatch ] ) . each do | item |
2014-06-10 23:10:00 +02:00
should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . without_content ( item )
2013-12-06 17:36:28 +01:00
end
2013-11-22 04:10:53 +01:00
end
end
end
end
describe " vhost_location_empty template content " do
[
{
:title = > 'should set the location' ,
:attr = > 'location' ,
:value = > 'my_location' ,
:match = > ' location my_location {' ,
} ,
{
:title = > 'should contain ordered config directives' ,
:attr = > 'location_custom_cfg' ,
2014-03-07 15:20:58 +01:00
:value = > { 'test1' = > [ 'test value 1a' , 'test value 1b' ] , 'test2' = > 'test value 2' , 'allow' = > 'test value 3' ,
2014-03-13 11:01:40 +01:00
'test4' = > { 'subtest1' = > [ '"sub test value1a"' , '"sub test value1b"' ] ,
2014-03-12 08:21:15 +01:00
'subtest2' = > '"sub test value2"' } } ,
2013-11-22 04:10:53 +01:00
:match = > [
' allow test value 3;' ,
2014-03-07 13:53:32 +01:00
' test1 test value 1a;' ,
' test1 test value 1b;' ,
2013-11-22 04:10:53 +01:00
' test2 test value 2;' ,
2014-03-07 15:20:58 +01:00
' test4 subtest1 "sub test value1a";' ,
' test4 subtest1 "sub test value1b";' ,
2014-03-12 08:21:15 +01:00
' test4 subtest2 "sub test value2";' ,
2013-11-22 04:10:53 +01:00
] ,
} ,
] . each do | param |
context " when #{ param [ :attr ] } is #{ param [ :value ] } " do
let :default_params do { :location = > 'location' , :location_custom_cfg = > { 'test1' = > 'value1' } , :vhost = > 'vhost1' } end
let :params do default_params . merge ( { param [ :attr ] . to_sym = > param [ :value ] } ) end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) }
2013-11-22 04:10:53 +01:00
it param [ :title ] do
2014-06-10 23:10:00 +02:00
lines = subject . resource ( 'concat::fragment' , Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . send ( :parameters ) [ :content ] . split ( " \n " )
2013-12-01 01:52:12 +01:00
( lines & Array ( param [ :match ] ) ) . should == Array ( param [ :match ] )
2013-12-06 17:36:28 +01:00
Array ( param [ :notmatch ] ) . each do | item |
2014-06-10 23:10:00 +02:00
should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500- #{ params [ :location ] } " ) ) . without_content ( item )
2013-12-06 17:36:28 +01:00
end
2013-11-22 04:10:53 +01:00
end
end
end
end
context 'attribute resources' do
2014-01-06 18:41:47 +01:00
context 'when fastcgi => "localhost:9000"' do
let :params do { :fastcgi = > 'localhost:9000' , :vhost = > 'vhost1' } end
2013-11-22 04:10:53 +01:00
it { should contain_file ( '/etc/nginx/fastcgi_params' ) . with_mode ( '0770' ) }
end
context 'when ssl_only => true' do
let :params do { :ssl_only = > true , :vhost = > 'vhost1' , :www_root = > '/' , } end
2014-06-10 23:10:00 +02:00
it { should_not contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500-rspec-test " ) ) }
2013-11-22 04:10:53 +01:00
end
context 'when ssl_only => false' do
let :params do { :ssl_only = > false , :vhost = > 'vhost1' , :www_root = > '/' , } end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-500-rspec-test " ) ) }
2013-11-22 04:10:53 +01:00
end
context 'when ssl => true' do
let :params do { :ssl = > true , :vhost = > 'vhost1' , :www_root = > '/' , } end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-800-rspec-test-ssl " ) ) }
2013-11-22 04:10:53 +01:00
end
context 'when ssl => false' do
let :params do { :ssl = > false , :vhost = > 'vhost1' , :www_root = > '/' , } end
2014-06-10 23:10:00 +02:00
it { should_not contain_concat__fragment ( Digest :: MD5 . hexdigest ( " vhost1-800-rspec-test-ssl " ) ) }
2013-11-22 04:10:53 +01:00
end
context 'when auth_basic_user_file => true' do
2014-01-06 18:41:47 +01:00
let :params do { :auth_basic_user_file = > '/path/to/file' , :vhost = > 'vhost1' , :www_root = > '/' , } end
2013-11-22 04:10:53 +01:00
it { should contain_file ( " /etc/nginx/rspec-test_htpasswd " ) }
end
context 'when ensure => absent' do
let :params do {
2014-01-06 18:41:47 +01:00
:www_root = > '/' ,
2013-11-22 04:10:53 +01:00
:vhost = > 'vhost1' ,
:ensure = > 'absent' ,
:ssl = > true ,
2014-01-06 18:41:47 +01:00
:auth_basic_user_file = > '/path/to/file' ,
2013-11-22 04:10:53 +01:00
} end
it { should contain_file ( " /etc/nginx/rspec-test_htpasswd " ) . with_ensure ( 'absent' ) }
end
context " vhost missing " do
let :params do {
:www_root = > '/' ,
} end
it { expect { should contain_class ( 'nginx::resource::location' ) } . to raise_error ( Puppet :: Error , / Cannot create a location reference without attaching to a virtual host / ) }
end
context " location type missing " do
let :params do {
:vhost = > 'vhost1' ,
} end
it { expect { should contain_class ( 'nginx::resource::location' ) } . to raise_error ( Puppet :: Error , / Cannot create a location reference without a www_root, proxy, location_alias, fastcgi, stub_status, or location_custom_cfg defined / ) }
end
context " www_root and proxy are set " do
let :params do {
:vhost = > 'vhost1' ,
:www_root = > '/' ,
2014-01-06 18:41:47 +01:00
:proxy = > 'http://localhost:8000/uri/' ,
2013-11-22 04:10:53 +01:00
} end
it { expect { should contain_class ( 'nginx::resource::location' ) } . to raise_error ( Puppet :: Error , / Cannot define both directory and proxy in a virtual host / ) }
end
2014-01-18 19:31:05 +01:00
context 'when vhost name is sanitized' do
let :title do 'www.rspec-location.com' end
let :params do {
:vhost = > 'www rspec-vhost com' ,
:www_root = > '/' ,
:ssl = > true ,
} end
2014-06-10 23:10:00 +02:00
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " www_rspec-vhost_com-500-www.rspec-location.com " ) ) . with_target ( '/etc/nginx/sites-available/www_rspec-vhost_com.conf' ) }
it { should contain_concat__fragment ( Digest :: MD5 . hexdigest ( " www_rspec-vhost_com-800-www.rspec-location.com-ssl " ) ) . with_target ( '/etc/nginx/sites-available/www_rspec-vhost_com.conf' ) }
2014-01-18 19:31:05 +01:00
end
2013-11-22 04:10:53 +01:00
end
end
end