diff options
Diffstat (limited to 'spec/migrations/cleanup_group_import_states_with_null_user_id_spec.rb')
-rw-r--r-- | spec/migrations/cleanup_group_import_states_with_null_user_id_spec.rb | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/spec/migrations/cleanup_group_import_states_with_null_user_id_spec.rb b/spec/migrations/cleanup_group_import_states_with_null_user_id_spec.rb deleted file mode 100644 index acd6a19779d..00000000000 --- a/spec/migrations/cleanup_group_import_states_with_null_user_id_spec.rb +++ /dev/null @@ -1,101 +0,0 @@ -# frozen_string_literal: true - -# In order to test the CleanupGroupImportStatesWithNullUserId migration, we need -# to first create GroupImportState with NULL user_id -# and then run the migration to check that user_id was populated or record removed -# -# The problem is that the CleanupGroupImportStatesWithNullUserId migration comes -# after the NOT NULL constraint has been added with a previous migration (AddNotNullConstraintToUserOnGroupImportStates) -# That means that while testing the current class we can not insert GroupImportState records with an -# invalid user_id as constraint is blocking it from doing so -# -# To solve this problem, use SchemaVersionFinder to set schema one version prior to AddNotNullConstraintToUserOnGroupImportStates - -require 'spec_helper' -require_migration!('add_not_null_constraint_to_user_on_group_import_states') -require_migration! - -RSpec.describe CleanupGroupImportStatesWithNullUserId, :migration, - schema: MigrationHelpers::SchemaVersionFinder.migration_prior(AddNotNullConstraintToUserOnGroupImportStates) do - let(:namespaces_table) { table(:namespaces) } - let(:users_table) { table(:users) } - let(:group_import_states_table) { table(:group_import_states) } - let(:members_table) { table(:members) } - - describe 'Group import states clean up' do - context 'when user_id is present' do - it 'does not update group_import_state record' do - user_1 = users_table.create!(name: 'user1', email: 'user1@example.com', projects_limit: 1) - group_1 = namespaces_table.create!(name: 'group_1', path: 'group_1', type: 'Group') - create_member(user_id: user_1.id, type: 'GroupMember', source_type: 'Namespace', source_id: group_1.id, access_level: described_class::Group::OWNER) - group_import_state_1 = group_import_states_table.create!(group_id: group_1.id, user_id: user_1.id, status: 0) - - expect(group_import_state_1.user_id).to eq(user_1.id) - - disable_migrations_output { migrate! } - - expect(group_import_state_1.reload.user_id).to eq(user_1.id) - end - end - - context 'when user_id is missing' do - it 'updates user_id with group default owner id' do - user_2 = users_table.create!(name: 'user2', email: 'user2@example.com', projects_limit: 1) - group_2 = namespaces_table.create!(name: 'group_2', path: 'group_2', type: 'Group') - create_member(user_id: user_2.id, type: 'GroupMember', source_type: 'Namespace', source_id: group_2.id, access_level: described_class::Group::OWNER) - group_import_state_2 = group_import_states_table.create!(group_id: group_2.id, user_id: nil, status: 0) - - disable_migrations_output { migrate! } - - expect(group_import_state_2.reload.user_id).to eq(user_2.id) - end - end - - context 'when group does not contain any owners' do - it 'removes group_import_state record' do - group_3 = namespaces_table.create!(name: 'group_3', path: 'group_3', type: 'Group') - group_import_state_3 = group_import_states_table.create!(group_id: group_3.id, user_id: nil, status: 0) - - disable_migrations_output { migrate! } - - expect { group_import_state_3.reload }.to raise_error(ActiveRecord::RecordNotFound) - end - end - - context 'when group has parent' do - it 'updates user_id with parent group default owner id' do - user = users_table.create!(name: 'user4', email: 'user4@example.com', projects_limit: 1) - group_1 = namespaces_table.create!(name: 'group_1', path: 'group_1', type: 'Group') - create_member(user_id: user.id, type: 'GroupMember', source_type: 'Namespace', source_id: group_1.id, access_level: described_class::Group::OWNER) - group_2 = namespaces_table.create!(name: 'group_2', path: 'group_2', type: 'Group', parent_id: group_1.id) - group_import_state = group_import_states_table.create!(group_id: group_2.id, user_id: nil, status: 0) - - disable_migrations_output { migrate! } - - expect(group_import_state.reload.user_id).to eq(user.id) - end - end - - context 'when group has owner_id' do - it 'updates user_id with owner_id' do - user = users_table.create!(name: 'user', email: 'user@example.com', projects_limit: 1) - group = namespaces_table.create!(name: 'group', path: 'group', type: 'Group', owner_id: user.id) - group_import_state = group_import_states_table.create!(group_id: group.id, user_id: nil, status: 0) - - disable_migrations_output { migrate! } - - expect(group_import_state.reload.user_id).to eq(user.id) - end - end - end - - def create_member(options) - members_table.create!( - { - notification_level: 0, - ldap: false, - override: false - }.merge(options) - ) - end -end |