chef-zero 0.9.1 → 0.9.2
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.
- data/lib/chef_zero/rspec.rb +45 -29
- data/lib/chef_zero/server.rb +25 -19
- data/lib/chef_zero/version.rb +1 -1
- metadata +2 -2
data/lib/chef_zero/rspec.rb
CHANGED
@@ -5,62 +5,78 @@ require 'chef/config'
|
|
5
5
|
|
6
6
|
module ChefZero
|
7
7
|
module RSpec
|
8
|
+
def self.server
|
9
|
+
@server
|
10
|
+
end
|
11
|
+
def self.server=(value)
|
12
|
+
@server = value
|
13
|
+
end
|
14
|
+
def self.client_key
|
15
|
+
@client_key
|
16
|
+
end
|
17
|
+
def self.client_key=(value)
|
18
|
+
@client_key = value
|
19
|
+
end
|
20
|
+
|
8
21
|
def when_the_chef_server(description, &block)
|
9
22
|
context "When the Chef server #{description}" do
|
10
23
|
before :each do
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
24
|
+
unless ChefZero::RSpec.server
|
25
|
+
# Set up configuration so that clients will point to the server
|
26
|
+
Thin::Logging.silent = true
|
27
|
+
ChefZero::RSpec.server = ChefZero::Server.new(:port => 8889, :signals => false)
|
28
|
+
ChefZero::RSpec.client_key = Tempfile.new(['chef_zero_client_key', '.pem'])
|
29
|
+
ChefZero::RSpec.client_key.write(ChefZero::PRIVATE_KEY)
|
30
|
+
ChefZero::RSpec.client_key.close
|
31
|
+
# Start the server
|
32
|
+
ChefZero::RSpec.server.start_background
|
33
|
+
else
|
34
|
+
ChefZero::RSpec.server.clear_data
|
35
|
+
end
|
21
36
|
|
22
|
-
|
23
|
-
|
37
|
+
Chef::Config.chef_server_url = ChefZero::RSpec.server.url
|
38
|
+
Chef::Config.node_name = 'admin'
|
39
|
+
Chef::Config.client_key = ChefZero::RSpec.client_key
|
24
40
|
end
|
25
41
|
|
26
42
|
def self.client(name, client)
|
27
|
-
before(:each) {
|
43
|
+
before(:each) { ChefZero::RSpec.server.load_data({ 'clients' => { name => client }}) }
|
28
44
|
end
|
29
45
|
|
30
46
|
def self.cookbook(name, version, cookbook)
|
31
|
-
before(:each) {
|
47
|
+
before(:each) { ChefZero::RSpec.server.load_data({ 'cookbooks' => { "#{name}-#{version}" => cookbook }}) }
|
32
48
|
end
|
33
49
|
|
34
50
|
def self.data_bag(name, data_bag)
|
35
|
-
before(:each) {
|
51
|
+
before(:each) { ChefZero::RSpec.server.load_data({ 'data' => { name => data_bag }}) }
|
36
52
|
end
|
37
53
|
|
38
54
|
def self.environment(name, environment)
|
39
|
-
before(:each) {
|
55
|
+
before(:each) { ChefZero::RSpec.server.load_data({ 'environments' => { name => environment }}) }
|
40
56
|
end
|
41
57
|
|
42
58
|
def self.node(name, node)
|
43
|
-
before(:each) {
|
59
|
+
before(:each) { ChefZero::RSpec.server.load_data({ 'nodes' => { name => node }}) }
|
44
60
|
end
|
45
61
|
|
46
62
|
def self.role(name, role)
|
47
|
-
before(:each) {
|
63
|
+
before(:each) { ChefZero::RSpec.server.load_data({ 'roles' => { name => role }}) }
|
48
64
|
end
|
49
65
|
|
50
66
|
def self.user(name, user)
|
51
|
-
before(:each) {
|
67
|
+
before(:each) { ChefZero::RSpec.server.load_data({ 'users' => { name => user }}) }
|
52
68
|
end
|
53
69
|
|
54
|
-
after :each do
|
55
|
-
if
|
56
|
-
|
57
|
-
|
58
|
-
end
|
59
|
-
if
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
70
|
+
# after :each do
|
71
|
+
# if @@ChefZero::RSpec.server
|
72
|
+
# @@ChefZero::RSpec.server.stop
|
73
|
+
# @@ChefZero::RSpec.server = nil
|
74
|
+
# end
|
75
|
+
# if @@ChefZero::RSpec.client_key
|
76
|
+
# @@ChefZero::RSpec.client_key.unlink
|
77
|
+
# @@ChefZero::RSpec.client_key = nil
|
78
|
+
# end
|
79
|
+
# end
|
64
80
|
|
65
81
|
instance_eval(&block)
|
66
82
|
end
|
data/lib/chef_zero/server.rb
CHANGED
@@ -59,26 +59,11 @@ module ChefZero
|
|
59
59
|
options[:host] ||= '127.0.0.1'
|
60
60
|
options[:port] ||= 80
|
61
61
|
options[:generate_real_keys] = true if !options.has_key?(:generate_real_keys)
|
62
|
-
|
62
|
+
thin_options = {}
|
63
|
+
thin_options[:signals] = options[:signals] if options.has_key?(:signals)
|
64
|
+
@server = Thin::Server.new(options[:host], options[:port], make_app, thin_options)
|
63
65
|
@generate_real_keys = options[:generate_real_keys]
|
64
|
-
|
65
|
-
'clients' => {
|
66
|
-
'chef-validator' => '{ "validator": true }',
|
67
|
-
'chef-webui' => '{ "admin": true }'
|
68
|
-
},
|
69
|
-
'cookbooks' => {},
|
70
|
-
'data' => {},
|
71
|
-
'environments' => {
|
72
|
-
'_default' => '{ "description": "The default Chef environment" }'
|
73
|
-
},
|
74
|
-
'file_store' => {},
|
75
|
-
'nodes' => {},
|
76
|
-
'roles' => {},
|
77
|
-
'sandboxes' => {},
|
78
|
-
'users' => {
|
79
|
-
'admin' => '{ "admin": true }'
|
80
|
-
}
|
81
|
-
}
|
66
|
+
clear_data
|
82
67
|
end
|
83
68
|
|
84
69
|
attr_reader :server
|
@@ -196,6 +181,27 @@ module ChefZero
|
|
196
181
|
end
|
197
182
|
end
|
198
183
|
|
184
|
+
def clear_data
|
185
|
+
@data = {
|
186
|
+
'clients' => {
|
187
|
+
'chef-validator' => '{ "validator": true }',
|
188
|
+
'chef-webui' => '{ "admin": true }'
|
189
|
+
},
|
190
|
+
'cookbooks' => {},
|
191
|
+
'data' => {},
|
192
|
+
'environments' => {
|
193
|
+
'_default' => '{ "description": "The default Chef environment" }'
|
194
|
+
},
|
195
|
+
'file_store' => {},
|
196
|
+
'nodes' => {},
|
197
|
+
'roles' => {},
|
198
|
+
'sandboxes' => {},
|
199
|
+
'users' => {
|
200
|
+
'admin' => '{ "admin": true }'
|
201
|
+
}
|
202
|
+
}
|
203
|
+
end
|
204
|
+
|
199
205
|
private
|
200
206
|
|
201
207
|
def make_app
|
data/lib/chef_zero/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-zero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|