summaryrefslogtreecommitdiff
path: root/spec/workers/remove_expired_members_worker_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/workers/remove_expired_members_worker_spec.rb')
-rw-r--r--spec/workers/remove_expired_members_worker_spec.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/workers/remove_expired_members_worker_spec.rb b/spec/workers/remove_expired_members_worker_spec.rb
index 8a34b41834b..5642de05731 100644
--- a/spec/workers/remove_expired_members_worker_spec.rb
+++ b/spec/workers/remove_expired_members_worker_spec.rb
@@ -31,6 +31,50 @@ RSpec.describe RemoveExpiredMembersWorker do
end
end
+ context 'project bots' do
+ let(:project) { create(:project) }
+
+ context 'expired project bot', :sidekiq_inline do
+ let_it_be(:expired_project_bot) { create(:user, :project_bot) }
+
+ before do
+ project.add_user(expired_project_bot, :maintainer, expires_at: 1.day.from_now)
+ travel_to(3.days.from_now)
+ end
+
+ it 'removes expired project bot membership' do
+ expect { worker.perform }.to change { Member.count }.by(-1)
+ expect(Member.find_by(user_id: expired_project_bot.id)).to be_nil
+ end
+
+ it 'deletes expired project bot' do
+ worker.perform
+
+ expect(User.exists?(expired_project_bot.id)).to be(false)
+ end
+ end
+
+ context 'non-expired project bot' do
+ let_it_be(:other_project_bot) { create(:user, :project_bot) }
+
+ before do
+ project.add_user(other_project_bot, :maintainer, expires_at: 10.days.from_now)
+ travel_to(3.days.from_now)
+ end
+
+ it 'does not remove expired project bot that expires in the future' do
+ expect { worker.perform }.to change { Member.count }.by(0)
+ expect(other_project_bot.reload).to be_present
+ end
+
+ it 'does not delete project bot expiring in the future' do
+ worker.perform
+
+ expect(User.exists?(other_project_bot.id)).to be(true)
+ end
+ end
+ end
+
context 'group members' do
let_it_be(:expired_group_member) { create(:group_member, expires_at: 1.day.from_now, access_level: GroupMember::DEVELOPER) }
let_it_be(:group_member_expiring_in_future) { create(:group_member, expires_at: 10.days.from_now, access_level: GroupMember::DEVELOPER) }