Я пишу собственный кукольный модуль, который включает ресурс :: apache :: vhost, и хотел бы проверить в моих тестах rspec, что параметр каталогов содержит определенное значение, без воспроизведения всей конфигурации каталогов, которая в основном жестко закодирована в тесте spec.Как проверить, содержит ли параметр массива ресурс Puppet значение
class foo::apache {
# prepend 'from ' to each element in array of subnets
# Change this ugliness to use map once we've upgraded to puppet v4
# open to suggetions on better way to do this too...
$subnets = $::foo::subnets
$subnets_yaml = inline_template('<%= subnets.map {|s| "from " +s}.to_yaml %>')
$allowed_subnets_directives = parseyaml($subnets_yaml)
::apache::vhost { 'foo_vhost':
directories => [
-- snip --
##### How can I check just the path & allow keys of this element?
{ 'path' => '~^.*$',
'Order' => 'deny,allow',
'allow' => concat(['from localhost'],
$allowed_subnets_directives),
'provider' => 'location',
},
]
} # foo_vhost
} # foo::apache
Я снял большую часть манифеста для краткости.
я могу проверить параметр целых директив с чем-то вдоль линий
describe 'foo::apache' do
it { is_expected.to contain_apache__vhost('foo_vhost').with(
'directories' => [{'path' => '~^.*$',
'allow' => ['from localhost',
'from 10.20.30/24',
],},
]
но параметр каталоги длинный и статический, и я заинтересован, чтобы избежать этого.
RSpec include
согласовань выглядит то, что мне нужно, но я не могу работать, как использовать его, чтобы проверить параметр, или $allowed_subnets_directives
переменные
FWIW, предваряя материал ко всему, в массиве может быть сделано в более ранних версиях, используя [функцию regsubst] (http://docs.puppetlabs.com/references/stable/function.html#regsubst). –