diff options
author | Noah Kantrowitz <noah@coderanger.net> | 2017-04-04 10:45:41 -0700 |
---|---|---|
committer | Noah Kantrowitz <noah@coderanger.net> | 2017-04-04 10:45:41 -0700 |
commit | 11a07953165b631eb3612a00560a24fa14d14606 (patch) | |
tree | b4011db7d33e99186e9e9c124d62040db1e6bb3f /spec | |
parent | 848404e77096c19ba8689927330c61e12cbd10fb (diff) | |
parent | 93c72873224c6a79ae13b5d2fa70cb9bfc645c5c (diff) | |
download | chef-11a07953165b631eb3612a00560a24fa14d14606.tar.gz |
Merge branch 'master' into freeze-property-default
Signed-off-by: Noah Kantrowitz <noah@coderanger.net>
Diffstat (limited to 'spec')
-rw-r--r-- | spec/integration/knife/serve_spec.rb | 80 | ||||
-rw-r--r-- | spec/unit/lwrp_spec.rb | 107 |
2 files changed, 73 insertions, 114 deletions
diff --git a/spec/integration/knife/serve_spec.rb b/spec/integration/knife/serve_spec.rb index 72f0bb59ed..b0cdd8c070 100644 --- a/spec/integration/knife/serve_spec.rb +++ b/spec/integration/knife/serve_spec.rb @@ -24,33 +24,69 @@ describe "knife serve", :workstation do include KnifeSupport include AppServerSupport + def with_knife_serve + exception = nil + t = Thread.new do + begin + knife("serve --chef-zero-port=8890") + rescue + exception = $! + end + end + begin + Chef::Config.log_level = :debug + Chef::Config.chef_server_url = "http://localhost:8890" + Chef::Config.node_name = nil + Chef::Config.client_key = nil + api = Chef::ServerAPI.new + yield api + rescue + if exception + raise exception + else + raise + end + ensure + t.kill + sleep 0.5 + end + end + when_the_repository "also has one of each thing" do - before { file "nodes/x.json", { "foo" => "bar" } } + before do + file "nodes/a_node_in_json.json", { "foo" => "bar" } + file "nodes/a_node_in_ruby.rb", "name 'a_node_in_ruby'" + file "roles/a_role_in_json.json", { "foo" => "bar" } + file "roles/a_role_in_ruby.rb", "name 'a_role_in_ruby'" + end - it "knife serve serves up /nodes/x" do - exception = nil - t = Thread.new do - begin - knife("serve --chef-zero-port=8890") - rescue - exception = $! + %w{a_node_in_json a_node_in_ruby}.each do |file_type| + context file_type do + it "knife serve serves up /nodes" do + with_knife_serve do |api| + expect(api.get("nodes")).to have_key(file_type) + end + end + it "knife serve serves up /nodes/#{file_type}" do + with_knife_serve do |api| + expect(api.get("nodes/#{file_type}")["name"]).to eq(file_type) + end end end - begin - Chef::Config.log_level = :debug - Chef::Config.chef_server_url = "http://localhost:8890" - Chef::Config.node_name = nil - Chef::Config.client_key = nil - api = Chef::ServerAPI.new - expect(api.get("nodes/x")["name"]).to eq("x") - rescue - if exception - raise exception - else - raise + end + + %w{a_role_in_json a_role_in_ruby}.each do |file_type| + context file_type do + it "knife serve serves up /roles" do + with_knife_serve do |api| + expect(api.get("roles")).to have_key(file_type) + end + end + it "knife serve serves up /roles/#{file_type}" do + with_knife_serve do |api| + expect(api.get("roles/#{file_type}")["name"]).to eq(file_type) + end end - ensure - t.kill end end end diff --git a/spec/unit/lwrp_spec.rb b/spec/unit/lwrp_spec.rb index 28773a3c30..353376aa77 100644 --- a/spec/unit/lwrp_spec.rb +++ b/spec/unit/lwrp_spec.rb @@ -417,9 +417,8 @@ describe "LWRP" do Chef::Config[:treat_deprecation_warnings_as_errors] = @old_treat_deprecation_warnings_as_errors end - it "should load the provider into a properly-named class" do - expect(Chef::Provider.const_get("LwrpBuckPasser")).to be_kind_of(Class) - expect(Chef::Provider::LwrpBuckPasser <= Chef::Provider::LWRPBase).to be_truthy + it "should not load the provider into a const" do + expect(defined?(Chef::Provider::LwrpBuckPasser)).to be_nil end it "should create a method for each action" do @@ -571,55 +570,28 @@ describe "LWRP" do end context "resource class created" do + let(:test_lwrp_class) { @test_lwrp_class } before(:context) do @tmpdir = Dir.mktmpdir("lwrp_test") resource_path = File.join(@tmpdir, "once.rb") IO.write(resource_path, "default_action :create") - - @old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors] - Chef::Config[:treat_deprecation_warnings_as_errors] = false - Chef::Resource::LWRPBase.build_from_file("lwrp", resource_path, nil) + @test_lwrp_class = Chef::Resource::LWRPBase.build_from_file("lwrp", resource_path, nil) end after(:context) do FileUtils.remove_entry @tmpdir - Chef::Config[:treat_deprecation_warnings_as_errors] = @old_treat_deprecation_warnings_as_errors end - it "should load the resource into a properly-named class" do - expect(Chef::Resource::LwrpOnce).to be_kind_of(Class) - expect(Chef::Resource::LwrpOnce <= Chef::Resource::LWRPBase).to be_truthy + it "should not load the resource into a const" do + expect(defined?(Chef::Resource::LwrpOnce)).to be_nil end - it "get_lwrp(:lwrp_once).new is a Chef::Resource::LwrpOnce" do + it "get_lwrp(:lwrp_once).new is an instance of the LWRP class" do lwrp = get_lwrp(:lwrp_once).new("hi") - expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy - expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy - expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy - expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy - end - - it "Chef::Resource::LwrpOnce.new is a get_lwrp(:lwrp_once)" do - lwrp = Chef::Resource::LwrpOnce.new("hi") - expect(lwrp.kind_of?(get_lwrp(:lwrp_once))).to be_truthy - expect(lwrp.is_a?(get_lwrp(:lwrp_once))).to be_truthy + expect(lwrp.kind_of?(test_lwrp_class)).to be_truthy + expect(lwrp.is_a?(test_lwrp_class)).to be_truthy expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy - expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy - end - - it "works even if LwrpOnce exists in the top level" do - module ::LwrpOnce - end - expect(Chef::Resource::LwrpOnce).not_to eq(::LwrpOnce) - end - - it "allows monkey patching of the lwrp through Chef::Resource" do - monkey = Module.new do - def issue_3607 - end - end - Chef::Resource::LwrpOnce.send(:include, monkey) - expect { get_lwrp(:lwrp_once).new("blah").issue_3607 }.not_to raise_error + expect(test_lwrp_class === lwrp).to be_truthy end context "with a subclass of get_lwrp(:lwrp_once)" do @@ -634,12 +606,12 @@ describe "LWRP" do expect(subclass === lwrp).to be_truthy expect(lwrp.class === subclass) end - it "subclass.new is a Chef::Resource::LwrpOnce" do + it "subclass.new is an instance of the LWRP class" do lwrp = subclass.new("hi") - expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy - expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy - expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy - expect(lwrp.class === Chef::Resource::LwrpOnce) + expect(lwrp.kind_of?(test_lwrp_class)).to be_truthy + expect(lwrp.is_a?(test_lwrp_class)).to be_truthy + expect(test_lwrp_class === lwrp).to be_truthy + expect(lwrp.class === test_lwrp_class) end it "subclass.new is a get_lwrp(:lwrp_once)" do lwrp = subclass.new("hi") @@ -648,55 +620,6 @@ describe "LWRP" do expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy expect(lwrp.class === get_lwrp(:lwrp_once)) end - it "Chef::Resource::LwrpOnce.new is *not* a subclass" do - lwrp = Chef::Resource::LwrpOnce.new("hi") - expect(lwrp.kind_of?(subclass)).to be_falsey - expect(lwrp.is_a?(subclass)).to be_falsey - expect(subclass === lwrp.class).to be_falsey - expect(subclass === Chef::Resource::LwrpOnce).to be_falsey - end - it "get_lwrp(:lwrp_once).new is *not* a subclass" do - lwrp = get_lwrp(:lwrp_once).new("hi") - expect(lwrp.kind_of?(subclass)).to be_falsey - expect(lwrp.is_a?(subclass)).to be_falsey - expect(subclass === lwrp.class).to be_falsey - expect(subclass === get_lwrp(:lwrp_once)).to be_falsey - end - end - - context "with a subclass of Chef::Resource::LwrpOnce" do - let(:subclass) do - Class.new(Chef::Resource::LwrpOnce) - end - - it "subclass.new is a subclass" do - lwrp = subclass.new("hi") - expect(lwrp.kind_of?(subclass)).to be_truthy - expect(lwrp.is_a?(subclass)).to be_truthy - expect(subclass === lwrp).to be_truthy - expect(lwrp.class === subclass) - end - it "subclass.new is a Chef::Resource::LwrpOnce" do - lwrp = subclass.new("hi") - expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy - expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy - expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy - expect(lwrp.class === Chef::Resource::LwrpOnce) - end - it "subclass.new is a get_lwrp(:lwrp_once)" do - lwrp = subclass.new("hi") - expect(lwrp.kind_of?(get_lwrp(:lwrp_once))).to be_truthy - expect(lwrp.is_a?(get_lwrp(:lwrp_once))).to be_truthy - expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy - expect(lwrp.class === get_lwrp(:lwrp_once)) - end - it "Chef::Resource::LwrpOnce.new is *not* a subclass" do - lwrp = Chef::Resource::LwrpOnce.new("hi") - expect(lwrp.kind_of?(subclass)).to be_falsey - expect(lwrp.is_a?(subclass)).to be_falsey - expect(subclass === lwrp.class).to be_falsey - expect(subclass === Chef::Resource::LwrpOnce).to be_falsey - end it "get_lwrp(:lwrp_once).new is *not* a subclass" do lwrp = get_lwrp(:lwrp_once).new("hi") expect(lwrp.kind_of?(subclass)).to be_falsey |