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
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-04-03 14:00:33 +0300
committerJames Lopez <james@jameslopez.es>2018-04-05 09:41:56 +0300
commit52967b107b7b2f1472b4c005f70f21346079cd95 (patch)
tree12e99d4fe27f69af53920bd4db3a81e473def642 /spec/migrations/active_record
parent98106ec54e439455f545f3df15332a28b9b0c969 (diff)
Merge branch 'jej/mattermost-notification-confidentiality-10-6' into 'security-10-6'
[10.6] Prevent notes on confidential issues from being sent to chat See merge request gitlab/gitlabhq!2366 # Conflicts: # app/helpers/services_helper.rb
Diffstat (limited to 'spec/migrations/active_record')
-rw-r--r--spec/migrations/active_record/schedule_set_confidential_note_events_on_services_spec.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/migrations/active_record/schedule_set_confidential_note_events_on_services_spec.rb b/spec/migrations/active_record/schedule_set_confidential_note_events_on_services_spec.rb
new file mode 100644
index 00000000000..4395e2f8264
--- /dev/null
+++ b/spec/migrations/active_record/schedule_set_confidential_note_events_on_services_spec.rb
@@ -0,0 +1,44 @@
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20180122154930_schedule_set_confidential_note_events_on_services.rb')
+
+describe ScheduleSetConfidentialNoteEventsOnServices, :migration, :sidekiq do
+ let(:services_table) { table(:services) }
+ let(:migration_class) { Gitlab::BackgroundMigration::SetConfidentialNoteEventsOnServices }
+ let(:migration_name) { migration_class.to_s.demodulize }
+
+ let!(:service_1) { services_table.create!(confidential_note_events: nil, note_events: true) }
+ let!(:service_2) { services_table.create!(confidential_note_events: nil, note_events: true) }
+ let!(:service_migrated) { services_table.create!(confidential_note_events: true, note_events: true) }
+ let!(:service_skip) { services_table.create!(confidential_note_events: nil, note_events: false) }
+ let!(:service_new) { services_table.create!(confidential_note_events: false, note_events: true) }
+ let!(:service_4) { services_table.create!(confidential_note_events: nil, note_events: true) }
+
+ before do
+ stub_const("#{described_class}::BATCH_SIZE", 1)
+ end
+
+ it 'schedules background migrations at correct time' do
+ Sidekiq::Testing.fake! do
+ Timecop.freeze do
+ migrate!
+
+ expect(migration_name).to be_scheduled_delayed_migration(20.minutes, service_1.id, service_1.id)
+ expect(migration_name).to be_scheduled_delayed_migration(40.minutes, service_2.id, service_2.id)
+ expect(migration_name).to be_scheduled_delayed_migration(60.minutes, service_4.id, service_4.id)
+ expect(BackgroundMigrationWorker.jobs.size).to eq 3
+ end
+ end
+ end
+
+ it 'correctly processes services' do
+ Sidekiq::Testing.inline! do
+ expect(services_table.where(confidential_note_events: nil).count).to eq 4
+ expect(services_table.where(confidential_note_events: true).count).to eq 1
+
+ migrate!
+
+ expect(services_table.where(confidential_note_events: nil).count).to eq 1
+ expect(services_table.where(confidential_note_events: true).count).to eq 4
+ end
+ end
+end