rouster 0.7 → 0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -3
  3. data/README.md +7 -241
  4. data/Rakefile +18 -55
  5. data/Vagrantfile +8 -26
  6. data/lib/rouster.rb +183 -404
  7. data/lib/rouster/deltas.rb +118 -577
  8. data/lib/rouster/puppet.rb +34 -209
  9. data/lib/rouster/testing.rb +59 -366
  10. data/lib/rouster/tests.rb +19 -70
  11. data/path_helper.rb +7 -5
  12. data/rouster.gemspec +1 -3
  13. data/test/basic.rb +1 -4
  14. data/test/functional/deltas/test_get_groups.rb +2 -74
  15. data/test/functional/deltas/test_get_packages.rb +4 -86
  16. data/test/functional/deltas/test_get_ports.rb +1 -26
  17. data/test/functional/deltas/test_get_services.rb +4 -43
  18. data/test/functional/deltas/test_get_users.rb +2 -35
  19. data/test/functional/puppet/test_facter.rb +1 -41
  20. data/test/functional/puppet/test_get_puppet_star.rb +68 -0
  21. data/test/functional/test_caching.rb +1 -5
  22. data/test/functional/test_dirs.rb +0 -25
  23. data/test/functional/test_get.rb +6 -10
  24. data/test/functional/test_inspect.rb +1 -1
  25. data/test/functional/test_is_file.rb +1 -17
  26. data/test/functional/test_new.rb +22 -233
  27. data/test/functional/test_put.rb +11 -9
  28. data/test/functional/test_restart.rb +4 -1
  29. data/test/functional/test_run.rb +3 -2
  30. data/test/puppet/test_apply.rb +11 -13
  31. data/test/puppet/test_roles.rb +173 -0
  32. data/test/unit/test_new.rb +0 -88
  33. data/test/unit/test_parse_ls_string.rb +0 -67
  34. data/test/unit/testing/test_validate_file.rb +47 -39
  35. data/test/unit/testing/test_validate_package.rb +10 -36
  36. metadata +6 -46
  37. data/.reek +0 -63
  38. data/.travis.yml +0 -11
  39. data/Gemfile +0 -17
  40. data/Gemfile.lock +0 -102
  41. data/LICENSE +0 -9
  42. data/examples/aws.rb +0 -85
  43. data/examples/openstack.rb +0 -61
  44. data/examples/passthrough.rb +0 -71
  45. data/lib/rouster/vagrant.rb +0 -311
  46. data/plugins/aws.rb +0 -347
  47. data/plugins/openstack.rb +0 -136
  48. data/test/functional/deltas/test_get_crontab.rb +0 -161
  49. data/test/functional/deltas/test_get_os.rb +0 -68
  50. data/test/functional/test_is_in_file.rb +0 -40
  51. data/test/functional/test_passthroughs.rb +0 -94
  52. data/test/functional/test_validate_file.rb +0 -131
  53. data/test/unit/puppet/resources/puppet_run_with_failed_exec +0 -59
  54. data/test/unit/puppet/resources/puppet_run_with_successful_exec +0 -61
  55. data/test/unit/puppet/test_get_puppet_star.rb +0 -91
  56. data/test/unit/puppet/test_puppet_parsing.rb +0 -44
  57. data/test/unit/testing/resources/osx-launchd +0 -285
  58. data/test/unit/testing/resources/rhel-systemd +0 -46
  59. data/test/unit/testing/resources/rhel-systemv +0 -41
  60. data/test/unit/testing/resources/rhel-upstart +0 -20
  61. data/test/unit/testing/test_get_services.rb +0 -178
  62. data/test/unit/testing/test_validate_cron.rb +0 -78
  63. data/test/unit/testing/test_validate_port.rb +0 -103
@@ -0,0 +1,173 @@
1
+ require sprintf('%s/../../path_helper', File.dirname(File.expand_path(__FILE__)))
2
+
3
+ require 'rouster'
4
+ require 'rouster/puppet'
5
+ require 'rouster/testing'
6
+
7
+ require 'test/unit'
8
+
9
+ class TestPuppetRoles < Test::Unit::TestCase
10
+
11
+ def setup
12
+ @ppm = Rouster.new(:name => 'ppm', :vagrantfile => '../piab/Vagrantfile')
13
+ @ppm.rebuild() unless @ppm.status.eql?('running') # destroy / rebuild
14
+
15
+ @app = Rouster.new(:name => 'app', :vagrantfile => '../piab/Vagrantfile')
16
+
17
+ assert_nothing_raised do
18
+ @ppm.run_puppet('master', { :expected_exitcode => [0,2] })
19
+ end
20
+
21
+ assert_match(/Finished catalog run in/, @ppm.get_output())
22
+
23
+ # define base here
24
+ @expected_packages = {
25
+ 'puppet' => { :ensure => true },
26
+ 'facter' => { :ensure => 'present' }
27
+ }
28
+
29
+ @expected_files = {
30
+ '/etc/passwd' => {
31
+ :contains => [ 'vagrant', 'root'],
32
+ :ensure => 'file',
33
+ :group => 'root',
34
+ :mode => '0644',
35
+ :owner => 'root'
36
+ },
37
+
38
+ '/tmp' => {
39
+ :ensure => 'directory',
40
+ :group => 'root',
41
+ :owner => 'root',
42
+ }
43
+ }
44
+
45
+ @expected_groups = {
46
+ 'root' => { :ensure => 'true' }
47
+ }
48
+
49
+ @expected_services = Hash.new()
50
+ @expected_users = {
51
+ 'root' => {
52
+ :ensure => 'present',
53
+ :group => 'root',
54
+ }
55
+ }
56
+
57
+ # manually specified testing
58
+ @expected_files.each_pair do |f,e|
59
+ assert_equal(true, @ppm.validate_file(f,e))
60
+ end
61
+
62
+ @expected_groups.each_pair do |g,e|
63
+ assert_equal(true, @ppm.validate_group(g,e))
64
+ end
65
+
66
+ @expected_packages.each_pair do |p,e|
67
+ assert_equal(true, @ppm.validate_package(p, e))
68
+ end
69
+
70
+ @expected_services.each_pair do |s,e|
71
+ assert_equal(true, @ppm.validate_service(s,e))
72
+ end
73
+
74
+ @expected_users.each_pair do |u,e|
75
+ assert_equal(true, @ppm.validate_user(u,e))
76
+ end
77
+
78
+ end
79
+
80
+ def test_app
81
+ app_expected_packages = {
82
+ 'rsync' => { :ensure => 'present' }
83
+ }.merge(@expected_packages)
84
+
85
+ app_expected_files = {
86
+ '/etc/hosts' => {
87
+ :contains => [ 'localhost', 'app' ],
88
+ :ensure => 'present',
89
+ :group => 'root',
90
+ :owner => 'root',
91
+ },
92
+ }.merge(@expected_files)
93
+
94
+ app_expected_groups = {
95
+ 'vagrant' => {
96
+ :ensure => 'present',
97
+ }
98
+ }.merge(@expected_groups)
99
+
100
+ app_expected_services = {}.merge(@expected_services)
101
+
102
+ app_expected_users = {
103
+ 'vagrant' => {
104
+ :ensure => 'present',
105
+ },
106
+ }.merge(@expected_users)
107
+
108
+ assert_nothing_raised do
109
+ @app.up()
110
+ @app.run_puppet('master', { :expected_exitcode => [0, 2] })
111
+ end
112
+
113
+ assert_match(/Finished catalog run in/, @app.get_output())
114
+
115
+ # manually specified testing
116
+ app_expected_files.each_pair do |f,e|
117
+ assert_equal(true, @app.validate_file(f,e))
118
+ end
119
+
120
+ app_expected_groups.each_pair do |g,e|
121
+ assert_equal(true, @app.validate_group(g,e))
122
+ end
123
+
124
+ app_expected_packages.each_pair do |p,e|
125
+ assert_equal(true, @app.validate_package(p, e))
126
+ end
127
+
128
+ app_expected_services.each_pair do |s,e|
129
+ assert_equal(true, @app.validate_service(s,e))
130
+ end
131
+
132
+ app_expected_users.each_pair do |u,e|
133
+ assert_equal(true, @app.validate_user(u,e))
134
+ end
135
+
136
+ end
137
+
138
+ def dont_test_app_automated
139
+ catalog = @app.get_catalog()
140
+ expectations = @app.parse_catalog(catalog)
141
+
142
+ assert_nothing_raised do
143
+ @app.up()
144
+ @app.run_puppet('master', { :expected_exitcode => 2 })
145
+ end
146
+
147
+ assert_match(/Finished catalog run in/, @app.get_output())
148
+
149
+ expectations.each_pair do |k,v|
150
+ res = nil
151
+ case v[:type]
152
+ when :dir, :file
153
+ res = @app.validate_file(k, v)
154
+ when :group
155
+ res = @app.validate_group(k, v)
156
+ when :package
157
+ res = @app.validate_package(k, v)
158
+ when :user
159
+ res = @app.validate_user(k, v)
160
+ when :service
161
+ res = @app.validate_service(k, v)
162
+ end
163
+
164
+ assert_equal(true, res, sprintf('failed[%s]: %s',v, res))
165
+ end
166
+
167
+ end
168
+
169
+ def teardown
170
+ # noop
171
+ end
172
+
173
+ end
@@ -9,8 +9,6 @@ class TestNew < Test::Unit::TestCase
9
9
 
10
10
  def setup
11
11
  @app = nil
12
- # TODO make this work, don't want to have to instance_variable_get everything..
13
- #Rouster.send(:public, *Rouster.instance_variables)
14
12
  end
15
13
 
16
14
  # TODO this is an awful pattern, do better
@@ -26,92 +24,6 @@ class TestNew < Test::Unit::TestCase
26
24
  assert_equal(true, @app.uses_sudo?())
27
25
  end
28
26
 
29
- def test_2_good_instantiation
30
-
31
- assert_nothing_raised do
32
- @app = Rouster.new(
33
- :cache_timeout => 10,
34
- :name => 'ppm',
35
- :retries => 3,
36
- :verbosity => [3,2],
37
- :unittest => true,
38
- )
39
- end
40
-
41
- assert_equal(10, @app.cache_timeout)
42
- assert_equal('ppm', @app.name)
43
- assert_equal(3, @app.retries)
44
-
45
- assert_equal(3, @app.instance_variable_get(:@verbosity_console))
46
- assert_equal(2, @app.instance_variable_get(:@verbosity_logfile))
47
-
48
- end
49
-
50
-
51
- def test_default_overrides_aws_passthrough
52
-
53
- key = sprintf('%s/.ssh/id_rsa', ENV['HOME'])
54
- omit(sprintf('no suitable private key found at [%s]', key)) unless File.file?(key)
55
-
56
- @app = Rouster.new(
57
- :name => 'aws',
58
- :passthrough => {
59
- :type => :aws,
60
- :ami => 'ami-1234',
61
- :keypair => 'you@aws',
62
- :key => key,
63
- :key_id => 'key',
64
- :secret_key => 'secret_access_key',
65
-
66
- # aws specific overrides
67
- :region => 'us-east-2',
68
- :user => 'cloud-user',
69
-
70
- # generic passthrough overrides
71
- :ssh_sleep_ceiling => 1,
72
- :ssh_sleep_time => 1,
73
- },
74
-
75
- :unittest => true,
76
- )
77
-
78
- passthrough = @app.passthrough
79
-
80
- assert_equal('us-east-2', passthrough[:region])
81
- assert_equal('cloud-user', passthrough[:user])
82
- assert_equal(1, passthrough[:ssh_sleep_ceiling])
83
- assert_equal(1, passthrough[:ssh_sleep_time])
84
-
85
- assert_not_nil(passthrough[:ami])
86
- assert_not_nil(passthrough[:key_id])
87
- assert_not_nil(passthrough[:min_count])
88
- assert_not_nil(passthrough[:max_count])
89
- assert_not_nil(passthrough[:size])
90
- assert_not_nil(passthrough[:ssh_port])
91
-
92
- end
93
-
94
- def test_default_overrides_passthrough
95
-
96
- @app = Rouster.new(
97
- :name => 'local',
98
- :passthrough => {
99
- :type => :local,
100
- :paranoid => :secure,
101
- :ssh_sleep_ceiling => 100,
102
- },
103
-
104
- :unittest => true,
105
- )
106
-
107
- passthrough = @app.passthrough
108
-
109
- assert_equal(:secure, passthrough[:paranoid])
110
- assert_equal(100, passthrough[:ssh_sleep_ceiling])
111
- assert_not_equal(100, passthrough[:ssh_sleep_time])
112
- end
113
-
114
-
115
27
  def teardown
116
28
  # noop
117
29
  end
@@ -29,7 +29,6 @@ class TestParseLsString < Test::Unit::TestCase
29
29
  :owner => 'root',
30
30
  :group => 'root',
31
31
  :size => '199',
32
- :symlink? => false,
33
32
  :executable? => [false, false, false],
34
33
  :readable? => [true, true, true],
35
34
  :writeable? => [false, false, false]
@@ -51,7 +50,6 @@ class TestParseLsString < Test::Unit::TestCase
51
50
  :owner => 'root',
52
51
  :group => 'root',
53
52
  :size => '199',
54
- :symlink? => false,
55
53
  :executable? => [false, false, false],
56
54
  :readable? => [true, false, false],
57
55
  :writeable? => [false, false, false]
@@ -73,7 +71,6 @@ class TestParseLsString < Test::Unit::TestCase
73
71
  :owner => 'root',
74
72
  :group => 'root',
75
73
  :size => '199',
76
- :symlink? => false,
77
74
  :executable? => [false, false, false],
78
75
  :readable? => [false, true, false],
79
76
  :writeable? => [false, false, false]
@@ -95,7 +92,6 @@ class TestParseLsString < Test::Unit::TestCase
95
92
  :owner => 'root',
96
93
  :group => 'root',
97
94
  :size => '199',
98
- :symlink? => false,
99
95
  :executable? => [false, false, false],
100
96
  :readable? => [false, false, true],
101
97
  :writeable? => [false, false, false]
@@ -117,7 +113,6 @@ class TestParseLsString < Test::Unit::TestCase
117
113
  :owner => 'root',
118
114
  :group => 'root',
119
115
  :size => '199',
120
- :symlink? => false,
121
116
  :executable? => [true, true, true],
122
117
  :readable? => [false, false, false],
123
118
  :writeable? => [false, false, false]
@@ -139,7 +134,6 @@ class TestParseLsString < Test::Unit::TestCase
139
134
  :owner => 'root',
140
135
  :group => 'root',
141
136
  :size => '199',
142
- :symlink? => false,
143
137
  :executable? => [true, false, false],
144
138
  :readable? => [false, false, false],
145
139
  :writeable? => [false, false, false]
@@ -161,7 +155,6 @@ class TestParseLsString < Test::Unit::TestCase
161
155
  :owner => 'root',
162
156
  :group => 'root',
163
157
  :size => '199',
164
- :symlink? => false,
165
158
  :executable? => [false, true, false],
166
159
  :readable? => [false, false, false],
167
160
  :writeable? => [false, false, false]
@@ -183,7 +176,6 @@ class TestParseLsString < Test::Unit::TestCase
183
176
  :owner => 'root',
184
177
  :group => 'root',
185
178
  :size => '199',
186
- :symlink? => false,
187
179
  :executable? => [false, false, true],
188
180
  :readable? => [false, false, false],
189
181
  :writeable? => [false, false, false]
@@ -205,7 +197,6 @@ class TestParseLsString < Test::Unit::TestCase
205
197
  :owner => 'root',
206
198
  :group => 'root',
207
199
  :size => '199',
208
- :symlink? => false,
209
200
  :executable? => [false, false, false],
210
201
  :readable? => [false, false, false],
211
202
  :writeable? => [true, true, true]
@@ -227,7 +218,6 @@ class TestParseLsString < Test::Unit::TestCase
227
218
  :owner => 'root',
228
219
  :group => 'root',
229
220
  :size => '199',
230
- :symlink? => false,
231
221
  :executable? => [false, false, false],
232
222
  :readable? => [false, false, false],
233
223
  :writeable? => [true, false, false]
@@ -249,7 +239,6 @@ class TestParseLsString < Test::Unit::TestCase
249
239
  :owner => 'root',
250
240
  :group => 'root',
251
241
  :size => '199',
252
- :symlink? => false,
253
242
  :executable? => [false, false, false],
254
243
  :readable? => [false, false, false],
255
244
  :writeable? => [false, true, false]
@@ -271,7 +260,6 @@ class TestParseLsString < Test::Unit::TestCase
271
260
  :owner => 'root',
272
261
  :group => 'root',
273
262
  :size => '199',
274
- :symlink? => false,
275
263
  :executable? => [false, false, false],
276
264
  :readable? => [false, false, false],
277
265
  :writeable? => [false, false, true]
@@ -293,7 +281,6 @@ class TestParseLsString < Test::Unit::TestCase
293
281
  :owner => 'vagrant',
294
282
  :group => 'vagrant',
295
283
  :size => '1909',
296
- :symlink? => false,
297
284
  :executable? => [false, false, true],
298
285
  :readable? => [false, false, true],
299
286
  :writeable? => [false, false, true]
@@ -315,7 +302,6 @@ class TestParseLsString < Test::Unit::TestCase
315
302
  :owner => 'vagrant',
316
303
  :group => 'root',
317
304
  :size => '0',
318
- :symlink? => false,
319
305
  :executable? => [false, false, false],
320
306
  :readable? => [true, true, true],
321
307
  :writeable? => [true, false, false]
@@ -326,25 +312,6 @@ class TestParseLsString < Test::Unit::TestCase
326
312
  assert_equal(expectation, res)
327
313
  end
328
314
 
329
- def test_uid_forced
330
- uid = 501
331
- str = "-rw-r--r-- 1 #{uid} root 0 Jun 13 09:35 foo\n"
332
-
333
- res = @app.exposed_parse_ls_string(str)
334
-
335
- assert_equal('501', res[:owner])
336
-
337
- end
338
-
339
- def test_gid_forced
340
- gid = 10
341
- str = "-rw-r--r-- 1 vagrant #{gid} 0 Jun 13 09:35 foo\n"
342
-
343
- res = @app.exposed_parse_ls_string(str)
344
-
345
- assert_equal('10', res[:group])
346
- end
347
-
348
315
  def test_dir_detection
349
316
  dir_str = "drwxrwxrwt 5 root root 4096 May 28 00:26 /tmp/\n"
350
317
  file_str = "-rw-r--r-- 1 root root 906 Oct 2 2012 grub.conf\n"
@@ -360,40 +327,6 @@ class TestParseLsString < Test::Unit::TestCase
360
327
 
361
328
  end
362
329
 
363
- def test_symlink_detection
364
- link = "lrwxrwxrwx 1 vagrant vagrant 10 Mar 13 22:53 foo -> /etc/hosts\n"
365
- file = "-rw-r--r-- 2 root root 166 Mar 13 22:50 /etc/hosts\n"
366
-
367
- assert_equal(true, @app.exposed_parse_ls_string(link)[:symlink?])
368
- assert_equal(false, @app.exposed_parse_ls_string(file)[:symlink?])
369
-
370
- end
371
-
372
- def test_suid
373
- str = "drwxr-sr-x 2 root root 4096 Oct 7 17:09 /etc/nagios/objects\n"
374
-
375
- omit('need to improve (read: implement) actual suid support')
376
-
377
- expectation = {
378
- :directory? => true,
379
- :file? => false,
380
- :mode => '4755', # right now, we return '0755', if we detect an 's', do we just +4000?
381
- :name => '/etc/nagios/objects',
382
- :owner => 'root',
383
- :group => 'root',
384
- :size => '4096',
385
- :symlink? => false,
386
- :executable? => [true, true, true], # right now, we return [true,false,true]
387
- :readable? => [true, true, true],
388
- :writeable? => [true, false, false],
389
- }
390
-
391
- res = @app.exposed_parse_ls_string(str)
392
-
393
- assert_equal(expectation, res)
394
-
395
- end
396
-
397
330
  def teardown
398
331
  # noop
399
332
  end
@@ -48,60 +48,68 @@ class TestValidateFile < Test::Unit::TestCase
48
48
 
49
49
  def test_positive_basic
50
50
 
51
- assert(@app.validate_file('/etc/hosts', { :ensure => 'file', :mode => '0644', :file => true, :directory => false, :owner => 'root', :group => 'root' }, false, true))
52
- assert(@app.validate_file('/etc/hosts', { :exists => 'present' }, false, true ))
53
- assert(@app.validate_file('/etc/hosts', { }, false, true ))
54
- assert(@app.validate_file('/etc/hosts', { :mode => '0644' }, false, true))
55
- assert(@app.validate_file('/etc/hosts', { :permissions => '0644' }, false, true))
56
- assert(@app.validate_file('/etc/hosts', { :size => 166 }, false, true ))
57
- assert(@app.validate_file('/etc/hosts', { :size => '166' }, false, true ))
58
- assert(@app.validate_file('/etc/hosts', { :file => 'true' }, false, true))
59
- assert(@app.validate_file('/etc/hosts', { :file => true }, false, true))
60
- assert(@app.validate_file('/etc/hosts', { :directory => 'false' }, false, true))
61
- assert(@app.validate_file('/etc/hosts', { :directory => false }, false, true))
62
- assert(@app.validate_file('/etc/hosts', { :owner => 'root' }, false, true))
63
- assert(@app.validate_file('/etc/hosts', { :group => 'root' }, false, true))
64
-
65
- assert(@app.validate_file('/etc/fizzbang', { :ensure => 'absent' }, false, true))
66
- assert(@app.validate_file('/etc/fizzbang', { :ensure => false }, false, true ))
67
-
68
- assert(@app.validate_file('/etc', { :ensure => 'directory' }, false, true))
69
- assert(@app.validate_file('/etc', { :ensure => 'dir' }, false, true))
70
- assert(@app.validate_file('/etc', { :ensure => 'dir', :file => 'false' }, false, true))
71
- assert(@app.validate_file('/etc', { :ensure => 'dir', :directory => 'true' }, false, true))
72
- assert(@app.validate_file('/etc', { :ensure => 'dir', :file => 'false', :directory => 'true' }, false, true))
73
-
74
- assert(@app.validate_file('/fizzy', { :ensure => 'absent' }, false, true))
75
- assert(@app.validate_file('/fizzy', { :ensure => false }, false, true))
76
- assert(@app.validate_file('/fizzy', { :exists => 'false' }, false, true))
77
- assert(@app.validate_file('/fizzy', { :exists => false }, false, true))
51
+ assert(@app.validate_file('/etc/hosts', { :ensure => 'file', :mode => '0644', :file => true, :directory => false, :owner => 'root', :group => 'root' }, true))
52
+ assert(@app.validate_file('/etc/hosts', { :exists => 'present' }, true ))
53
+ assert(@app.validate_file('/etc/hosts', { }, true ))
54
+ assert(@app.validate_file('/etc/hosts', { :mode => '0644' }, true))
55
+ assert(@app.validate_file('/etc/hosts', { :permissions => '0644' }, true))
56
+ assert(@app.validate_file('/etc/hosts', { :size => 166 }, true ))
57
+ assert(@app.validate_file('/etc/hosts', { :size => '166' }, true ))
58
+ assert(@app.validate_file('/etc/hosts', { :file => 'true' }, true))
59
+ assert(@app.validate_file('/etc/hosts', { :file => true }, true))
60
+ assert(@app.validate_file('/etc/hosts', { :directory => 'false' }, true))
61
+ assert(@app.validate_file('/etc/hosts', { :directory => false }, true))
62
+ assert(@app.validate_file('/etc/hosts', { :owner => 'root' }, true))
63
+ assert(@app.validate_file('/etc/hosts', { :group => 'root' }, true))
64
+
65
+ # TODO figure out how to run these in a truly unit-y way, since the data is not present in faked hash, we will fall through to functional testing
66
+ #assert(@app.validate_file('/etc/fizzbang', { :ensure => 'absent' }, true))
67
+ #assert(@app.validate_file('/etc/fizzbang', { :ensure => false }, true ))
68
+
69
+ assert(@app.validate_file('/etc', { :ensure => 'directory' }, true))
70
+ assert(@app.validate_file('/etc', { :ensure => 'dir' }, true))
71
+ assert(@app.validate_file('/etc', { :ensure => 'dir', :file => 'false' }, true))
72
+ assert(@app.validate_file('/etc', { :ensure => 'dir', :directory => 'true' }, true))
73
+ assert(@app.validate_file('/etc', { :ensure => 'dir', :file => 'false', :directory => 'true' }, true))
74
+
75
+ assert(@app.validate_file('/fizzy', { :ensure => 'absent' }, true))
76
+ assert(@app.validate_file('/fizzy', { :ensure => false }, true))
77
+ assert(@app.validate_file('/fizzy', { :exists => 'false' }, true))
78
+ assert(@app.validate_file('/fizzy', { :exists => false }, true))
79
+
80
+ # TODO need to do :contains testing in a non-unit context
78
81
 
79
82
  end
80
83
 
81
84
  def test_positive_constrained
82
85
 
83
- assert(@app.validate_file('/etc/hosts', { :mode => '0644', :constrain => 'is_virtual true' }, false, true))
86
+ assert(@app.validate_file('/etc/hosts', { :mode => '0644', :constrain => 'is_virtual true' }, true))
84
87
 
85
88
  end
86
89
 
87
90
  def test_negative_basic
88
91
 
89
- assert_equal(false, @app.validate_file('/etc/hosts', { :mode => '0777' }, false, true))
90
- assert_equal(false, @app.validate_file('/etc/hosts', { :permissions => '0777' }, false, true))
91
- assert_equal(false, @app.validate_file('/etc/hosts', { :file => 'false' }, false, true ))
92
- assert_equal(false, @app.validate_file('/etc/hosts', { :file => false }, false, true))
93
- assert_equal(false, @app.validate_file('/etc/hosts', { :directory => 'true' }, false, true))
94
- assert_equal(false, @app.validate_file('/etc/hosts', { :directory => true }, false, true))
95
- assert_equal(false, @app.validate_file('/etc/hosts', { :size => 'foo' }, false, true))
96
- assert_equal(false, @app.validate_file('/etc/hosts', { :size => 100 }, false, true))
97
- assert_equal(false, @app.validate_file('/etc/hosts', { :size => '100'}, false, true))
92
+ assert_equal(false, @app.validate_file('/etc/hosts', { :mode => '0777' }, true))
93
+ assert_equal(false, @app.validate_file('/etc/hosts', { :permissions => '0777' }, true))
94
+ assert_equal(false, @app.validate_file('/etc/hosts', { :file => 'false' }, true ))
95
+ assert_equal(false, @app.validate_file('/etc/hosts', { :file => false }, true))
96
+ assert_equal(false, @app.validate_file('/etc/hosts', { :directory => 'true' }, true))
97
+ assert_equal(false, @app.validate_file('/etc/hosts', { :directory => true }, true))
98
+ assert_equal(false, @app.validate_file('/etc/hosts', { :size => 'foo' }, true))
99
+ assert_equal(false, @app.validate_file('/etc/hosts', { :size => 100 }, true))
100
+ assert_equal(false, @app.validate_file('/etc/hosts', { :size => '100'}, true))
101
+
102
+ # TODO figure out how to run these in a truly unit-y way, since the data is not present in faked hash, we will fall through to functional testing
103
+ #assert_equal(false, @app.validate_file('/foo', {}, true))
104
+ #assert_equal(false, @app.validate_file('/fizzy', { :ensure => 'directory' }, true))
105
+ #assert_equal(false, @app.validate_file('/bang', { :ensure => 'file' }, true))
98
106
 
99
107
  end
100
108
 
101
109
  def test_negative_constrained
102
110
 
103
- assert(@app.validate_file('/etc/hosts', { :mode => '0644', :constrain => 'is_virtual false' }, false, true))
104
- assert(@app.validate_file('/etc/hosts', { :mode => '0999', :constrain => 'is_virtual false' }, false, true))
111
+ assert(@app.validate_file('/etc/hosts', { :mode => '0644', :constrain => 'is_virtual false' }, true))
112
+ assert(@app.validate_file('/etc/hosts', { :mode => '0999', :constrain => 'is_virtual false' }, true))
105
113
 
106
114
  end
107
115