rouster 0.7 → 0.41

Sign up to get free protection for your applications and to get access to all the features.
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