validate_augeas_spec.rb 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. require 'spec_helper_acceptance'
  2. describe 'validate_augeas function', :unless => (fact('osfamily') == 'windows') do
  3. describe 'prep' do
  4. it 'installs augeas for tests'
  5. end
  6. describe 'success' do
  7. context 'with valid inputs with no 3rd argument' do
  8. {
  9. 'root:x:0:0:root:/root:/bin/bash\n' => 'Passwd.lns',
  10. 'proc /proc proc nodev,noexec,nosuid 0 0\n' => 'Fstab.lns',
  11. }.each do |line, lens|
  12. pp1 = <<-DOC
  13. $line = "#{line}"
  14. $lens = "#{lens}"
  15. validate_augeas($line, $lens)
  16. DOC
  17. it "validates a single argument for #{lens}" do
  18. apply_manifest(pp1, :catch_failures => true)
  19. end
  20. end
  21. end
  22. context 'with valid inputs with 3rd and 4th arguments' do
  23. line = 'root:x:0:0:root:/root:/bin/barsh\n'
  24. lens = 'Passwd.lns'
  25. restriction = '$file/*[shell="/bin/barsh"]'
  26. pp2 = <<-DOC
  27. $line = "#{line}"
  28. $lens = "#{lens}"
  29. $restriction = ['#{restriction}']
  30. validate_augeas($line, $lens, $restriction, "my custom failure message")
  31. DOC
  32. it 'validates a restricted value' do
  33. expect(apply_manifest(pp2, :expect_failures => true).stderr).to match(%r{my custom failure message})
  34. end
  35. end
  36. context 'with invalid inputs' do
  37. {
  38. 'root:x:0:0:root' => 'Passwd.lns',
  39. '127.0.1.1' => 'Hosts.lns',
  40. }.each do |line, lens|
  41. pp3 = <<-DOC
  42. $line = "#{line}"
  43. $lens = "#{lens}"
  44. validate_augeas($line, $lens)
  45. DOC
  46. it "validates a single argument for #{lens}" do
  47. apply_manifest(pp3, :expect_failures => true)
  48. end
  49. end
  50. end
  51. context 'with garbage inputs' do
  52. it 'raises an error on invalid inputs'
  53. end
  54. end
  55. describe 'failure' do
  56. it 'handles improper number of arguments'
  57. end
  58. end