Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Reigel <mail@koffeinfrei.org>2017-06-14 12:51:34 +0300
committerAlexis Reigel <mail@koffeinfrei.org>2017-07-27 16:42:53 +0300
commit69e511c4c2a0409fa69658cf95bf5c4072b2b2d0 (patch)
tree416321052fa4614973a5f29c8f76c05c97b6d84a /spec/lib/gitlab/gpg
parent8236b12dff3df6d223888664c820ae54b4e0eaf7 (diff)
cache the gpg commit signature
we store the result of the gpg commit verification in the db because the gpg verification is an expensive operation.
Diffstat (limited to 'spec/lib/gitlab/gpg')
-rw-r--r--spec/lib/gitlab/gpg/commit_spec.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/lib/gitlab/gpg/commit_spec.rb b/spec/lib/gitlab/gpg/commit_spec.rb
new file mode 100644
index 00000000000..8b1747eebcc
--- /dev/null
+++ b/spec/lib/gitlab/gpg/commit_spec.rb
@@ -0,0 +1,53 @@
+require 'rails_helper'
+
+RSpec.describe Gitlab::Gpg::Commit do
+ describe '#signature' do
+ let!(:project) { create :project, :repository, path: 'sample-project' }
+
+ context 'known public key' do
+ it 'returns a valid signature' do
+ gpg_key = create :gpg_key, key: GpgHelpers::User1.public_key
+
+ raw_commit = double(:raw_commit, signature: [
+ GpgHelpers::User1.signed_commit_signature,
+ GpgHelpers::User1.signed_commit_base_data
+ ], sha: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33')
+ allow(raw_commit).to receive :save!
+
+ commit = create :commit,
+ git_commit: raw_commit,
+ project: project
+
+ expect(described_class.new(commit).signature).to have_attributes(
+ commit_sha: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33',
+ project: project,
+ gpg_key: gpg_key,
+ gpg_key_primary_keyid: GpgHelpers::User1.primary_keyid,
+ valid_signature: true
+ )
+ end
+ end
+
+ context 'unknown public key' do
+ it 'returns an invalid signature', :gpg do
+ raw_commit = double(:raw_commit, signature: [
+ GpgHelpers::User1.signed_commit_signature,
+ GpgHelpers::User1.signed_commit_base_data
+ ], sha: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33')
+ allow(raw_commit).to receive :save!
+
+ commit = create :commit,
+ git_commit: raw_commit,
+ project: project
+
+ expect(described_class.new(commit).signature).to have_attributes(
+ commit_sha: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33',
+ project: project,
+ gpg_key: nil,
+ gpg_key_primary_keyid: nil,
+ valid_signature: false
+ )
+ end
+ end
+ end
+end