有人可以建议我如何为以下食谱代码编写chefspec测试吗?
{'tomcat_exec_t' => '/apps/.*/bin(/.*)?',
'tomcat_unit_file_t' => '/usr/lib/systemd/system/tomcat@.*.service',
'tomcat_cache_t' => '/apps/.*/temp(/.*)?',
'tomcat_cache_t' => '/apps/.*/work(/.*)?',
'etc_t' => '/apps/.*/conf(/.*)?',
'tomcat_log_t' => '/apps/.*/logs(/.*)?',
'tomcat_var_run_t' => '/apps/.*/logs/tomcat.pid',
'lib_t' => '/apps/.*/lib(/.*)?',
'tomcat_var_lib_t' => '/apps/.*/webapps(/.*)?'}.each do |sc, f|
selinux_policy_fcontext f do
secontext sc
end
end
我尝试了下面的一些事情,但我想这会失败,因为执行是由selinux_policy食谱执行的。
expect(chef_run).to run_execute('selinux-fcontext-tomcat_exec_t-addormodify')
end
并且由于没有定义方法而失败:
expect(chef_run).to create_selinux-fcontext('selinux-fcontext-tomcat_exec_t-addormodify').with(
fspec: '/apps/.*/bin(/.*)?',
secontext: 'fcontext'
)
所以我不确定还能做些什么。
任何帮助都会非常感激。
谢谢,
爱德华
答案 0 :(得分:0)
您可能需要编写自己的matchers
,具体取决于selinux cookbook是否为您提供。检查libraries目录。
在任何一种情况下,你都想要
expect(chef_run).to create_selinux_policy_fcontext('selinux-fcontext-tomcat_exec_t-addormodify').with(
fspec: '/apps/.*/bin(/.*)?',
secontext: 'fcontext'
end
我假设默认操作为create
,否则您将create
替换为相应的操作