summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-04 12:09:00 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-04 12:09:00 +0000
commit88a0824944720b6edaaef56376713541b9a02118 (patch)
treef5fcc4f9755f249779cda9a8f02902d734af6e7e /spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb
parent7d19df2d34a9803d9f077c16315ba919b7ae2aa2 (diff)
downloadgitlab-ce-88a0824944720b6edaaef56376713541b9a02118.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb')
-rw-r--r--spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb b/spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb
new file mode 100644
index 00000000000..60475f0e403
--- /dev/null
+++ b/spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::SidekiqMiddleware::AdminMode::Server, :do_not_mock_admin_mode, :request_store do
+ include AdminModeHelper
+
+ let(:worker) do
+ Class.new do
+ def perform; end
+ end
+ end
+
+ let(:job) { {} }
+ let(:queue) { :test }
+
+ it 'yields block' do
+ expect do |b|
+ subject.call(worker, job, queue, &b)
+ end.to yield_control.once
+ end
+
+ context 'job has no admin mode field' do
+ it 'session is not bypassed' do
+ subject.call(worker, job, queue) do
+ expect(Gitlab::Auth::CurrentUserMode.bypass_session_admin_id).to be_nil
+ end
+ end
+ end
+
+ context 'job has admin mode field' do
+ let(:admin) { create(:admin) }
+
+ context 'nil admin mode id' do
+ let(:job) { { 'admin_mode_user_id' => nil } }
+
+ it 'session is not bypassed' do
+ subject.call(worker, job, queue) do
+ expect(Gitlab::Auth::CurrentUserMode.bypass_session_admin_id).to be_nil
+ end
+ end
+ end
+
+ context 'valid admin mode id' do
+ let(:job) { { 'admin_mode_user_id' => admin.id } }
+
+ it 'session is bypassed' do
+ subject.call(worker, job, queue) do
+ expect(Gitlab::Auth::CurrentUserMode.bypass_session_admin_id).to be(admin.id)
+ end
+ end
+ end
+ end
+
+ context 'admin mode feature disabled' do
+ before do
+ stub_feature_flags(user_mode_in_session: false)
+ end
+
+ it 'yields block' do
+ expect do |b|
+ subject.call(worker, job, queue, &b)
+ end.to yield_control.once
+ end
+
+ it 'session is not bypassed' do
+ subject.call(worker, job, queue) do
+ expect(Gitlab::Auth::CurrentUserMode.bypass_session_admin_id).to be_nil
+ end
+ end
+ end
+end