diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-29 19:57:17 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-29 19:57:17 +0000 |
commit | 37e3c3bb33c3d331fceb2840cf3c1d3c466dcfa9 (patch) | |
tree | 9d3739f627b491b42ede6424acd11b589beed25f /spec | |
parent | b55baf593e63db9be3f446ea0cca0281a69dd2e2 (diff) | |
download | gitlab-ce-37e3c3bb33c3d331fceb2840cf3c1d3c466dcfa9.tar.gz |
Add latest changes from gitlab-org/gitlab@13-2-stable-ee
Diffstat (limited to 'spec')
7 files changed, 118 insertions, 16 deletions
diff --git a/spec/frontend/jira_import/components/jira_import_app_spec.js b/spec/frontend/jira_import/components/jira_import_app_spec.js index 074f9842512..64b4461d7b2 100644 --- a/spec/frontend/jira_import/components/jira_import_app_spec.js +++ b/spec/frontend/jira_import/components/jira_import_app_spec.js @@ -306,7 +306,6 @@ describe('JiraImportApp', () => { variables: { input: { projectPath: 'gitlab-org/gitlab-test', - startAt: 1, }, }, }; diff --git a/spec/lib/gitlab/auth/user_access_denied_reason_spec.rb b/spec/lib/gitlab/auth/user_access_denied_reason_spec.rb index a2a0eb5428a..5cbd22827c9 100644 --- a/spec/lib/gitlab/auth/user_access_denied_reason_spec.rb +++ b/spec/lib/gitlab/auth/user_access_denied_reason_spec.rb @@ -41,5 +41,13 @@ RSpec.describe Gitlab::Auth::UserAccessDeniedReason do it { is_expected.to eq "Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}" } end + + context 'when the user is unconfirmed' do + before do + user.update!(confirmed_at: nil) + end + + it { is_expected.to match /Your primary email address is not confirmed/ } + end end end diff --git a/spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb b/spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb index c9928edb8e8..07f4429f7d9 100644 --- a/spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb +++ b/spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb @@ -5,6 +5,7 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::WrongfullyConfirmedEmailUnconfirmer, schema: 20200615111857 do let(:users) { table(:users) } let(:emails) { table(:emails) } + let(:user_synced_attributes_metadata) { table(:user_synced_attributes_metadata) } let(:confirmed_at_2_days_ago) { 2.days.ago } let(:confirmed_at_3_days_ago) { 3.days.ago } let(:one_year_ago) { 1.year.ago } @@ -14,6 +15,8 @@ RSpec.describe Gitlab::BackgroundMigration::WrongfullyConfirmedEmailUnconfirmer, let!(:user_does_not_need_migration) { users.create!(name: 'user3', email: 'test3@test.com', state: 'active', projects_limit: 1) } let!(:inactive_user) { users.create!(name: 'user4', email: 'test4@test.com', state: 'blocked', projects_limit: 1, confirmed_at: confirmed_at_3_days_ago, confirmation_sent_at: one_year_ago) } let!(:alert_bot_user) { users.create!(name: 'user5', email: 'test5@test.com', state: 'active', user_type: 2, projects_limit: 1, confirmed_at: confirmed_at_3_days_ago, confirmation_sent_at: one_year_ago) } + let!(:user_has_synced_email) { users.create!(name: 'user6', email: 'test6@test.com', state: 'active', projects_limit: 1, confirmed_at: confirmed_at_2_days_ago, confirmation_sent_at: one_year_ago) } + let!(:synced_attributes_metadata_for_user) { user_synced_attributes_metadata.create!(user_id: user_has_synced_email.id, email_synced: true) } let!(:bad_email_1) { emails.create!(user_id: user_needs_migration_1.id, email: 'other1@test.com', confirmed_at: confirmed_at_2_days_ago, confirmation_sent_at: one_year_ago) } let!(:bad_email_2) { emails.create!(user_id: user_needs_migration_2.id, email: 'other2@test.com', confirmed_at: confirmed_at_3_days_ago, confirmation_sent_at: one_year_ago) } @@ -24,8 +27,10 @@ RSpec.describe Gitlab::BackgroundMigration::WrongfullyConfirmedEmailUnconfirmer, let!(:good_email_2) { emails.create!(user_id: user_needs_migration_2.id, email: 'other4@test.com', confirmed_at: nil) } let!(:good_email_3) { emails.create!(user_id: user_does_not_need_migration.id, email: 'other5@test.com', confirmed_at: confirmed_at_2_days_ago, confirmation_sent_at: one_year_ago) } + let!(:second_email_for_user_with_synced_email) { emails.create!(user_id: user_has_synced_email.id, email: 'other6@test.com', confirmed_at: confirmed_at_2_days_ago, confirmation_sent_at: one_year_ago) } + subject do - email_ids = [bad_email_1, bad_email_2, good_email_1, good_email_2, good_email_3].map(&:id) + email_ids = [bad_email_1, bad_email_2, good_email_1, good_email_2, good_email_3, second_email_for_user_with_synced_email].map(&:id) described_class.new.perform(email_ids.min, email_ids.max) end @@ -61,10 +66,12 @@ RSpec.describe Gitlab::BackgroundMigration::WrongfullyConfirmedEmailUnconfirmer, expect(user_does_not_need_migration.reload.confirmed_at).to be_nil expect(inactive_user.reload.confirmed_at).to be_within(1.second).of(confirmed_at_3_days_ago) expect(alert_bot_user.reload.confirmed_at).to be_within(1.second).of(confirmed_at_3_days_ago) + expect(user_has_synced_email.reload.confirmed_at).to be_within(1.second).of(confirmed_at_2_days_ago) expect(user_does_not_need_migration.reload.confirmation_sent_at).to be_nil expect(inactive_user.reload.confirmation_sent_at).to be_within(1.second).of(one_year_ago) expect(alert_bot_user.reload.confirmation_sent_at).to be_within(1.second).of(one_year_ago) + expect(user_has_synced_email.confirmation_sent_at).to be_within(1.second).of(one_year_ago) end it 'updates confirmation_sent_at column' do diff --git a/spec/migrations/unconfirm_wrongfully_verified_emails_spec.rb b/spec/migrations/unconfirm_wrongfully_verified_emails_spec.rb index e93f2cb64de..cae2f331f6f 100644 --- a/spec/migrations/unconfirm_wrongfully_verified_emails_spec.rb +++ b/spec/migrations/unconfirm_wrongfully_verified_emails_spec.rb @@ -9,13 +9,47 @@ RSpec.describe UnconfirmWrongfullyVerifiedEmails do table(:emails).create!(email: 'test2@test.com', user_id: user.id) end - it 'enqueues WrongullyConfirmedEmailUnconfirmer job' do - Sidekiq::Testing.fake! do - migrate! + context 'when email confirmation is enabled' do + before do + table(:application_settings).create!(send_user_confirmation_email: true) + end + + it 'enqueues WrongullyConfirmedEmailUnconfirmer job' do + Sidekiq::Testing.fake! do + migrate! + + jobs = BackgroundMigrationWorker.jobs + expect(jobs.size).to eq(1) + expect(jobs.first["args"].first).to eq(Gitlab::BackgroundMigration::WrongfullyConfirmedEmailUnconfirmer.name.demodulize) + end + end + end + + context 'when email confirmation is disabled' do + before do + table(:application_settings).create!(send_user_confirmation_email: false) + end + + it 'does not enqueue WrongullyConfirmedEmailUnconfirmer job' do + Sidekiq::Testing.fake! do + migrate! + + expect(BackgroundMigrationWorker.jobs.size).to eq(0) + end + end + end + + context 'when email application setting record does not exist' do + before do + table(:application_settings).delete_all + end + + it 'does not enqueue WrongullyConfirmedEmailUnconfirmer job' do + Sidekiq::Testing.fake! do + migrate! - jobs = BackgroundMigrationWorker.jobs - expect(jobs.size).to eq(1) - expect(jobs.first["args"].first).to eq(Gitlab::BackgroundMigration::WrongfullyConfirmedEmailUnconfirmer.name.demodulize) + expect(BackgroundMigrationWorker.jobs.size).to eq(0) + end end end end diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb index f618e13ca26..5723b0d0729 100644 --- a/spec/models/application_setting_spec.rb +++ b/spec/models/application_setting_spec.rb @@ -106,6 +106,7 @@ RSpec.describe ApplicationSetting do it { is_expected.not_to allow_value(false).for(:hashed_storage_enabled) } it { is_expected.not_to allow_value(101).for(:repository_storages_weighted_default) } + it { is_expected.to allow_value('90').for(:repository_storages_weighted_default) } it { is_expected.not_to allow_value(-1).for(:repository_storages_weighted_default) } it { is_expected.to allow_value(100).for(:repository_storages_weighted_default) } it { is_expected.to allow_value(0).for(:repository_storages_weighted_default) } diff --git a/spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb b/spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb index 4057aa4ba9e..00b93984f98 100644 --- a/spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb +++ b/spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb @@ -8,15 +8,17 @@ RSpec.describe 'Importing Jira Users' do let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project) } + let(:importer) { instance_double(JiraImport::UsersImporter) } let(:project_path) { project.full_path } let(:start_at) { 7 } - - let(:mutation) do - variables = { + let(:variables) do + { start_at: start_at, project_path: project_path } + end + let(:mutation) do graphql_mutation(:jira_import_users, variables) end @@ -65,9 +67,38 @@ RSpec.describe 'Importing Jira Users' do end end - context 'when all params and permissions are ok' do - let(:importer) { instance_double(JiraImport::UsersImporter) } + context 'with start_at' do + RSpec.shared_examples 'start users import at zero' do + it 'returns imported users' do + users = [{ jira_account_id: '12a', jira_display_name: 'user 1' }] + result = ServiceResponse.success(payload: users) + + expect(importer).to receive(:execute).and_return(result) + expect(JiraImport::UsersImporter).to receive(:new).with(current_user, project, 0).and_return(importer) + post_graphql_mutation(mutation, current_user: current_user) + end + end + + context 'when nil' do + let(:variables) do + { + start_at: nil, + project_path: project_path + } + end + + it_behaves_like 'start users import at zero' + end + + context 'when not provided' do + let(:variables) { { project_path: project_path } } + + it_behaves_like 'start users import at zero' + end + end + + context 'when all params and permissions are ok' do before do expect(JiraImport::UsersImporter).to receive(:new).with(current_user, project, 7) .and_return(importer) diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb index 602aacb6ced..8db0cdcbc2c 100644 --- a/spec/requests/api/settings_spec.rb +++ b/spec/requests/api/settings_spec.rb @@ -15,7 +15,7 @@ RSpec.describe API::Settings, 'Settings' do expect(json_response).to be_an Hash expect(json_response['default_projects_limit']).to eq(42) expect(json_response['password_authentication_enabled_for_web']).to be_truthy - expect(json_response['repository_storages']).to eq(['default']) + expect(json_response['repository_storages_weighted']).to eq({ 'default' => 100 }) expect(json_response['password_authentication_enabled']).to be_truthy expect(json_response['plantuml_enabled']).to be_falsey expect(json_response['plantuml_url']).to be_nil @@ -55,6 +55,28 @@ RSpec.describe API::Settings, 'Settings' do stub_feature_flags(sourcegraph: true) end + it "coerces repository_storages_weighted to an int" do + put api("/application/settings", admin), + params: { + repository_storages_weighted: { 'custom' => '75' } + } + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['repository_storages_weighted']).to eq({ 'custom' => 75 }) + end + + context "repository_storages_weighted value is outside a 0-100 range" do + [-1, 101].each do |out_of_range_int| + it "returns a :bad_request for #{out_of_range_int}" do + put api("/application/settings", admin), + params: { + repository_storages_weighted: { 'custom' => out_of_range_int } + } + expect(response).to have_gitlab_http_status(:bad_request) + end + end + end + it "updates application settings" do put api("/application/settings", admin), params: { @@ -62,7 +84,7 @@ RSpec.describe API::Settings, 'Settings' do default_projects_limit: 3, default_project_creation: 2, password_authentication_enabled_for_web: false, - repository_storages: 'custom', + repository_storages_weighted: { 'custom' => 100 }, plantuml_enabled: true, plantuml_url: 'http://plantuml.example.com', sourcegraph_enabled: true, @@ -104,7 +126,7 @@ RSpec.describe API::Settings, 'Settings' do expect(json_response['default_projects_limit']).to eq(3) expect(json_response['default_project_creation']).to eq(::Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS) expect(json_response['password_authentication_enabled_for_web']).to be_falsey - expect(json_response['repository_storages']).to eq(['custom']) + expect(json_response['repository_storages_weighted']).to eq({ 'custom' => 100 }) expect(json_response['plantuml_enabled']).to be_truthy expect(json_response['plantuml_url']).to eq('http://plantuml.example.com') expect(json_response['sourcegraph_enabled']).to be_truthy |