/usr/lib/ruby/vendor_ruby/chef_zero/rspec.rb is in chef-zero 2.0.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | require 'tempfile'
require 'chef_zero/server'
require 'chef_zero/rest_request'
module ChefZero
module RSpec
def self.server
@server
end
def self.server=(value)
@server = value
end
def self.client_key
@client_key
end
def self.client_key=(value)
@client_key = value
end
def self.request_log
@request_log ||= []
end
def self.clear_request_log
@request_log = []
end
def when_the_chef_server(description, *tags, &block)
context "When the Chef server #{description}", *tags do
before :each do
unless ChefZero::RSpec.server
default_opts = {:port => 8889, :signals => false, :log_requests => true}
server_opts = if self.respond_to?(:chef_zero_opts)
default_opts.merge(chef_zero_opts)
else
default_opts
end
# TODO: can this be logged easily?
# pp :zero_opts => server_opts
# Set up configuration so that clients will point to the server
ChefZero::RSpec.server = ChefZero::Server.new(server_opts)
ChefZero::RSpec.client_key = Tempfile.new(['chef_zero_client_key', '.pem'])
ChefZero::RSpec.client_key.write(ChefZero::PRIVATE_KEY)
ChefZero::RSpec.client_key.close
# Start the server
ChefZero::RSpec.server.start_background
ChefZero::RSpec.server.on_response do |request, response|
ChefZero::RSpec.request_log << [ request, response ]
end
else
ChefZero::RSpec.server.clear_data
end
ChefZero::RSpec.clear_request_log
if defined?(Chef::Config)
@old_chef_server_url = Chef::Config.chef_server_url
@old_node_name = Chef::Config.node_name
@old_client_key = Chef::Config.client_key
Chef::Config.chef_server_url = ChefZero::RSpec.server.url
Chef::Config.node_name = 'admin'
Chef::Config.client_key = ChefZero::RSpec.client_key.path
Chef::Config.http_retry_count = 0
end
end
if defined?(Chef::Config)
after :each do
Chef::Config.chef_server_url = @old_chef_server_url
Chef::Config.node_name = @old_node_name
Chef::Config.client_key = @old_client_key
end
end
def self.client(name, client)
before(:each) { ChefZero::RSpec.server.load_data({ 'clients' => { name => client }}) }
end
def self.cookbook(name, version, cookbook, options = {})
before(:each) { ChefZero::RSpec.server.load_data({ 'cookbooks' => { "#{name}-#{version}" => cookbook.merge(options) }}) }
end
def self.data_bag(name, data_bag)
before(:each) { ChefZero::RSpec.server.load_data({ 'data' => { name => data_bag }}) }
end
def self.environment(name, environment)
before(:each) { ChefZero::RSpec.server.load_data({ 'environments' => { name => environment }}) }
end
def self.node(name, node)
before(:each) { ChefZero::RSpec.server.load_data({ 'nodes' => { name => node }}) }
end
def self.role(name, role)
before(:each) { ChefZero::RSpec.server.load_data({ 'roles' => { name => role }}) }
end
def self.user(name, user)
before(:each) { ChefZero::RSpec.server.load_data({ 'users' => { name => user }}) }
end
# after :each do
# if @@ChefZero::RSpec.server
# @@ChefZero::RSpec.server.stop
# @@ChefZero::RSpec.server = nil
# end
# if @@ChefZero::RSpec.client_key
# @@ChefZero::RSpec.client_key.unlink
# @@ChefZero::RSpec.client_key = nil
# end
# end
instance_eval(&block)
end
end
end
end
|