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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-06 21:06:29 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-06 21:06:29 +0300
commitbcdcff749598f4275f7c250c07cbfe632cfe7fdb (patch)
treefa3f6e54632837f21319794dbd9136e3de3a76ba /spec
parent5277f8e69e935eabd3bf8c5e7833471b5bfad1d9 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/finders/projects_finder_spec.rb20
-rw-r--r--spec/lib/gitlab/graphql/connections/keyset/order_info_spec.rb20
-rw-r--r--spec/models/user_spec.rb24
-rw-r--r--spec/policies/base_policy_spec.rb41
4 files changed, 97 insertions, 8 deletions
diff --git a/spec/finders/projects_finder_spec.rb b/spec/finders/projects_finder_spec.rb
index 4ec12b5a7f7..e97a94f6fa5 100644
--- a/spec/finders/projects_finder_spec.rb
+++ b/spec/finders/projects_finder_spec.rb
@@ -2,7 +2,9 @@
require 'spec_helper'
-describe ProjectsFinder do
+describe ProjectsFinder, :do_not_mock_admin_mode do
+ include AdminModeHelper
+
describe '#execute' do
let(:user) { create(:user) }
let(:group) { create(:group, :public) }
@@ -188,5 +190,21 @@ describe ProjectsFinder do
it { is_expected.to eq([internal_project, public_project]) }
end
+
+ describe 'with admin user' do
+ let(:user) { create(:admin) }
+
+ context 'admin mode enabled' do
+ before do
+ enable_admin_mode!(current_user)
+ end
+
+ it { is_expected.to match_array([public_project, internal_project, private_project, shared_project]) }
+ end
+
+ context 'admin mode disabled' do
+ it { is_expected.to match_array([public_project, internal_project]) }
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/graphql/connections/keyset/order_info_spec.rb b/spec/lib/gitlab/graphql/connections/keyset/order_info_spec.rb
index 608a9ed1d85..17ddcaefeeb 100644
--- a/spec/lib/gitlab/graphql/connections/keyset/order_info_spec.rb
+++ b/spec/lib/gitlab/graphql/connections/keyset/order_info_spec.rb
@@ -17,6 +17,26 @@ describe Gitlab::Graphql::Connections::Keyset::OrderInfo do
expect(order_list.last.operator_for(:after)).to eq '>'
end
end
+
+ context 'when order contains NULLS LAST' do
+ let(:relation) { Project.order(Arel.sql('projects.updated_at Asc Nulls Last')).order(:id) }
+
+ it 'does not ignore the SQL order' do
+ expect(order_list.count).to eq 2
+ expect(order_list.first.attribute_name).to eq 'projects.updated_at'
+ expect(order_list.first.operator_for(:after)).to eq '>'
+ expect(order_list.last.attribute_name).to eq 'id'
+ expect(order_list.last.operator_for(:after)).to eq '>'
+ end
+ end
+
+ context 'when order contains invalid formatted NULLS LAST ' do
+ let(:relation) { Project.order(Arel.sql('projects.updated_at created_at Asc Nulls Last')).order(:id) }
+
+ it 'ignores the SQL order' do
+ expect(order_list.count).to eq 1
+ end
+ end
end
describe '#validate_ordering' do
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 8eb2f9b5bc0..ee7edb1516c 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe User do
+describe User, :do_not_mock_admin_mode do
include ProjectForksHelper
include TermsHelper
@@ -2797,10 +2797,26 @@ describe User do
expect(user.full_private_access?).to be_falsy
end
- it 'returns true for admin user' do
- user = build(:user, :admin)
+ context 'for admin user' do
+ include_context 'custom session'
- expect(user.full_private_access?).to be_truthy
+ let(:user) { build(:user, :admin) }
+
+ context 'when admin mode is disabled' do
+ it 'returns false' do
+ expect(user.full_private_access?).to be_falsy
+ end
+ end
+
+ context 'when admin mode is enabled' do
+ before do
+ Gitlab::Auth::CurrentUserMode.new(user).enable_admin_mode!(password: user.password)
+ end
+
+ it 'returns true' do
+ expect(user.full_private_access?).to be_truthy
+ end
+ end
end
end
diff --git a/spec/policies/base_policy_spec.rb b/spec/policies/base_policy_spec.rb
index 9e59d35b1bb..81aee4cfcac 100644
--- a/spec/policies/base_policy_spec.rb
+++ b/spec/policies/base_policy_spec.rb
@@ -2,8 +2,9 @@
require 'spec_helper'
-describe BasePolicy do
+describe BasePolicy, :do_not_mock_admin_mode do
include ExternalAuthorizationServiceHelpers
+ include AdminModeHelper
describe '.class_for' do
it 'detects policy class based on the subject ancestors' do
@@ -36,8 +37,42 @@ describe BasePolicy do
it { is_expected.not_to be_allowed(:read_cross_project) }
- it 'allows admins' do
- expect(described_class.new(build(:admin), nil)).to be_allowed(:read_cross_project)
+ context 'for admins' do
+ let(:current_user) { build(:admin) }
+
+ subject { described_class.new(current_user, nil) }
+
+ it 'allowed when in admin mode' do
+ enable_admin_mode!(current_user)
+
+ is_expected.to be_allowed(:read_cross_project)
+ end
+
+ it 'prevented when not in admin mode' do
+ is_expected.not_to be_allowed(:read_cross_project)
+ end
+ end
+ end
+ end
+
+ describe 'full private access' do
+ let(:current_user) { create(:user) }
+
+ subject { described_class.new(current_user, nil) }
+
+ it { is_expected.not_to be_allowed(:read_all_resources) }
+
+ context 'for admins' do
+ let(:current_user) { build(:admin) }
+
+ it 'allowed when in admin mode' do
+ enable_admin_mode!(current_user)
+
+ is_expected.to be_allowed(:read_all_resources)
+ end
+
+ it 'prevented when not in admin mode' do
+ is_expected.not_to be_allowed(:read_all_resources)
end
end
end