我正在创建 sudo 角色,并希望与Molecule一起测试,如果规则不正确,该角色将失败。
我们如何定义我们期望剧本因分子而失败?
例如,如果我具有以下配置:
sudo__entries:
- name: super_alice
content: "alice ALL NOPASSWD"
该角色将失败,因为visudo
无法验证文件。
这就是我要测试的行为。
答案 0 :(得分:0)
您可以修改rvest
以使用抢救模块测试故障场景,并使用与此单元测试范例类似的方法:
converge.yml
角色try {
foo();
Assert.fail();
} catch(FooException e) {
// Caught expected exception from foo()
}
的示例故障场景将有一个sudo
,看起来像:
converge.yml
您还可以使用---
- name: Does not converge
hosts: all
tasks:
- block:
- name: "Include sudo"
include_role:
name: "sudo"
register: expected_failure
- name: "Check execution halted"
fail:
msg: "Execution should stop before this task"
register: should_not_run
rescue:
- assert:
that:
- expected_failure is defined
- should_not_run is not defined
来补充这一点,以断言故障情况并未使主机处于故障状态。