diff options
author | Alexis Reigel <mail@koffeinfrei.org> | 2017-07-06 12:55:56 +0300 |
---|---|---|
committer | Alexis Reigel <mail@koffeinfrei.org> | 2017-07-27 16:43:37 +0300 |
commit | deb474b4137c8ab4ce16f4d46e011be593f0de60 (patch) | |
tree | 4fc2b109ae30520fc9ca642a315a326345262eb8 | |
parent | b66e3726dc377c2bb5c92983db4ec4c8d27237c4 (diff) |
extract common method
-rw-r--r-- | lib/gitlab/gpg.rb | 22 | ||||
-rw-r--r-- | spec/lib/gitlab/gpg_spec.rb | 29 |
2 files changed, 30 insertions, 21 deletions
diff --git a/lib/gitlab/gpg.rb b/lib/gitlab/gpg.rb index 258901bb238..582347019e5 100644 --- a/lib/gitlab/gpg.rb +++ b/lib/gitlab/gpg.rb @@ -8,10 +8,8 @@ module Gitlab def add(key) GPGME::Key.import(key) end - end - def fingerprints_from_key(key) - using_tmp_keychain do + def fingerprints_from_key(key) import = GPGME::Key.import(key) return [] if import.imported == 0 @@ -20,13 +18,15 @@ module Gitlab end end - def primary_keyids_from_key(key) + def fingerprints_from_key(key) using_tmp_keychain do - import = GPGME::Key.import(key) - - return [] if import.imported == 0 + CurrentKeyChain.fingerprints_from_key(key) + end + end - fingerprints = import.imports.map(&:fingerprint) + def primary_keyids_from_key(key) + using_tmp_keychain do + fingerprints = CurrentKeyChain.fingerprints_from_key(key) GPGME::Key.find(:public, fingerprints).map { |raw_key| raw_key.primary_subkey.keyid } end @@ -34,11 +34,7 @@ module Gitlab def emails_from_key(key) using_tmp_keychain do - import = GPGME::Key.import(key) - - return [] if import.imported == 0 - - fingerprints = import.imports.map(&:fingerprint) + fingerprints = CurrentKeyChain.fingerprints_from_key(key) GPGME::Key.find(:public, fingerprints).flat_map { |raw_key| raw_key.uids.map(&:email) } end diff --git a/spec/lib/gitlab/gpg_spec.rb b/spec/lib/gitlab/gpg_spec.rb index 497fbeab5d5..ebb7720eaea 100644 --- a/spec/lib/gitlab/gpg_spec.rb +++ b/spec/lib/gitlab/gpg_spec.rb @@ -2,16 +2,15 @@ require 'rails_helper' describe Gitlab::Gpg do describe '.fingerprints_from_key' do - it 'returns the fingerprint' do - expect( - described_class.fingerprints_from_key(GpgHelpers::User1.public_key) - ).to eq [GpgHelpers::User1.fingerprint] + before do + # make sure that each method is using the temporary keychain + expect(described_class).to receive(:using_tmp_keychain).and_call_original end - it 'returns an empty array when the key is invalid' do - expect( - described_class.fingerprints_from_key('bogus') - ).to eq [] + it 'returns CurrentKeyChain.fingerprints_from_key' do + expect(Gitlab::Gpg::CurrentKeyChain).to receive(:fingerprints_from_key).with(GpgHelpers::User1.public_key) + + described_class.fingerprints_from_key(GpgHelpers::User1.public_key) end end @@ -65,4 +64,18 @@ describe Gitlab::Gpg::CurrentKeyChain do ) end end + + describe '.fingerprints_from_key' do + it 'returns the fingerprint' do + expect( + described_class.fingerprints_from_key(GpgHelpers::User1.public_key) + ).to eq [GpgHelpers::User1.fingerprint] + end + + it 'returns an empty array when the key is invalid' do + expect( + described_class.fingerprints_from_key('bogus') + ).to eq [] + end + end end |