summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/sidekiq_middleware
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-24 12:09:01 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-24 12:09:01 +0000
commit2c2dd5e36c4ed5f09f488be288882d98f9124d12 (patch)
treead4c478bb1c588387a881b26a7db7c3237b9d4f3 /spec/lib/gitlab/sidekiq_middleware
parent2ff184ad761fbfbe25a3d827c8f704349963a8d2 (diff)
downloadgitlab-ce-2c2dd5e36c4ed5f09f488be288882d98f9124d12.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/gitlab/sidekiq_middleware')
-rw-r--r--spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb b/spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb
new file mode 100644
index 00000000000..f64ebece930
--- /dev/null
+++ b/spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::SidekiqMiddleware::WorkerContext::Server do
+ let(:worker_class) do
+ Class.new do
+ def self.name
+ "TestWorker"
+ end
+
+ # To keep track of the context that was active for certain arguments
+ cattr_accessor(:contexts) { {} }
+
+ include ApplicationWorker
+
+ worker_context user: nil
+
+ def perform(identifier, *args)
+ self.class.contexts.merge!(identifier => Labkit::Context.current.to_h)
+ end
+ end
+ end
+
+ let(:other_worker) do
+ Class.new do
+ def self.name
+ "OtherWorker"
+ end
+
+ include Sidekiq::Worker
+
+ def perform
+ end
+ end
+ end
+
+ before do
+ stub_const("TestWorker", worker_class)
+ stub_const("OtherWorker", other_worker)
+ end
+
+ around do |example|
+ Sidekiq::Testing.inline! { example.run }
+ end
+
+ before(:context) do
+ Sidekiq::Testing.server_middleware do |chain|
+ chain.add described_class
+ end
+ end
+
+ after(:context) do
+ Sidekiq::Testing.server_middleware do |chain|
+ chain.remove described_class
+ end
+ end
+
+ describe "#call" do
+ it 'applies a class context' do
+ Gitlab::ApplicationContext.with_context(user: build_stubbed(:user)) do
+ TestWorker.perform_async("identifier", 1)
+ end
+
+ expect(TestWorker.contexts['identifier'].keys).not_to include('meta.user')
+ end
+
+ it "doesn't fail for unknown workers" do
+ expect { OtherWorker.perform_async }.not_to raise_error
+ end
+ end
+end