diff options
author | Tim Smith <tsmith@chef.io> | 2017-09-28 13:06:26 -0700 |
---|---|---|
committer | Tim Smith <tsmith@chef.io> | 2017-09-28 15:10:02 -0700 |
commit | 7ec360197a63585cb6c713f05bca402fdd142349 (patch) | |
tree | 3a3475e021fb0338d84aba46c5b56a5b264d1313 | |
parent | ede166724c392757bb42c94d402adba748ab2b76 (diff) | |
download | chef-7ec360197a63585cb6c713f05bca402fdd142349.tar.gz |
Add more specszypper_gpg_key
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r-- | spec/unit/provider/zypper_repository_spec.rb | 74 |
1 files changed, 65 insertions, 9 deletions
diff --git a/spec/unit/provider/zypper_repository_spec.rb b/spec/unit/provider/zypper_repository_spec.rb index 89f6b288f6..a366a33e86 100644 --- a/spec/unit/provider/zypper_repository_spec.rb +++ b/spec/unit/provider/zypper_repository_spec.rb @@ -28,15 +28,13 @@ EOF # Output of the command: # => gpg --with-fingerprint [FILE] GPG_FINGER = <<-EOF -pub 2048R/7BD9BF62 2011-08-19 [expires: 2024-06-14] +pub 2048R/3DBDC284 2011-08-19 [expires: 2024-06-14] Key fingerprint = 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 uid nginx signing key <signing-key@nginx.com> EOF describe Chef::Provider::ZypperRepository do let(:new_resource) { Chef::Resource::ZypperRepository.new("Nginx Repository") } - - let(:shellout_env) { { env: { "LANG" => "en_US", "LANGUAGE" => "en_US" } } } let(:provider) do node = Chef::Node.new events = Chef::EventDispatch::Dispatcher.new @@ -45,24 +43,82 @@ describe Chef::Provider::ZypperRepository do end let(:rpm_key_finger) do - r = double("Mixlib::ShellOut", stdout: RPM_KEYS, exitstatus: 0, live_stream: true) - allow(r).to receive(:run_command) - r + double("shell_out_with_systems_locale", stdout: RPM_KEYS, exitstatus: 0, error?: false) end let(:gpg_finger) do - r = double("Mixlib::ShellOut", stdout: GPG_FINGER, exitstatus: 0, live_stream: true) - allow(r).to receive(:run_command) - r + double("shell_out_with_systems_locale", stdout: GPG_FINGER, exitstatus: 0, error?: false) end it "responds to load_current_resource" do expect(provider).to respond_to(:load_current_resource) end + describe "#action_create" do + it "skips key import if gpgautoimportkeys is false" do + new_resource.gpgautoimportkeys(false) + expect(provider).to receive(:declare_resource) + expect(Chef::Log).to receive(:debug) + provider.run_action(:create) + end + end + describe "#escaped_repo_name" do it "returns an escaped repo name" do expect(provider.escaped_repo_name).to eq('Nginx\\ Repository') end end + + describe "#cookbook_name" do + it "returns 'test' when the cookbook property is set" do + new_resource.cookbook("test") + expect(provider.cookbook_name).to eq("test") + end + end + + describe "#key_type" do + it "returns :remote_file with an http URL" do + expect(provider.key_type("https://www.chef.io/key")).to eq(:remote_file) + end + + it "returns :cookbook_file with a chef managed file" do + expect(provider).to receive(:has_cookbook_file?).and_return(true) + expect(provider.key_type("/foo/nginx.key")).to eq(:cookbook_file) + end + + it "throws exception if an unknown file specified" do + expect(provider).to receive(:has_cookbook_file?).and_return(false) + expect { provider.key_type("/foo/nginx.key") }.to raise_error(Chef::Exceptions::FileNotFound) + end + end + + describe "#key_installed?" do + before do + expect(provider).to receive(:shell_out).with("rpm -qa gpg-pubkey*").and_return(rpm_key_finger) + end + + it "returns true if the key is installed" do + expect(provider).to receive(:key_fingerprint).and_return("3dbdc284") + expect(provider.key_installed?("/foo/nginx.key")).to be_truthy + end + + it "returns false if the key is not installed" do + expect(provider).to receive(:key_fingerprint).and_return("BOGUS") + expect(provider.key_installed?("/foo/nginx.key")).to be_falsey + end + end + + describe "#key_fingerprint" do + it "returns the key's fingerprint" do + expect(provider).to receive(:shell_out!).with("gpg --with-fingerprint /foo/nginx.key").and_return(gpg_finger) + expect(provider.key_fingerprint("/foo/nginx.key")).to eq("3dbdc284") + end + end + + describe "#install_gpg_key" do + it "skips installing the key if a nil value for key is passed" do + expect(Chef::Log).to receive(:debug) + provider.install_gpg_key(nil) + end + end end |