diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-15 18:42:17 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-15 18:42:17 +0300 |
commit | 44fdf983bd35328dd577d3d3650d14163ef3e2b6 (patch) | |
tree | 84ff300d056cfbabb5a0fe2a9cbaa80aaeab1cc5 /spec/lib | |
parent | bc9fa07b26184b5c94808f704db6ea1ac81bf4de (diff) |
Add latest changes from gitlab-org/gitlab@12-10-stable-ee
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/constraints/admin_constrainer_spec.rb | 69 | ||||
-rw-r--r-- | spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb | 32 | ||||
-rw-r--r-- | spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb (renamed from spec/lib/gitlab/import_export/group/tree_saver_spec.rb) | 4 |
3 files changed, 103 insertions, 2 deletions
diff --git a/spec/lib/constraints/admin_constrainer_spec.rb b/spec/lib/constraints/admin_constrainer_spec.rb new file mode 100644 index 00000000000..da178f9e71a --- /dev/null +++ b/spec/lib/constraints/admin_constrainer_spec.rb @@ -0,0 +1,69 @@ +# frozen_string_literal: true +# +require 'spec_helper' + +describe Constraints::AdminConstrainer, :do_not_mock_admin_mode do + let(:user) { create(:user) } + + let(:session) { {} } + let(:env) { { 'warden' => double(:warden, authenticate?: true, user: user) } } + let(:request) { double(:request, session: session, env: env) } + + around do |example| + Gitlab::Session.with_session(session) do + example.run + end + end + + describe '#matches' do + context 'feature flag :user_mode_in_session is enabled' do + context 'when user is a regular user' do + it 'forbids access' do + expect(subject.matches?(request)).to be(false) + end + end + + context 'when user is an admin' do + let(:user) { create(:admin) } + + context 'admin mode is disabled' do + it 'forbids access' do + expect(subject.matches?(request)).to be(false) + end + end + + context 'admin mode is enabled' do + before do + current_user_mode = Gitlab::Auth::CurrentUserMode.new(user) + current_user_mode.request_admin_mode! + current_user_mode.enable_admin_mode!(password: user.password) + end + + it 'allows access' do + expect(subject.matches?(request)).to be(true) + end + end + end + end + + context 'feature flag :user_mode_in_session is disabled' do + before do + stub_feature_flags(user_mode_in_session: false) + end + + context 'when user is a regular user' do + it 'forbids access' do + expect(subject.matches?(request)).to be(false) + end + end + + context 'when user is an admin' do + let(:user) { create(:admin) } + + it 'allows access' do + expect(subject.matches?(request)).to be(true) + end + end + end + end +end diff --git a/spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb b/spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb new file mode 100644 index 00000000000..f150ed4bd2e --- /dev/null +++ b/spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::BackgroundMigration::BackfillPushRulesIdInProjects, :migration, schema: 2020_03_25_162730 do + let(:push_rules) { table(:push_rules) } + let(:projects) { table(:projects) } + let(:project_settings) { table(:project_settings) } + let(:namespace) { table(:namespaces).create(name: 'user', path: 'user') } + + subject { described_class.new } + + describe '#perform' do + it 'creates new project push_rules for all push rules in the range' do + project_1 = projects.create(id: 1, namespace_id: namespace.id) + project_2 = projects.create(id: 2, namespace_id: namespace.id) + project_3 = projects.create(id: 3, namespace_id: namespace.id) + project_settings_1 = project_settings.create(project_id: project_1.id) + project_settings_2 = project_settings.create(project_id: project_2.id) + project_settings_3 = project_settings.create(project_id: project_3.id) + push_rule_1 = push_rules.create(id: 5, is_sample: false, project_id: project_1.id) + push_rule_2 = push_rules.create(id: 6, is_sample: false, project_id: project_2.id) + push_rules.create(id: 8, is_sample: false, project_id: 3) + + subject.perform(5, 7) + + expect(project_settings_1.reload.push_rule_id).to eq(push_rule_1.id) + expect(project_settings_2.reload.push_rule_id).to eq(push_rule_2.id) + expect(project_settings_3.reload.push_rule_id).to be_nil + end + end +end diff --git a/spec/lib/gitlab/import_export/group/tree_saver_spec.rb b/spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb index eb790662d8c..a0490c255aa 100644 --- a/spec/lib/gitlab/import_export/group/tree_saver_spec.rb +++ b/spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::ImportExport::Group::TreeSaver do +describe Gitlab::ImportExport::Group::LegacyTreeSaver do describe 'saves the group tree into a json object' do let(:shared) { Gitlab::ImportExport::Shared.new(group) } let(:group_tree_saver) { described_class.new(group: group, current_user: user, shared: shared) } @@ -28,7 +28,7 @@ describe Gitlab::ImportExport::Group::TreeSaver do # except: # context 'with description override' do # context 'group members' do - # ^ These are specific for the Group::TreeSaver + # ^ These are specific for the Group::LegacyTreeSaver context 'JSON' do let(:saved_group_json) do group_tree_saver.save |