diff --git a/spec/workers/users/deactivate_dormant_users_worker_spec.rb b/spec/workers/users/deactivate_dormant_users_worker_spec.rb index c28be165fd7139e45dcf0739c624fcddaec6b678..be32322df8ff950618e153d551685583923e5e61 100644 --- a/spec/workers/users/deactivate_dormant_users_worker_spec.rb +++ b/spec/workers/users/deactivate_dormant_users_worker_spec.rb @@ -27,17 +27,15 @@ expect(deactivation_service).not_to have_received(:execute) end - context 'when automatic deactivation of dormant users is enabled' do - before do - stub_application_setting(deactivate_dormant_users: true) - end - - it 'deactivates dormant users' do + shared_examples 'deactivates dormant users' do + it do worker.perform expect(deactivation_service).to have_received(:execute).twice end + end + shared_examples 'deactivates certain user types' do where(:user_type, :expected_state) do :human | 'deactivated' :support_bot | 'active' @@ -52,7 +50,7 @@ end with_them do - it 'deactivates certain user types' do + it do user = create(:user, user_type: user_type, state: :active, last_activity_on: Gitlab::CurrentSettings.deactivate_dormant_users_period.days.ago.to_date) worker.perform @@ -64,8 +62,10 @@ end end end + end - it 'does not deactivate non-active users' do + shared_examples 'does not deactivate non-active users' do + it do human_user = create(:user, user_type: :human, state: :blocked, last_activity_on: Gitlab::CurrentSettings.deactivate_dormant_users_period.days.ago.to_date) service_user = create(:user, user_type: :service_user, state: :blocked, last_activity_on: Gitlab::CurrentSettings.deactivate_dormant_users_period.days.ago.to_date) @@ -74,14 +74,40 @@ expect(deactivation_service).not_to have_received(:execute).with(human_user) expect(deactivation_service).not_to have_received(:execute).with(service_user) end + end - it 'does not deactivate recently created users' do + shared_examples 'does not deactivate recently created users' do + it do worker.perform expect(deactivation_service).not_to have_received(:execute).with(inactive_recently_created) end end + context 'when automatic deactivation of dormant users is enabled' do + before do + stub_application_setting(deactivate_dormant_users: true) + end + + context 'when admin mode is not enabled', :do_not_mock_admin_mode_setting do + include_examples 'deactivates dormant users' + include_examples 'deactivates certain user types' + include_examples 'does not deactivate non-active users' + include_examples 'does not deactivate recently created users' + end + + context 'when admin mode is enabled', :request_store do + before do + stub_application_setting(admin_mode: true) + end + + include_examples 'deactivates dormant users' + include_examples 'deactivates certain user types' + include_examples 'does not deactivate non-active users' + include_examples 'does not deactivate recently created users' + end + end + context 'when automatic deactivation of dormant users is disabled' do before do stub_application_setting(deactivate_dormant_users: false)