minitest-chef-handler 0.3.0 → 0.4.0

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 (40) hide show
  1. data/History.txt +8 -1
  2. data/LICENSE +1 -0
  3. data/README.md +58 -2
  4. data/Rakefile +15 -0
  5. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/README.md +0 -0
  6. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/attributes/default.rb +0 -0
  7. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/files/default/handlers/README +0 -0
  8. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/metadata.json +0 -0
  9. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/metadata.rb +0 -0
  10. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/providers/default.rb +0 -0
  11. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/recipes/default.rb +0 -0
  12. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/recipes/json_file.rb +0 -0
  13. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/recipes/minitest.rb +0 -0
  14. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/resources/default.rb +0 -0
  15. data/examples/{cookbooks → simple-solo/cookbooks}/foo/recipes/default.rb +0 -0
  16. data/examples/{cookbooks → simple-solo/cookbooks}/foo/test/test_foo.rb +0 -0
  17. data/examples/{dna.json → simple-solo/dna.json} +0 -0
  18. data/examples/simple-solo/solo.rb +6 -0
  19. data/examples/simple-solo/spec/foo_spec.rb +9 -0
  20. data/examples/{test → simple-solo/test}/test_foo.rb +0 -0
  21. data/examples/spec_examples/attributes/default.rb +8 -0
  22. data/examples/spec_examples/files/default/tests/minitest/example_test.rb +232 -0
  23. data/examples/spec_examples/metadata.rb +5 -0
  24. data/examples/spec_examples/recipes/default.rb +68 -0
  25. data/examples/spec_examples/templates/default/foo.erb +3 -0
  26. data/lib/minitest-chef-handler.rb +8 -23
  27. data/lib/minitest-chef-handler/assertions.rb +129 -0
  28. data/lib/minitest-chef-handler/context.rb +16 -0
  29. data/lib/minitest-chef-handler/infections.rb +37 -0
  30. data/lib/minitest-chef-handler/resources.rb +54 -0
  31. data/lib/minitest-chef-handler/runner.rb +12 -0
  32. data/lib/minitest-chef-handler/spec.rb +19 -0
  33. data/lib/minitest-chef-handler/unit.rb +11 -0
  34. data/minitest-chef-handler.gemspec +3 -1
  35. data/spec/minitest-chef-handler/assertions_spec.rb +293 -0
  36. data/spec/minitest-chef-handler/infections_spec.rb +31 -0
  37. data/spec/minitest-chef-handler/resources_spec.rb +51 -0
  38. data/spec/spec_helper.rb +16 -0
  39. metadata +65 -22
  40. data/examples/solo.rb +0 -4
@@ -0,0 +1,3 @@
1
+ # Sample configuration file for test purposes.
2
+ #
3
+ phaser_setting=<%= @phasers %>
@@ -1,4 +1,11 @@
1
- require 'minitest/unit'
1
+ require 'minitest-chef-handler/context'
2
+ require 'minitest-chef-handler/resources'
3
+ require 'minitest-chef-handler/unit'
4
+ require 'minitest-chef-handler/spec'
5
+ require 'minitest-chef-handler/runner'
6
+
7
+ require 'minitest-chef-handler/assertions'
8
+ require 'minitest-chef-handler/infections'
2
9
 
3
10
  module MiniTest
4
11
  module Chef
@@ -42,27 +49,5 @@ module MiniTest
42
49
  Gem::Version.new(MiniTest::Unit::VERSION) >= Gem::Version.new('2.1.0')
43
50
  end
44
51
  end
45
-
46
- class Runner < MiniTest::Unit
47
- attr_reader :run_status
48
-
49
- def initialize(run_status)
50
- @run_status = run_status
51
- super()
52
- end
53
- end
54
-
55
- class TestCase < MiniTest::Unit::TestCase
56
- attr_reader :run_status, :node, :run_context
57
-
58
- def run(runner)
59
- if runner.respond_to?(:run_status)
60
- @run_status = runner.run_status
61
- @node = @run_status.node
62
- @run_context = @run_status.run_context
63
- end
64
- super(runner)
65
- end
66
- end
67
52
  end
68
53
  end
@@ -0,0 +1,129 @@
1
+ module MiniTest
2
+ module Chef
3
+ module Assertions
4
+
5
+ def self.resource_exists(name, options)
6
+ options[:description] = name unless options[:description]
7
+ define_method("assert_#{name}_exists") do |resource|
8
+ refute resource.send(options[:field]).nil?,
9
+ "Expected #{options[:description]} '#{resource.name}' to exist"
10
+ resource
11
+ end
12
+ define_method("refute_#{name}_exists") do |resource|
13
+ assert resource.send(options[:field]).nil?,
14
+ "Expected #{options[:description]} '#{resource.name}' to not exist"
15
+ resource
16
+ end
17
+ end
18
+
19
+ resource_exists :cron, :field => :command, :description => 'cron entry'
20
+ resource_exists :group, :field => :gid
21
+ resource_exists :ifconfig, :field => :device, :description => 'network interface'
22
+ resource_exists :link, :field => :to
23
+ resource_exists :user, :field => :uid
24
+
25
+ def assert_enabled(service)
26
+ assert service.enabled, "Expected service '#{service.name}' to be enabled"
27
+ service
28
+ end
29
+
30
+ def refute_enabled(service)
31
+ refute service.enabled, "Expected service '#{service.name}' to not be enabled"
32
+ service
33
+ end
34
+
35
+ def assert_group_includes(members, group)
36
+ members = [members] unless members.respond_to?(:&)
37
+ assert group.members & members == members, "Expected group '#{group.name}' to include members: #{members.join(', ')}"
38
+ group
39
+ end
40
+
41
+ def refute_group_includes(members, group)
42
+ members = [members] unless members.respond_to?(:&)
43
+ refute group.members & members == members, "Expected group '#{group.name}' not to include members: #{members.join(', ')}"
44
+ group
45
+ end
46
+
47
+ def assert_includes_content(file, content)
48
+ assert File.read(file.path).include?(content), "Expected file '#{file.path}' to include the specified content"
49
+ file
50
+ end
51
+
52
+ def refute_includes_content(file, content)
53
+ refute File.read(file.path).include?(content), "Expected file '#{file.path}' not to include the specified content"
54
+ file
55
+ end
56
+
57
+ def assert_installed(package)
58
+ refute package.version.nil?, "Expected package '#{package.name}' to be installed"
59
+ package
60
+ end
61
+
62
+ def refute_installed(package)
63
+ assert package.version.nil?, "Expected package '#{package.name}' to not be installed"
64
+ package
65
+ end
66
+
67
+ def assert_matches_content(file, regexp)
68
+ assert File.read(file.path).match(regexp), "Expected the contents of file '#{file.path}' to match the regular expression '#{regexp}'"
69
+ file
70
+ end
71
+
72
+ def refute_matches_content(file, regexp)
73
+ refute File.read(file.path).match(regexp), "Expected the contents of file '#{file.path}' not to match the regular expression '#{regexp}'"
74
+ file
75
+ end
76
+
77
+ def assert_modified_after(file_or_dir, time)
78
+ assert File.mtime(file_or_dir.path).to_i >= time.to_i, "Expected the file '#{file_or_dir.path}' to have been modified after '#{time}'"
79
+ file_or_dir
80
+ end
81
+
82
+ def refute_modified_after(file_or_dir, time)
83
+ refute File.mtime(file_or_dir.path) >= time, "Expected the file '#{file_or_dir.path}' not to have been modified after '#{time}'"
84
+ file_or_dir
85
+ end
86
+
87
+ def assert_mounted(mount)
88
+ assert mount.mounted, "Expected mount point '#{mount.name}' to be mounted"
89
+ mount
90
+ end
91
+
92
+ def refute_mounted(mount)
93
+ refute mount.mounted, "Expected mount point '#{mount.name}' to not be mounted"
94
+ mount
95
+ end
96
+
97
+ def assert_mount_enabled(mount)
98
+ assert mount.enabled, "Expected mount point '#{mount.name}' to be enabled"
99
+ mount
100
+ end
101
+
102
+ def refute_mount_enabled(mount)
103
+ refute mount.enabled, "Expected mount point '#{mount.name}' to not be enabled"
104
+ mount
105
+ end
106
+
107
+ def assert_path_exists(file_or_dir)
108
+ assert File.exists?(file_or_dir.path), "Expected path '#{file_or_dir.path}' to exist"
109
+ file_or_dir
110
+ end
111
+
112
+ def refute_path_exists(file_or_dir)
113
+ refute File.exists?(file_or_dir.path), "Expected path '#{file_or_dir.path}' not to exist"
114
+ file_or_dir
115
+ end
116
+
117
+ def assert_running(service)
118
+ assert service.running, "Expected service '#{service.name}' to be running"
119
+ service
120
+ end
121
+
122
+ def refute_running(service)
123
+ refute service.running, "Expected service '#{service.name}' not to be running"
124
+ service
125
+ end
126
+
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,16 @@
1
+ module MiniTest
2
+ module Chef
3
+ module Context
4
+ attr_reader :run_status, :node, :run_context
5
+
6
+ def run(runner)
7
+ if runner.respond_to?(:run_status)
8
+ @run_status = runner.run_status
9
+ @node = @run_status.node
10
+ @run_context = @run_status.run_context
11
+ end
12
+ super(runner)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,37 @@
1
+ require 'chef'
2
+
3
+ module MiniTest
4
+ module Chef
5
+ module Infections extend ::Chef::Mixin::ConvertToClassName
6
+
7
+ def self.infect_resource(resource, meth, new_name)
8
+ clazz = ::Chef::Resource.const_get(convert_to_class_name(resource.to_s))
9
+ clazz.infect_an_assertion "assert_#{meth}".to_sym,
10
+ "must_#{new_name}".to_sym, :only_one_argument
11
+ clazz.infect_an_assertion "refute_#{meth}".to_sym,
12
+ "wont_#{new_name}".to_sym, :only_one_argument
13
+ end
14
+
15
+ infect_resource :cron, :cron_exists, :exist
16
+ infect_resource :directory, :modified_after, :be_modified_after
17
+ infect_resource :directory, :path_exists, :exist
18
+ infect_resource :file, :includes_content, :include
19
+ infect_resource :file, :matches_content, :match
20
+ infect_resource :file, :modified_after, :be_modified_after
21
+ infect_resource :file, :path_exists, :exist
22
+ infect_resource :group, :group_exists, :exist
23
+ infect_resource :ifconfig, :ifconfig_exists, :exist
24
+ infect_resource :link, :link_exists, :exist
25
+ infect_resource :mount, :mounted, :be_mounted
26
+ infect_resource :mount, :mount_enabled, :be_enabled
27
+ infect_resource :service, :enabled, :be_enabled
28
+ infect_resource :service, :running, :be_running
29
+ infect_resource :package, :installed, :be_installed
30
+ infect_resource :user, :user_exists, :exist
31
+
32
+ ::Chef::Resource::Group.infect_an_assertion :assert_group_includes, :must_include
33
+ ::Chef::Resource::Group.infect_an_assertion :refute_group_includes, :wont_include
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,54 @@
1
+ require 'chef'
2
+ require 'etc'
3
+ require 'minitest/unit'
4
+
5
+ module MiniTest
6
+ module Chef
7
+ module Resources
8
+ include ::Chef::Mixin::ConvertToClassName
9
+
10
+ def self.register_resource(resource, *required_args)
11
+ define_method(resource) do |name, *options|
12
+ clazz = ::Chef::Resource.const_get(convert_to_class_name(resource.to_s))
13
+ res = clazz.new(name, run_context)
14
+ required_args.each do |arg|
15
+ res.send(arg, options.first[arg])
16
+ end
17
+ provider = ::Chef::Platform.provider_for_resource(res)
18
+ provider.load_current_resource
19
+ provider.current_resource
20
+ end
21
+ end
22
+
23
+ [:cron, :directory, :file, :group,
24
+ :link, :package, :service, :user].each{ |r| register_resource(r) }
25
+
26
+ register_resource(:ifconfig, :device)
27
+ register_resource(:mount, :device)
28
+
29
+ ::Chef::Resource.class_eval do
30
+ include MiniTest::Assertions
31
+ def with(attribute, values)
32
+ actual_values = resource_value(attribute, values)
33
+ assert_equal values, actual_values,
34
+ "The #{resource_name} does not have the expected #{attribute}"
35
+ self
36
+ end
37
+ alias :and :with
38
+ alias :must_have :with
39
+ private
40
+
41
+ def resource_value(attribute, values)
42
+ case attribute
43
+ when :mode then mode.kind_of?(Integer) ? mode.to_s(8) : mode.to_s
44
+ when :owner || :user then Etc.getpwuid(owner).name
45
+ when :group then Etc.getgrgid(group).name
46
+ else send(attribute)
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,12 @@
1
+ module MiniTest
2
+ module Chef
3
+ class Runner < MiniTest::Unit
4
+ attr_reader :run_status
5
+
6
+ def initialize(run_status)
7
+ @run_status = run_status
8
+ super()
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,19 @@
1
+ module MiniTest
2
+ module Chef
3
+ require 'minitest/spec'
4
+
5
+ class Spec < MiniTest::Spec
6
+ include Assertions
7
+ include Context
8
+ include Resources
9
+ end
10
+
11
+ MiniTest::Spec.register_spec_type(/\Arecipe::/, MiniTest::Chef::Spec)
12
+ end
13
+ end
14
+
15
+ module Kernel
16
+ def describe_recipe(desc, additional_desc = nil, &block)
17
+ describe('recipe::' + desc, additional_desc, &block)
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module MiniTest
2
+ module Chef
3
+ require 'minitest/unit'
4
+
5
+ class TestCase < MiniTest::Unit::TestCase
6
+ include Assertions
7
+ include Context
8
+ include Resources
9
+ end
10
+ end
11
+ end
@@ -11,7 +11,9 @@ Gem::Specification.new do |gem|
11
11
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
12
12
  gem.name = "minitest-chef-handler"
13
13
  gem.require_paths = ["lib"]
14
- gem.version = '0.3.0'
14
+ gem.version = '0.4.0'
15
15
 
16
+ gem.add_dependency('chef')
16
17
  gem.add_development_dependency('rake')
18
+ gem.add_development_dependency('rspec')
17
19
  end
@@ -0,0 +1,293 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe MiniTest::Chef::Assertions do
4
+
5
+ include MiniTest::Chef::Assertions
6
+
7
+ def resource_for(hash)
8
+ Class.new do
9
+ hash.each_pair do |key,value|
10
+ define_method(key) { value }
11
+ end
12
+ end.new
13
+ end
14
+
15
+ module MiniTest::Chef::Assertions
16
+ class File
17
+ def self.read(path)
18
+ '# Generated by Chef'
19
+ end
20
+ def self.mtime(path)
21
+ Time.now.utc
22
+ end
23
+ def self.exists?(path)
24
+ path == '/etc/foo'
25
+ end
26
+ end
27
+ end
28
+
29
+ it "verifies that cron entries exist" do
30
+ cron = resource_for({:name => 'foo', :command => 'ls'})
31
+ assert_cron_exists(cron).must_equal cron
32
+ assert_triggered "Expected cron entry 'foo' to exist" do
33
+ assert_cron_exists(resource_for({:name => 'foo', :command => nil}))
34
+ end
35
+ end
36
+
37
+ it "verifies that cron entries do not exist" do
38
+ cron = resource_for({:name => 'foo', :command => nil})
39
+ refute_cron_exists(cron).must_equal cron
40
+ assert_triggered "Expected cron entry 'foo' to not exist" do
41
+ refute_cron_exists(resource_for({:name => 'foo', :command => 'ls'}))
42
+ end
43
+ end
44
+
45
+ it "verifies that groups exist" do
46
+ group = resource_for({:name => 'foo', :gid => 100})
47
+ assert_group_exists(group).must_equal group
48
+ assert_triggered "Expected group 'foo' to exist" do
49
+ assert_group_exists(resource_for({:name => 'foo', :gid => nil}))
50
+ end
51
+ end
52
+
53
+ it "verifies that groups do not exist" do
54
+ group = resource_for({:name => 'foo', :gid => nil})
55
+ refute_group_exists(group).must_equal group
56
+ assert_triggered "Expected group 'foo' to not exist" do
57
+ refute_group_exists(resource_for({:name => 'foo', :gid => 100}))
58
+ end
59
+ end
60
+
61
+ it "verifies that network interfaces exist" do
62
+ ifconfig = resource_for({:name => 'foo', :device => '/dev/eth0'})
63
+ assert_ifconfig_exists(ifconfig).must_equal ifconfig
64
+ assert_triggered "Expected network interface 'foo' to exist" do
65
+ assert_ifconfig_exists(resource_for({:name => 'foo', :device => nil}))
66
+ end
67
+ end
68
+
69
+ it "verifies that network interfaces do not exist" do
70
+ ifconfig = resource_for({:name => 'foo', :device => nil})
71
+ refute_ifconfig_exists(ifconfig).must_equal ifconfig
72
+ assert_triggered "Expected network interface 'foo' to not exist" do
73
+ refute_ifconfig_exists(resource_for({:name => 'foo', :device => '/dev/eth0'}))
74
+ end
75
+ end
76
+
77
+ it "verifies that filesystem links exist" do
78
+ link = resource_for({:name => 'foo', :to => 'bar'})
79
+ assert_link_exists(link).must_equal link
80
+ assert_triggered "Expected link 'foo' to exist" do
81
+ assert_link_exists(resource_for({:name => 'foo', :to => nil}))
82
+ end
83
+ end
84
+
85
+ it "verifies that filesystem links do not exist" do
86
+ link = resource_for({:name => 'foo', :to => nil})
87
+ refute_link_exists(link).must_equal link
88
+ assert_triggered "Expected link 'foo' to not exist" do
89
+ refute_link_exists(resource_for({:name => 'foo', :to => 'bar'}))
90
+ end
91
+ end
92
+
93
+ it "verifies that users exist" do
94
+ user = resource_for({:name => 'foo', :uid => 200})
95
+ assert_user_exists(user).must_equal user
96
+ assert_triggered "Expected user 'foo' to exist" do
97
+ assert_user_exists(resource_for({:name => 'foo', :uid => nil}))
98
+ end
99
+ end
100
+
101
+ it "verifies that users do not exist" do
102
+ user = resource_for({:name => 'foo', :uid => nil})
103
+ refute_user_exists(user).must_equal user
104
+ assert_triggered "Expected user 'foo' to not exist" do
105
+ refute_user_exists(resource_for({:name => 'foo', :uid => 200}))
106
+ end
107
+ end
108
+
109
+ it "verifies that services are enabled" do
110
+ service = resource_for({:name => 'bar', :enabled => true})
111
+ assert_enabled(service).must_equal service
112
+ assert_triggered "Expected service 'bar' to be enabled" do
113
+ assert_enabled(resource_for({:name => 'bar', :enabled => false}))
114
+ end
115
+ end
116
+
117
+ it "verifies that services are not enabled" do
118
+ service = resource_for({:name => 'bar', :enabled => false})
119
+ refute_enabled(service).must_equal service
120
+ assert_triggered "Expected service 'bar' to not be enabled" do
121
+ refute_enabled(resource_for({:name => 'bar', :enabled => true}))
122
+ end
123
+ end
124
+
125
+ it "verifies that a group contains the expected members" do
126
+ group = resource_for({:name => 'foo', :members => ['bar', 'baz']})
127
+ assert_group_includes('bar', group).must_equal group
128
+ assert_group_includes(['bar'], group).must_equal group
129
+ assert_group_includes(['bar', 'baz'], group).must_equal group
130
+ assert_triggered "Expected group 'foo' to include members: bar" do
131
+ assert_group_includes('bar',
132
+ resource_for({:name => 'foo', :members => ['baz']}))
133
+ end
134
+ assert_triggered "Expected group 'foo' to include members: bar, bert" do
135
+ assert_group_includes(['bar', 'bert'],
136
+ resource_for({:name => 'foo', :members => ['baz']}))
137
+ end
138
+ assert_triggered "Expected group 'foo' to include members: bar, bert" do
139
+ assert_group_includes(['bar', 'bert'],
140
+ resource_for({:name => 'foo', :members => ['bar', 'baz']}))
141
+ end
142
+ end
143
+
144
+ it "verifies that a group does not contain the expected members" do
145
+ group = resource_for({:name => 'foo', :members => ['bar', 'baz']})
146
+ refute_group_includes('fum', group).must_equal group
147
+ refute_group_includes(['fum'], group).must_equal group
148
+ refute_group_includes(['fum', 'baz'], group).must_equal group
149
+ assert_triggered "Expected group 'foo' not to include members: bar" do
150
+ refute_group_includes('bar',
151
+ resource_for({:name => 'foo', :members => ['bar']}))
152
+ end
153
+ assert_triggered "Expected group 'foo' not to include members: bar" do
154
+ refute_group_includes(['bar'],
155
+ resource_for({:name => 'foo', :members => ['bar', 'bert']}))
156
+ end
157
+ assert_triggered "Expected group 'foo' not to include members: bar, bert" do
158
+ refute_group_includes(['bar', 'bert'],
159
+ resource_for({:name => 'foo', :members => ['bar', 'bert']}))
160
+ end
161
+ end
162
+
163
+ it "verifies that a file includes the specified content" do
164
+ file = resource_for({:path => '/etc/bar'})
165
+ assert_includes_content(file, 'Chef').must_equal file
166
+ assert_triggered "Expected file '/etc/bar' to include the specified content" do
167
+ assert_includes_content(resource_for({:path => '/etc/bar'}), 'chef')
168
+ end
169
+ end
170
+
171
+ it "verifies that a file does not include the specified content" do
172
+ file = resource_for({:path => '/etc/bar'})
173
+ refute_includes_content(file, 'chef').must_equal file
174
+ assert_triggered "Expected file '/etc/bar' not to include the specified content" do
175
+ refute_includes_content(resource_for({:path => '/etc/bar'}), 'Chef')
176
+ end
177
+ end
178
+
179
+ it "verifies that a package is installed" do
180
+ package = resource_for({:name => 'bash', :version => '4.2-0ubuntu4'})
181
+ assert_installed(package).must_equal package
182
+ assert_triggered "Expected package 'bash' to be installed" do
183
+ assert_installed(resource_for({:name => 'bash', :version => nil}))
184
+ end
185
+ end
186
+
187
+ it "verifies that a package is not installed" do
188
+ package = resource_for({:name => 'bash', :version => nil})
189
+ refute_installed(package).must_equal package
190
+ assert_triggered "Expected package 'bash' to not be installed" do
191
+ refute_installed(resource_for({:name => 'bash', :version => '4.2-0ubuntu4'}))
192
+ end
193
+ end
194
+
195
+ it "verifies that a file matches the specified content" do
196
+ file = resource_for({:path => '/etc/bar'})
197
+ assert_matches_content(file, /Chef$/).must_equal file
198
+ assert_triggered "Expected the contents of file '/etc/bar' to match the regular expression '^Chef'" do
199
+ assert_matches_content(resource_for({:path => '/etc/bar'}), '^Chef')
200
+ end
201
+ end
202
+
203
+ it "verifies that a file does not match the specified content" do
204
+ file = resource_for({:path => '/etc/bar'})
205
+ refute_matches_content(file, /^Chef/).must_equal file
206
+ assert_triggered "Expected the contents of file '/etc/bar' not to match the regular expression 'Chef$'" do
207
+ refute_matches_content(resource_for({:path => '/etc/bar'}), 'Chef$')
208
+ end
209
+ end
210
+
211
+ it "verifies that a file was modified after the specified time" do
212
+ file = resource_for({:path => '/etc/bar'})
213
+ the_distant_future = Time.utc(Time.now.utc.year + 30)
214
+ assert_modified_after(file, Time.at(0).utc).must_equal file
215
+ assert_triggered "Expected the file '/etc/bar' to have been modified after '#{the_distant_future}'" do
216
+ assert_modified_after(resource_for({:path => '/etc/bar'}), the_distant_future)
217
+ end
218
+ end
219
+
220
+ it "verifies that a file was not modified after the specified time" do
221
+ file = resource_for({:path => '/etc/bar'})
222
+ the_distant_future = Time.utc(Time.now.utc.year + 30)
223
+ refute_modified_after(file, the_distant_future).must_equal file
224
+ assert_triggered "Expected the file '/etc/bar' not to have been modified after '#{Time.at(0).utc}'" do
225
+ refute_modified_after(resource_for({:path => '/etc/bar'}), Time.at(0).utc)
226
+ end
227
+ end
228
+
229
+ it "verifies that a mount point is mounted" do
230
+ mount = resource_for({:name => '/mnt/foo', :mounted => true})
231
+ assert_mounted(mount).must_equal mount
232
+ assert_triggered "Expected mount point '/mnt/foo' to be mounted" do
233
+ assert_mounted(resource_for({:name => '/mnt/foo', :mounted => false}))
234
+ end
235
+ end
236
+
237
+ it "verifies that a mount point is not mounted" do
238
+ mount = resource_for({:name => '/mnt/foo', :mounted => false})
239
+ refute_mounted(mount).must_equal mount
240
+ assert_triggered "Expected mount point '/mnt/foo' to not be mounted" do
241
+ refute_mounted(resource_for({:name => '/mnt/foo', :mounted => true}))
242
+ end
243
+ end
244
+
245
+ it "verifies that a mount point is enabled" do
246
+ mount = resource_for({:name => '/mnt/foo', :enabled => true})
247
+ assert_mount_enabled(mount).must_equal mount
248
+ assert_triggered "Expected mount point '/mnt/foo' to be enabled" do
249
+ assert_mount_enabled(resource_for({:name => '/mnt/foo', :enabled => false}))
250
+ end
251
+ end
252
+
253
+ it "verifies that a mount point is not enabled" do
254
+ mount = resource_for({:name => '/mnt/foo', :enabled => false})
255
+ refute_mount_enabled(mount).must_equal mount
256
+ assert_triggered "Expected mount point '/mnt/foo' to not be enabled" do
257
+ refute_mount_enabled(resource_for({:name => '/mnt/foo', :enabled => true}))
258
+ end
259
+ end
260
+
261
+ it "verifies that a file path exists" do
262
+ file = resource_for({:path => '/etc/foo'})
263
+ assert_path_exists(file).must_equal file
264
+ assert_triggered "Expected path '/etc/bar' to exist" do
265
+ assert_path_exists(resource_for({:path => '/etc/bar'}))
266
+ end
267
+ end
268
+
269
+ it "verifies that a file path does not exist" do
270
+ file = resource_for({:path => '/etc/bar'})
271
+ refute_path_exists(file).must_equal file
272
+ assert_triggered "Expected path '/etc/foo' not to exist" do
273
+ refute_path_exists(resource_for({:path => '/etc/foo'}))
274
+ end
275
+ end
276
+
277
+ it "verifies that a service is running" do
278
+ service = resource_for({:name => 'httpd', :running => true})
279
+ assert_running(service).must_equal service
280
+ assert_triggered "Expected service 'httpd' to be running" do
281
+ assert_running(resource_for({:name => 'httpd', :running => false}))
282
+ end
283
+ end
284
+
285
+ it "verifies that a service is not running" do
286
+ service = resource_for({:name => 'httpd', :running => false})
287
+ refute_running(service).must_equal service
288
+ assert_triggered "Expected service 'httpd' not to be running" do
289
+ refute_running(resource_for({:name => 'httpd', :running => true}))
290
+ end
291
+ end
292
+
293
+ end