aboutsummaryrefslogtreecommitdiff
path: root/spec/acceptance/tests/query_all_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/acceptance/tests/query_all_spec.rb')
-rw-r--r--spec/acceptance/tests/query_all_spec.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/spec/acceptance/tests/query_all_spec.rb b/spec/acceptance/tests/query_all_spec.rb
new file mode 100644
index 0000000..cc92566
--- /dev/null
+++ b/spec/acceptance/tests/query_all_spec.rb
@@ -0,0 +1,34 @@
+test_name 'should query all hosts from hosts file'
+
+tag 'audit:low',
+ 'audit:refactor', # Use block style `test_name`
+ 'audit:acceptance' # Could be done at the integration (or unit) layer though
+# actual changing of resources could irreparably damage a
+# host running this, or require special permissions.
+
+content = '127.0.0.1 test1 test1.local
+127.0.0.2 test2 test2.local
+127.0.0.3 test3 test3.local
+127.0.0.4 test4 test4.local
+'
+
+agents.each do |agent|
+ backup = agent.tmpfile('host-query-all')
+
+ step 'configure the system for testing (including file backups)'
+ on agent, "cp /etc/hosts #{backup}"
+ on agent, 'cat > /etc/hosts', stdin: content
+
+ step 'query all host records using puppet'
+ on(agent, puppet_resource('host')) do
+ found = stdout.scan(%r{host \{ '([^']+)'}).flatten.sort
+ fail_test "the list of returned hosts was wrong: #{found.join(', ')}" unless
+ found == ['test1', 'test2', 'test3', 'test4']
+
+ count = stdout.scan(%r{ensure\s+=>\s+'present'}).length
+ fail_test "found #{count} records, wanted 4" unless count == 4
+ end
+
+ step 'clean up the system afterwards'
+ on agent, "cat #{backup} > /etc/hosts && rm -f #{backup}"
+end