chef-zero 4.8.0 → 4.9.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.
- checksums.yaml +4 -4
- data/Gemfile +8 -4
- data/Rakefile +20 -10
- data/bin/chef-zero +12 -12
- data/chef-zero.gemspec +24 -24
- data/lib/chef_zero.rb +1 -1
- data/lib/chef_zero/chef_data/acl_path.rb +16 -16
- data/lib/chef_zero/chef_data/cookbook_data.rb +24 -24
- data/lib/chef_zero/chef_data/data_normalizer.rb +120 -120
- data/lib/chef_zero/chef_data/default_creator.rb +145 -145
- data/lib/chef_zero/data_store/data_already_exists_error.rb +1 -1
- data/lib/chef_zero/data_store/data_not_found_error.rb +2 -2
- data/lib/chef_zero/data_store/default_facade.rb +5 -5
- data/lib/chef_zero/data_store/interface_v1.rb +1 -1
- data/lib/chef_zero/data_store/interface_v2.rb +1 -1
- data/lib/chef_zero/data_store/memory_store.rb +4 -4
- data/lib/chef_zero/data_store/memory_store_v2.rb +8 -8
- data/lib/chef_zero/data_store/raw_file_store.rb +10 -10
- data/lib/chef_zero/data_store/v1_to_v2_adapter.rb +9 -9
- data/lib/chef_zero/data_store/v2_to_v1_adapter.rb +5 -5
- data/lib/chef_zero/endpoints/acl_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/acls_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/actor_default_key_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/actor_endpoint.rb +20 -20
- data/lib/chef_zero/endpoints/actor_key_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/actor_keys_endpoint.rb +5 -6
- data/lib/chef_zero/endpoints/actors_endpoint.rb +12 -12
- data/lib/chef_zero/endpoints/authenticate_user_endpoint.rb +10 -10
- data/lib/chef_zero/endpoints/container_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/containers_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/cookbook_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +20 -16
- data/lib/chef_zero/endpoints/cookbooks_base.rb +13 -13
- data/lib/chef_zero/endpoints/cookbooks_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/data_bag_endpoint.rb +12 -12
- data/lib/chef_zero/endpoints/data_bag_item_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/data_bags_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/dummy_endpoint.rb +0 -2
- data/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb +16 -16
- data/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/environment_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/environment_nodes_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/environment_recipes_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/environment_role_endpoint.rb +8 -8
- data/lib/chef_zero/endpoints/file_store_file_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/group_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/groups_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/license_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/node_endpoint.rb +3 -4
- data/lib/chef_zero/endpoints/node_identifiers_endpoint.rb +7 -7
- data/lib/chef_zero/endpoints/nodes_endpoint.rb +3 -4
- data/lib/chef_zero/endpoints/not_found_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/organization_association_request_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb +8 -8
- data/lib/chef_zero/endpoints/organization_endpoint.rb +10 -10
- data/lib/chef_zero/endpoints/organization_user_base.rb +2 -2
- data/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_user_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/organization_user_key_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/organization_users_endpoint.rb +12 -12
- data/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/organizations_endpoint.rb +12 -13
- data/lib/chef_zero/endpoints/policies_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/policy_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/policy_group_endpoint.rb +6 -6
- data/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb +3 -4
- data/lib/chef_zero/endpoints/policy_groups_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/policy_revision_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/policy_revisions_endpoint.rb +1 -1
- data/lib/chef_zero/endpoints/principal_endpoint.rb +15 -15
- data/lib/chef_zero/endpoints/rest_list_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/rest_object_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/role_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/role_environments_endpoint.rb +3 -3
- data/lib/chef_zero/endpoints/sandbox_endpoint.rb +8 -8
- data/lib/chef_zero/endpoints/sandboxes_endpoint.rb +9 -9
- data/lib/chef_zero/endpoints/search_endpoint.rb +51 -49
- data/lib/chef_zero/endpoints/searches_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/server_api_version_endpoint.rb +2 -2
- data/lib/chef_zero/endpoints/system_recovery_endpoint.rb +8 -8
- data/lib/chef_zero/endpoints/user_association_request_endpoint.rb +12 -12
- data/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/user_association_requests_endpoint.rb +4 -4
- data/lib/chef_zero/endpoints/user_organizations_endpoint.rb +5 -5
- data/lib/chef_zero/endpoints/version_endpoint.rb +1 -1
- data/lib/chef_zero/log.rb +1 -1
- data/lib/chef_zero/rest_base.rb +25 -25
- data/lib/chef_zero/rest_request.rb +11 -11
- data/lib/chef_zero/rest_router.rb +30 -30
- data/lib/chef_zero/rspec.rb +33 -33
- data/lib/chef_zero/server.rb +188 -189
- data/lib/chef_zero/socketless_server_map.rb +2 -3
- data/lib/chef_zero/solr/query/binary_operator.rb +8 -8
- data/lib/chef_zero/solr/query/phrase.rb +1 -1
- data/lib/chef_zero/solr/query/range_query.rb +2 -2
- data/lib/chef_zero/solr/query/regexpable_query.rb +1 -0
- data/lib/chef_zero/solr/query/term.rb +5 -5
- data/lib/chef_zero/solr/query/unary_operator.rb +4 -4
- data/lib/chef_zero/solr/solr_doc.rb +4 -4
- data/lib/chef_zero/solr/solr_parser.rb +34 -33
- data/lib/chef_zero/version.rb +1 -1
- data/spec/run_oc_pedant.rb +61 -60
- data/spec/search_spec.rb +11 -11
- data/spec/server_spec.rb +35 -35
- data/spec/socketless_server_map_spec.rb +1 -3
- data/spec/support/oc_pedant.rb +20 -21
- metadata +2 -2
data/spec/search_spec.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "chef_zero/solr/solr_parser"
|
2
|
+
require "chef_zero/solr/solr_doc"
|
3
3
|
|
4
4
|
describe ChefZero::Solr::SolrParser do
|
5
5
|
let (:all_docs) do
|
6
6
|
docs = []
|
7
|
-
[{
|
8
|
-
{
|
7
|
+
[{ "foo" => "a" },
|
8
|
+
{ "foo" => "d" }].each_with_index do |h, i|
|
9
9
|
docs.push ChefZero::Solr::SolrDoc.new(h, i)
|
10
10
|
end
|
11
11
|
docs
|
@@ -13,24 +13,24 @@ describe ChefZero::Solr::SolrParser do
|
|
13
13
|
|
14
14
|
def search_for(query)
|
15
15
|
q = ChefZero::Solr::SolrParser.new(query).parse
|
16
|
-
all_docs.select {|doc| q.matches_doc?(doc) }
|
16
|
+
all_docs.select { |doc| q.matches_doc?(doc) }
|
17
17
|
end
|
18
18
|
|
19
19
|
it "handles terms" do
|
20
|
-
search_for(
|
20
|
+
search_for("foo:d").size.should eq(1)
|
21
21
|
end
|
22
22
|
|
23
23
|
it "handles ranges" do
|
24
|
-
search_for(
|
24
|
+
search_for("foo:[a TO c]").size.should eq(1)
|
25
25
|
end
|
26
26
|
|
27
27
|
it "handles -" do
|
28
|
-
search_for(
|
28
|
+
search_for("-foo:a").size.should eq(1)
|
29
29
|
end
|
30
30
|
|
31
31
|
it "handles wildcard ranges" do
|
32
|
-
search_for(
|
33
|
-
search_for(
|
34
|
-
search_for(
|
32
|
+
search_for("foo:[* TO c]").size.should eq(1)
|
33
|
+
search_for("foo:[c TO *]").size.should eq(1)
|
34
|
+
search_for("foo:[* TO *]").size.should eq(2)
|
35
35
|
end
|
36
36
|
end
|
data/spec/server_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "chef_zero/server"
|
2
|
+
require "net/http"
|
3
|
+
require "uri"
|
4
4
|
|
5
5
|
describe ChefZero::Server do
|
6
|
-
context
|
6
|
+
context "with a server bound to port 8889" do
|
7
7
|
before :each do
|
8
8
|
@server = ChefZero::Server.new(:port => 8889)
|
9
9
|
@server.start_background
|
@@ -12,84 +12,84 @@ describe ChefZero::Server do
|
|
12
12
|
@server.stop
|
13
13
|
end
|
14
14
|
|
15
|
-
it
|
15
|
+
it "a second server bound to port 8889 throws EADDRINUSE" do
|
16
16
|
expect { ChefZero::Server.new(:port => 8889).start }.to raise_error Errno::EADDRINUSE
|
17
17
|
end
|
18
18
|
|
19
|
-
it
|
19
|
+
it "a server bound to range 8889-9999 binds to a port > 8889" do
|
20
20
|
server = ChefZero::Server.new(:port => 8889.upto(9999))
|
21
21
|
server.start_background
|
22
22
|
expect(server.port).to be > 8889
|
23
23
|
expect(URI(server.url).port).to be > 8889
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
26
|
+
it "a server bound to range 8889-8889 throws an exception" do
|
27
27
|
expect { ChefZero::Server.new(:port => 8889.upto(8889)).start_background }.to raise_error Errno::EADDRINUSE
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
30
|
+
it "has a very patient request timeout" do
|
31
31
|
expect(@server.server.config[:RequestTimeout]).to eq 300
|
32
32
|
end
|
33
33
|
|
34
|
-
context
|
34
|
+
context "accept headers" do
|
35
35
|
def get_nodes(accepts)
|
36
36
|
uri = URI(@server.url)
|
37
37
|
httpcall = Net::HTTP.new(uri.host, uri.port)
|
38
|
-
httpcall.get(
|
38
|
+
httpcall.get("/nodes", "Accept" => accepts)
|
39
39
|
end
|
40
40
|
|
41
41
|
def get_version
|
42
42
|
uri = URI(@server.url)
|
43
43
|
httpcall = Net::HTTP.new(uri.host, uri.port)
|
44
|
-
httpcall.get(
|
44
|
+
httpcall.get("/version", "Accept" => "text/plain, application/json")
|
45
45
|
end
|
46
46
|
|
47
|
-
it
|
48
|
-
request = Net::HTTP::Get.new(
|
49
|
-
request.delete(
|
47
|
+
it "accepts requests with no accept header" do
|
48
|
+
request = Net::HTTP::Get.new("/nodes")
|
49
|
+
request.delete("Accept")
|
50
50
|
uri = URI(@server.url)
|
51
51
|
response = Net::HTTP.new(uri.host, uri.port).request(request)
|
52
|
-
expect(response.code).to eq
|
52
|
+
expect(response.code).to eq "200"
|
53
53
|
end
|
54
54
|
|
55
|
-
it
|
56
|
-
expect(get_nodes(
|
55
|
+
it "accepts requests with accept: application/json" do
|
56
|
+
expect(get_nodes("application/json").code).to eq "200"
|
57
57
|
end
|
58
58
|
|
59
|
-
it
|
60
|
-
expect(get_nodes(
|
59
|
+
it "accepts requests with accept: application/*" do
|
60
|
+
expect(get_nodes("application/*").code).to eq "200"
|
61
61
|
end
|
62
62
|
|
63
|
-
it
|
64
|
-
expect(get_nodes(
|
63
|
+
it "accepts requests with accept: application/*" do
|
64
|
+
expect(get_nodes("*/*").code).to eq "200"
|
65
65
|
end
|
66
66
|
|
67
|
-
it
|
68
|
-
expect(get_nodes(
|
67
|
+
it "denies requests with accept: application/blah" do
|
68
|
+
expect(get_nodes("application/blah").code).to eq "406"
|
69
69
|
end
|
70
70
|
|
71
|
-
it
|
72
|
-
expect(get_nodes(
|
71
|
+
it "denies requests with accept: blah/json" do
|
72
|
+
expect(get_nodes("blah/json").code).to eq "406"
|
73
73
|
end
|
74
74
|
|
75
|
-
it
|
76
|
-
expect(get_nodes(
|
75
|
+
it "denies requests with accept: blah/*" do
|
76
|
+
expect(get_nodes("blah/*").code).to eq "406"
|
77
77
|
end
|
78
78
|
|
79
|
-
it
|
80
|
-
expect(get_nodes(
|
79
|
+
it "denies requests with accept: blah/*" do
|
80
|
+
expect(get_nodes("blah/*").code).to eq "406"
|
81
81
|
end
|
82
82
|
|
83
|
-
it
|
84
|
-
expect(get_nodes(
|
83
|
+
it "denies requests with accept: <empty string>" do
|
84
|
+
expect(get_nodes("").code).to eq "406"
|
85
85
|
end
|
86
86
|
|
87
|
-
it
|
88
|
-
expect(get_nodes(
|
87
|
+
it "accepts requests with accept: a/b;a=b;c=d, application/json;a=b, application/xml;a=b" do
|
88
|
+
expect(get_nodes("a/b;a=b;c=d, application/json;a=b, application/xml;a=b").code).to eq "200"
|
89
89
|
end
|
90
90
|
|
91
|
-
it
|
92
|
-
expect(get_version.body.start_with?(
|
91
|
+
it "accepts /version" do
|
92
|
+
expect(get_version.body.start_with?("chef-zero")).to be true
|
93
93
|
end
|
94
94
|
end
|
95
95
|
end
|
data/spec/support/oc_pedant.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
################################################################################
|
22
22
|
# You MUST specify the address of the server the API requests will be
|
23
23
|
# sent to. Only specify protocol, hostname, and port.
|
24
|
-
chef_server
|
24
|
+
chef_server "http://127.0.0.1:8889"
|
25
25
|
|
26
26
|
# If you are doing development testing, you can specify the address of
|
27
27
|
# the Solr server. The presence of this parameter will enable tests
|
@@ -54,7 +54,6 @@ search_server chef_server
|
|
54
54
|
search_commit_url "/dummy"
|
55
55
|
search_url_fmt "/dummy?fq=+X_CHEF_type_CHEF_X:%{type}&q=%{query}&wt=json"
|
56
56
|
|
57
|
-
|
58
57
|
# We're starting to break tests up into groups based on different
|
59
58
|
# criteria. The proper API tests (the results of which are viewable
|
60
59
|
# to OPC customers) should be the only ones run by Pedant embedded in
|
@@ -69,10 +68,10 @@ search_url_fmt "/dummy?fq=+X_CHEF_type_CHEF_X:%{type}&q=%{query}&wt=json"
|
|
69
68
|
# value.
|
70
69
|
include_internal false
|
71
70
|
|
72
|
-
key =
|
71
|
+
key = "spec/support/stickywicket.pem"
|
73
72
|
|
74
73
|
org(name: "pedant-testorg",
|
75
|
-
create_me: !ENV[
|
74
|
+
create_me: !ENV["CHEF_FS"],
|
76
75
|
validator_key: key)
|
77
76
|
|
78
77
|
internal_account_url chef_server
|
@@ -85,15 +84,15 @@ delete_org true
|
|
85
84
|
# are using pre-existing users, you must supply a ':key_file' key,
|
86
85
|
# which should be the fully-qualified path /on the machine Pedant is
|
87
86
|
# running on/ to a private key for that user.
|
88
|
-
superuser_name
|
87
|
+
superuser_name "pivotal"
|
89
88
|
superuser_key key
|
90
89
|
webui_key key
|
91
90
|
|
92
91
|
def cheffs_or_else_user(value)
|
93
|
-
ENV[
|
92
|
+
ENV["CHEF_FS"] ? "pivotal" : value
|
94
93
|
end
|
95
94
|
|
96
|
-
keyfile_maybe = ENV[
|
95
|
+
keyfile_maybe = ENV["CHEF_FS"] ? { key_file: key } : { key_file: nil }
|
97
96
|
|
98
97
|
requestors({
|
99
98
|
:clients => {
|
@@ -102,45 +101,45 @@ requestors({
|
|
102
101
|
:name => "pedant_admin_client",
|
103
102
|
:create_me => true,
|
104
103
|
:create_knife => true,
|
105
|
-
:admin => true
|
104
|
+
:admin => true,
|
106
105
|
},
|
107
106
|
:non_admin => {
|
108
|
-
:name =>
|
107
|
+
:name => "pedant_client",
|
109
108
|
:create_me => true,
|
110
109
|
:create_knife => true,
|
111
110
|
},
|
112
111
|
:bad => {
|
113
|
-
:name =>
|
112
|
+
:name => "bad_client",
|
114
113
|
:create_me => true,
|
115
114
|
:create_knife => true,
|
116
|
-
:bogus => true
|
117
|
-
}
|
115
|
+
:bogus => true,
|
116
|
+
},
|
118
117
|
},
|
119
118
|
|
120
119
|
:users => {
|
121
120
|
# An administrator in the testing organization
|
122
121
|
:admin => {
|
123
122
|
:name => cheffs_or_else_user("pedant_admin_user"),
|
124
|
-
:create_me => !ENV[
|
125
|
-
:associate => !ENV[
|
126
|
-
:create_knife => true
|
123
|
+
:create_me => !ENV["CHEF_FS"],
|
124
|
+
:associate => !ENV["CHEF_FS"],
|
125
|
+
:create_knife => true,
|
127
126
|
}.merge(keyfile_maybe),
|
128
127
|
|
129
128
|
:non_admin => {
|
130
129
|
:name => cheffs_or_else_user("pedant_user"),
|
131
|
-
:create_me => !ENV[
|
132
|
-
:associate => !ENV[
|
133
|
-
:create_knife => true
|
130
|
+
:create_me => !ENV["CHEF_FS"],
|
131
|
+
:associate => !ENV["CHEF_FS"],
|
132
|
+
:create_knife => true,
|
134
133
|
}.merge(keyfile_maybe),
|
135
134
|
|
136
135
|
# A user that is not a member of the testing organization
|
137
136
|
:bad => {
|
138
137
|
:name => cheffs_or_else_user("pedant-nobody"),
|
139
|
-
:create_me => !ENV[
|
138
|
+
:create_me => !ENV["CHEF_FS"],
|
140
139
|
:create_knife => true,
|
141
|
-
:associate => false
|
140
|
+
:associate => false,
|
142
141
|
}.merge(keyfile_maybe),
|
143
|
-
}
|
142
|
+
},
|
144
143
|
})
|
145
144
|
|
146
145
|
self[:tags] = [:validation, :authentication, :authorization]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-zero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Keiser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-log
|