chefspec测试非核心资源

时间:2015-08-13 13:33:58

标签: chef chefspec

有人可以建议我如何为以下食谱代码编写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'
    )

所以我不确定还能做些什么。

任何帮助都会非常感激。

谢谢,

爱德华

1 个答案:

答案 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替换为相应的操作