From 3fda119ea35a76bc07accfdacee55cb5b6c880cf Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 2 Aug 2018 14:22:18 -0700 Subject: Make CreateGpgSignatureWorker backwards compatible with original method signature Older versions of GitPushService push a single commit SHA string to the queue, but Gitaly requires that the parameters sent by CreateGpgSignatureWorker are an array. It's possible to have old workers using this original signature or jobs in the retry queue that would fail if CreateGpgSignatureWorker can't handle the string form. --- spec/workers/create_gpg_signature_worker_spec.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'spec/workers') diff --git a/spec/workers/create_gpg_signature_worker_spec.rb b/spec/workers/create_gpg_signature_worker_spec.rb index 502765e9786..f5479e57260 100644 --- a/spec/workers/create_gpg_signature_worker_spec.rb +++ b/spec/workers/create_gpg_signature_worker_spec.rb @@ -4,10 +4,9 @@ describe CreateGpgSignatureWorker do let(:project) { create(:project, :repository) } let(:commits) { project.repository.commits('HEAD', limit: 3).commits } let(:commit_shas) { commits.map(&:id) } + let(:gpg_commit) { instance_double(Gitlab::Gpg::Commit) } context 'when GpgKey is found' do - let(:gpg_commit) { instance_double(Gitlab::Gpg::Commit) } - before do allow(Project).to receive(:find_by).with(id: project.id).and_return(project) allow(project).to receive(:commits_by).with(oids: commit_shas).and_return(commits) @@ -36,6 +35,16 @@ describe CreateGpgSignatureWorker do end end + context 'handles when a string is passed in for the commit SHA' do + it 'creates a signature once' do + allow(Gitlab::Gpg::Commit).to receive(:new).with(commits.first).and_return(gpg_commit) + + expect(gpg_commit).to receive(:signature).once + + described_class.new.perform(commit_shas.first, project.id) + end + end + context 'when Commit is not found' do let(:nonexisting_commit_sha) { '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a34' } -- cgit v1.2.1