rouster 0.42 → 0.53
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Rakefile +19 -0
- data/Vagrantfile +4 -1
- data/lib/rouster.rb +153 -31
- data/lib/rouster/deltas.rb +224 -58
- data/lib/rouster/puppet.rb +118 -25
- data/lib/rouster/testing.rb +202 -42
- data/lib/rouster/tests.rb +23 -11
- data/path_helper.rb +3 -4
- data/rouster.gemspec +2 -1
- data/test/functional/deltas/test_get_crontab.rb +24 -1
- data/test/functional/deltas/test_get_groups.rb +74 -2
- data/test/functional/deltas/test_get_packages.rb +43 -5
- data/test/functional/deltas/test_get_ports.rb +26 -1
- data/test/functional/deltas/test_get_services.rb +37 -4
- data/test/functional/deltas/test_get_users.rb +35 -2
- data/test/functional/puppet/test_facter.rb +41 -1
- data/test/functional/test_caching.rb +5 -1
- data/test/functional/test_dirs.rb +25 -0
- data/test/functional/test_get.rb +10 -6
- data/test/functional/test_new.rb +10 -9
- data/test/functional/test_put.rb +8 -10
- data/test/functional/test_restart.rb +1 -2
- data/test/functional/test_run.rb +2 -3
- data/test/functional/test_validate_file.rb +30 -0
- data/test/puppet/test_apply.rb +5 -5
- data/test/puppet/test_roles.rb +16 -3
- data/test/unit/test_parse_ls_string.rb +24 -0
- data/test/unit/testing/test_validate_file.rb +39 -46
- data/test/unit/testing/test_validate_port.rb +98 -0
- metadata +33 -17
@@ -8,7 +8,7 @@ class TestFacter < Test::Unit::TestCase
|
|
8
8
|
|
9
9
|
def setup
|
10
10
|
assert_nothing_raised do
|
11
|
-
@app = Rouster.new(:name => 'app')
|
11
|
+
@app = Rouster.new(:name => 'app', :cache_timeout => 10)
|
12
12
|
end
|
13
13
|
|
14
14
|
@app.up()
|
@@ -38,6 +38,46 @@ class TestFacter < Test::Unit::TestCase
|
|
38
38
|
assert_equal(nil, @app.facts)
|
39
39
|
end
|
40
40
|
|
41
|
+
def test_caching
|
42
|
+
# NOTE: this only works if (time_to_run_facter < cache_timeout)
|
43
|
+
|
44
|
+
assert_nothing_raised do
|
45
|
+
@app.facter(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
first_cached_time = @app.cache[:facter]
|
49
|
+
|
50
|
+
assert_nothing_raised do
|
51
|
+
@app.facter(true)
|
52
|
+
end
|
53
|
+
|
54
|
+
second_cached_time = @app.cache[:facter]
|
55
|
+
|
56
|
+
assert_equal(first_cached_time, second_cached_time)
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_cache_invalidation
|
61
|
+
|
62
|
+
assert_nothing_raised do
|
63
|
+
@app.facter(true)
|
64
|
+
end
|
65
|
+
|
66
|
+
first_cached_time = @app.cache[:facter]
|
67
|
+
|
68
|
+
sleep (@app.cache_timeout + 1)
|
69
|
+
|
70
|
+
assert_nothing_raised do
|
71
|
+
@app.facter(true)
|
72
|
+
end
|
73
|
+
|
74
|
+
second_cached_time = @app.cache[:facter]
|
75
|
+
|
76
|
+
assert_not_equal(first_cached_time, second_cached_time)
|
77
|
+
assert(second_cached_time > first_cached_time)
|
78
|
+
|
79
|
+
end
|
80
|
+
|
41
81
|
def test_custom_facts
|
42
82
|
|
43
83
|
facts = nil
|
@@ -74,8 +74,12 @@ class TestCaching < Test::Unit::TestCase
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def test_ssh_caching
|
77
|
+
|
78
|
+
skip('see comments in rouster.rb line ~84')
|
79
|
+
|
77
80
|
timeout = 100
|
78
|
-
app = Rouster.new(:name => 'app', :cache_timeout => timeout)
|
81
|
+
app = Rouster.new(:name => 'app', :sshtunnel => true, :cache_timeout => timeout)
|
82
|
+
app.up()
|
79
83
|
|
80
84
|
assert_equal(app.cache_timeout, timeout)
|
81
85
|
|
@@ -56,6 +56,31 @@ class TestDirs < Test::Unit::TestCase
|
|
56
56
|
|
57
57
|
end
|
58
58
|
|
59
|
+
def test_case_sensitvity
|
60
|
+
dirs_to_create = ['Fizz', 'foo', 'baz']
|
61
|
+
dirs_expected_sensitive = ['foo']
|
62
|
+
dirs_expected_insensitive = ['Fizz', 'foo']
|
63
|
+
|
64
|
+
dirs_to_create.each do |dir|
|
65
|
+
@app.run(sprintf('mkdir -p %s/%s', @dir, dir))
|
66
|
+
end
|
67
|
+
|
68
|
+
dirs_actual_sensitive = @app.dirs(@dir, 'f*', false)
|
69
|
+
|
70
|
+
dirs_actual_sensitive.each do |dir|
|
71
|
+
dir = dir.gsub(/#{@dir}/, '')
|
72
|
+
assert(dirs_expected_sensitive.member?(dir))
|
73
|
+
end
|
74
|
+
|
75
|
+
dirs_actual_insensitive = @app.dirs(@dir, 'f*', true)
|
76
|
+
|
77
|
+
dirs_actual_insensitive.each do |dir|
|
78
|
+
dir = dir.gsub(/#{@dir}/, '')
|
79
|
+
assert(dirs_expected_insensitive.member?(dir))
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
59
84
|
def teardown
|
60
85
|
@app.run(sprintf('rm -rf %s', @dir))
|
61
86
|
end
|
data/test/functional/test_get.rb
CHANGED
@@ -45,7 +45,8 @@ class TestGet < Test::Unit::TestCase
|
|
45
45
|
def test_remote_path_dne
|
46
46
|
|
47
47
|
assert_raise Rouster::FileTransferError do
|
48
|
-
@app.get(@kb_dne_location, @kg_local_location)
|
48
|
+
res = @app.get(@kb_dne_location, @kg_local_location)
|
49
|
+
assert_equal(false, res)
|
49
50
|
end
|
50
51
|
|
51
52
|
assert_equal(false, File.file?(@kg_local_location), 'known bad remote file path DNE')
|
@@ -54,7 +55,7 @@ class TestGet < Test::Unit::TestCase
|
|
54
55
|
def test_with_suspended_machine
|
55
56
|
@app.suspend()
|
56
57
|
|
57
|
-
#assert_raise Rouster::SSHConnectionError do <--
|
58
|
+
#assert_raise Rouster::SSHConnectionError do <-- this is what we want when the connection is bad, as opposed to permission/disk space issues
|
58
59
|
assert_raise Rouster::FileTransferError do
|
59
60
|
@app.get(@kg_remote_location, @kg_local_location)
|
60
61
|
end
|
@@ -63,10 +64,13 @@ class TestGet < Test::Unit::TestCase
|
|
63
64
|
end
|
64
65
|
|
65
66
|
def teardown
|
66
|
-
# TODO we should suspend instead if any test failed for triage
|
67
|
-
#@app.destroy()
|
68
|
-
#@ppm.destroy()
|
69
|
-
|
70
67
|
File.delete(@kg_local_location) if File.file?(@kg_local_location).true?
|
71
68
|
end
|
69
|
+
|
70
|
+
def self.shutdown
|
71
|
+
# TODO we should suspend instead if any test failed for triage
|
72
|
+
#@app.suspend()
|
73
|
+
#@ppm.suspend()
|
74
|
+
end
|
75
|
+
|
72
76
|
end
|
data/test/functional/test_new.rb
CHANGED
@@ -23,7 +23,7 @@ class TestNew < Test::Unit::TestCase
|
|
23
23
|
|
24
24
|
def test_2_good_openssh_tunnel
|
25
25
|
@app = Rouster.new(:name => 'app', :sshtunnel => true)
|
26
|
-
|
26
|
+
7
|
27
27
|
# TODO how do we properly test this? we really need the rspec should_call mechanism...
|
28
28
|
|
29
29
|
assert_equal(true, @app.is_available_via_ssh?)
|
@@ -33,23 +33,24 @@ class TestNew < Test::Unit::TestCase
|
|
33
33
|
|
34
34
|
assert_nothing_raised do
|
35
35
|
@app = Rouster.new(
|
36
|
-
:name
|
37
|
-
:passthrough
|
38
|
-
:sudo
|
39
|
-
:verbosity
|
40
|
-
#:vagrantfile
|
41
|
-
:sshkey
|
36
|
+
:name => 'app',
|
37
|
+
:passthrough => false,
|
38
|
+
:sudo => false,
|
39
|
+
:verbosity => 4,
|
40
|
+
#:vagrantfile => traverse_up(Dir.pwd, 'Vagrantfile'), # this is what happens anyway..
|
41
|
+
:sshkey => ENV['VAGRANT_HOME'].nil? ? sprintf('%s/.vagrant.d/insecure_private_key', ENV['HOME']) : sprintf('%s/insecure_private_key', ENV['VAGRANT_HOME']),
|
42
|
+
:cache_timeout => 10,
|
42
43
|
)
|
43
44
|
|
44
|
-
|
45
45
|
end
|
46
46
|
|
47
47
|
assert_equal('app', @app.name)
|
48
|
-
assert_equal(
|
48
|
+
assert_equal(false, @app.is_passthrough?())
|
49
49
|
assert_equal(false, @app.uses_sudo?())
|
50
50
|
assert_equal(4, @app.verbosity) # is this going to be strinigified?
|
51
51
|
assert_equal(true, File.file?(@app.vagrantfile))
|
52
52
|
assert_equal(true, File.file?(@app.sshkey))
|
53
|
+
assert_equal(10, @app.cache_timeout)
|
53
54
|
end
|
54
55
|
|
55
56
|
def test_4_bad_name_instantiation
|
data/test/functional/test_put.rb
CHANGED
@@ -49,35 +49,33 @@ class TestPut < Test::Unit::TestCase
|
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
|
-
=begin
|
53
|
-
TODO fix tests failing for unknown/incorrect reasons
|
54
52
|
def test_with_suspended_machine
|
55
53
|
@app.is_available_via_ssh?() # make sure we have a tunnel
|
56
54
|
@app.suspend()
|
57
55
|
|
58
|
-
assert_raise
|
56
|
+
#assert_raise Rouster::SSHConnectionError
|
57
|
+
assert_raise Rouster::FileTransferError do
|
59
58
|
@app.put(__FILE__, @kg_local_location)
|
60
59
|
end
|
61
60
|
|
62
|
-
assert_equal(false, @app.is_file?(@kg_local_location), 'when machine is suspended, unable to get from it')
|
61
|
+
#assert_equal(false, @app.is_file?(@kg_local_location), 'when machine is suspended, unable to get from it')
|
63
62
|
end
|
64
63
|
|
65
64
|
def test_with_suspended_machine_after_destroying_ssh_tunnel
|
66
|
-
@app.
|
65
|
+
@app.disconnect_ssh_tunnel()
|
67
66
|
@app.suspend()
|
68
67
|
|
69
|
-
assert_raise Rouster::SSHConnectionError do
|
68
|
+
#assert_raise Rouster::SSHConnectionError do
|
69
|
+
assert_raise Rouster::FileTransferError do
|
70
70
|
@app.put(__FILE__, @kg_local_location)
|
71
71
|
end
|
72
72
|
|
73
|
-
assert_equal(false, @app.is_file?(@kg_local_location), 'when machine is suspended, and connection is manually destroyed, unable to get from it')
|
73
|
+
#assert_equal(false, @app.is_file?(@kg_local_location), 'when machine is suspended, and connection is manually destroyed, unable to get from it')
|
74
74
|
end
|
75
|
-
=end
|
76
75
|
|
77
76
|
def teardown
|
78
|
-
# TODO we should suspend instead if any test failed for triage
|
79
77
|
#@app.destroy()
|
80
|
-
|
78
|
+
@app.suspend()
|
81
79
|
File.delete(@kg_location) if File.file?(@kg_location).true?
|
82
80
|
end
|
83
81
|
end
|
@@ -10,7 +10,6 @@
|
|
10
10
|
assert_nothing_raised do
|
11
11
|
@app = Rouster.new(:name => 'app', :verbosity => 4)
|
12
12
|
end
|
13
|
-
|
14
13
|
end
|
15
14
|
|
16
15
|
def test_happy_path
|
@@ -31,7 +30,7 @@
|
|
31
30
|
sleep 10
|
32
31
|
end
|
33
32
|
|
34
|
-
new_uptime = @app.facter()['uptime_seconds'].to_i
|
33
|
+
new_uptime = @app.facter(false)['uptime_seconds'].to_i
|
35
34
|
|
36
35
|
assert_not_equal(original_uptime, new_uptime)
|
37
36
|
assert(original_uptime > new_uptime)
|
data/test/functional/test_run.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
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
|
+
require 'test/unit'
|
7
|
+
|
8
|
+
class TestValidateFileFunctional < Test::Unit::TestCase
|
9
|
+
|
10
|
+
def setup
|
11
|
+
# expose private methods
|
12
|
+
Rouster.send(:public, *Rouster.private_instance_methods)
|
13
|
+
Rouster.send(:public, *Rouster.protected_instance_methods)
|
14
|
+
|
15
|
+
@app = Rouster.new(:name => 'app')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_negative_functional_fallthrough
|
19
|
+
|
20
|
+
assert_equal(false, @app.validate_file('/foo', {}, false, true))
|
21
|
+
assert_equal(false, @app.validate_file('/fizzy', { :ensure => 'directory' }, false, true))
|
22
|
+
assert_equal(false, @app.validate_file('/bang', { :ensure => 'file' }, false, true))
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
# noop
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/test/puppet/test_apply.rb
CHANGED
@@ -121,23 +121,23 @@ class TestPuppetApply < Test::Unit::TestCase
|
|
121
121
|
|
122
122
|
# manually specified testing
|
123
123
|
app_expected_files.each_pair do |f,e|
|
124
|
-
assert_equal(true, @app.validate_file(f,e))
|
124
|
+
assert_equal(true, @app.validate_file(f,e), "file[#{f}] expectation[#{e}]")
|
125
125
|
end
|
126
126
|
|
127
127
|
app_expected_groups.each_pair do |g,e|
|
128
|
-
assert_equal(true, @app.validate_group(g,e))
|
128
|
+
assert_equal(true, @app.validate_group(g,e), "group[#{g}] expectation[#{e}]")
|
129
129
|
end
|
130
130
|
|
131
131
|
app_expected_packages.each_pair do |p,e|
|
132
|
-
assert_equal(true, @app.validate_package(p, e))
|
132
|
+
assert_equal(true, @app.validate_package(p, e), "package[#{p}] expectation[#{e}]")
|
133
133
|
end
|
134
134
|
|
135
135
|
app_expected_services.each_pair do |s,e|
|
136
|
-
assert_equal(true, @app.validate_service(s,e))
|
136
|
+
assert_equal(true, @app.validate_service(s,e), "service[#{s}] expectation[#{e}]")
|
137
137
|
end
|
138
138
|
|
139
139
|
app_expected_users.each_pair do |u,e|
|
140
|
-
assert_equal(true, @app.validate_user(u,e))
|
140
|
+
assert_equal(true, @app.validate_user(u,e), "user[#{u}] expectation[#{e}]")
|
141
141
|
end
|
142
142
|
|
143
143
|
end
|
data/test/puppet/test_roles.rb
CHANGED
@@ -9,10 +9,23 @@ require 'test/unit'
|
|
9
9
|
class TestPuppetRoles < Test::Unit::TestCase
|
10
10
|
|
11
11
|
def setup
|
12
|
-
@ppm = Rouster.new(:name => 'ppm', :vagrantfile => '../piab/Vagrantfile')
|
13
|
-
@ppm.rebuild() unless @ppm.status.eql?('running') # destroy / rebuild
|
14
12
|
|
15
|
-
|
13
|
+
piab_vagrantfile = sprintf('%s/../../../piab/Vagrantfile', File.dirname(File.expand_path(__FILE__)))
|
14
|
+
|
15
|
+
unless File.file?(piab_vagrantfile)
|
16
|
+
skip(sprintf('missing SFDC specific Vagrantfile[%s], skipping', piab_vagrantfile))
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_nothing_raised do
|
20
|
+
@ppm = Rouster.new(:name => 'ppm', :vagrantfile => piab_vagrantfile)
|
21
|
+
@ppm.up()
|
22
|
+
@ppm.remove_existing_certs('ppm')
|
23
|
+
#@ppm.rebuild() unless @ppm.status.eql?('running') # destroy / rebuild
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_nothing_raised do
|
27
|
+
@app = Rouster.new(:name => 'app', :vagrantfile => piab_vagrantfile)
|
28
|
+
end
|
16
29
|
|
17
30
|
assert_nothing_raised do
|
18
31
|
@ppm.run_puppet('master', { :expected_exitcode => [0,2] })
|
@@ -327,6 +327,30 @@ class TestParseLsString < Test::Unit::TestCase
|
|
327
327
|
|
328
328
|
end
|
329
329
|
|
330
|
+
def test_suid
|
331
|
+
str = "drwxr-sr-x 2 root root 4096 Oct 7 17:09 /etc/nagios/objects\n"
|
332
|
+
|
333
|
+
skip('need to improve (read: implement) actual suid support')
|
334
|
+
|
335
|
+
expectation = {
|
336
|
+
:directory? => true,
|
337
|
+
:file? => false,
|
338
|
+
:mode => '4755', # right now, we return '0755', if we detect an 's', do we just +4000?
|
339
|
+
:name => '/etc/nagios/objects',
|
340
|
+
:owner => 'root',
|
341
|
+
:group => 'root',
|
342
|
+
:size => '4096',
|
343
|
+
:executable? => [true, true, true], # right now, we return [true,false,true]
|
344
|
+
:readable? => [true, true, true],
|
345
|
+
:writeable? => [true, false, false],
|
346
|
+
}
|
347
|
+
|
348
|
+
res = @app.exposed_parse_ls_string(str)
|
349
|
+
|
350
|
+
assert_equal(expectation, res)
|
351
|
+
|
352
|
+
end
|
353
|
+
|
330
354
|
def teardown
|
331
355
|
# noop
|
332
356
|
end
|
@@ -48,67 +48,60 @@ 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' }, 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
|
-
assert(@app.validate_file('/etc/fizzbang', { :ensure => 'absent' }, true))
|
66
|
-
assert(@app.validate_file('/etc/fizzbang', { :ensure => false }, true ))
|
67
|
-
|
68
|
-
assert(@app.validate_file('/etc', { :ensure => 'directory' }, true))
|
69
|
-
assert(@app.validate_file('/etc', { :ensure => 'dir' }, true))
|
70
|
-
assert(@app.validate_file('/etc', { :ensure => 'dir', :file => 'false' }, true))
|
71
|
-
assert(@app.validate_file('/etc', { :ensure => 'dir', :directory => 'true' }, true))
|
72
|
-
assert(@app.validate_file('/etc', { :ensure => 'dir', :file => 'false', :directory => 'true' }, true))
|
73
|
-
|
74
|
-
assert(@app.validate_file('/fizzy', { :ensure => 'absent' }, true))
|
75
|
-
assert(@app.validate_file('/fizzy', { :ensure => false }, true))
|
76
|
-
assert(@app.validate_file('/fizzy', { :exists => 'false' }, true))
|
77
|
-
assert(@app.validate_file('/fizzy', { :exists => false }, true))
|
78
|
-
|
79
|
-
# TODO need to do :contains testing in a non-unit context
|
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))
|
80
78
|
|
81
79
|
end
|
82
80
|
|
83
81
|
def test_positive_constrained
|
84
82
|
|
85
|
-
assert(@app.validate_file('/etc/hosts', { :mode => '0644', :constrain => 'is_virtual true' }, true))
|
83
|
+
assert(@app.validate_file('/etc/hosts', { :mode => '0644', :constrain => 'is_virtual true' }, false, true))
|
86
84
|
|
87
85
|
end
|
88
86
|
|
89
87
|
def test_negative_basic
|
90
88
|
|
91
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :mode => '0777' }, true))
|
92
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :permissions => '0777' }, true))
|
93
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :file => 'false' }, true ))
|
94
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :file => false }, true))
|
95
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :directory => 'true' }, true))
|
96
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :directory => true }, true))
|
97
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :size => 'foo' }, true))
|
98
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :size => 100 }, true))
|
99
|
-
assert_equal(false, @app.validate_file('/etc/hosts', { :size => '100'}, true))
|
100
|
-
|
101
|
-
# 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
|
102
|
-
assert_equal(false, @app.validate_file('/foo', {}, true))
|
103
|
-
assert_equal(false, @app.validate_file('/fizzy', { :ensure => 'directory' }, true))
|
104
|
-
assert_equal(false, @app.validate_file('/bang', { :ensure => 'file' }, true))
|
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))
|
105
98
|
|
106
99
|
end
|
107
100
|
|
108
101
|
def test_negative_constrained
|
109
102
|
|
110
|
-
assert(@app.validate_file('/etc/hosts', { :mode => '0644', :constrain => 'is_virtual false' }, true))
|
111
|
-
assert(@app.validate_file('/etc/hosts', { :mode => '0999', :constrain => 'is_virtual false' }, true))
|
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))
|
112
105
|
|
113
106
|
end
|
114
107
|
|