summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <zegerjan@gitlab.com>2016-03-04 09:49:23 +0100
committerZeger-Jan van de Weg <zegerjan@gitlab.com>2016-03-15 21:09:25 +0100
commitd249da1c16bea8f9d340520168c64794c5f78928 (patch)
tree546abee4069e986e88f001b477324a8563d8294c
parentb221d11a25218d3c2ad5304be91c849e1872be6c (diff)
downloadgitlab-ce-d249da1c16bea8f9d340520168c64794c5f78928.tar.gz
Specs on force deleting of a user
-rw-r--r--app/services/delete_user_service.rb2
-rw-r--r--spec/workers/delete_user_worker_spec.rb48
2 files changed, 43 insertions, 7 deletions
diff --git a/app/services/delete_user_service.rb b/app/services/delete_user_service.rb
index 390960257c0..5f2e4f75b79 100644
--- a/app/services/delete_user_service.rb
+++ b/app/services/delete_user_service.rb
@@ -12,7 +12,7 @@ class DeleteUserService
end
user.solo_owned_groups.each do |group|
- DeleteGroupService.new(group, current_user).execute
+ DestroyGroupService.new(group, current_user).execute
end
user.personal_projects.each do |project|
diff --git a/spec/workers/delete_user_worker_spec.rb b/spec/workers/delete_user_worker_spec.rb
index 73005c507c6..bec9aecb48c 100644
--- a/spec/workers/delete_user_worker_spec.rb
+++ b/spec/workers/delete_user_worker_spec.rb
@@ -7,16 +7,52 @@ describe DeleteUserWorker do
let!(:namespace) { create(:namespace, owner: user) }
let!(:project) { create(:project, namespace: namespace) }
- before do
- DeleteUserWorker.new.perform(current_user.id, user.id)
+ context 'no force flag given' do
+ before do
+ DeleteUserWorker.new.perform(current_user.id, user.id)
+ end
+
+ it 'deletes all personal projects' do
+ expect { Project.find(project.id) }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+
+ it 'deletes the user' do
+ expect { User.find(user.id) }.to raise_error(ActiveRecord::RecordNotFound)
+ end
end
- it 'deletes all personal projects' do
- expect { Project.find(project.id) }.to raise_error(ActiveRecord::RecordNotFound)
+ context "solo owned groups present" do
+ let(:solo_owned) { create(:group) }
+ let(:member) { create(:group_member) }
+ let(:user) { user = member.user }
+
+ before do
+ solo_owned.group_members = [member]
+ DeleteUserWorker.new.perform(current_user.id, user.id)
+ end
+
+ it 'does not delete the user' do
+ expect(User.find(user.id)).to eq user
+ end
end
- it 'deletes the user' do
- expect { User.find(user.id) }.to raise_error(ActiveRecord::RecordNotFound)
+ context "deletions with force" do
+ let(:solo_owned) { create(:group) }
+ let(:member) { create(:group_member) }
+ let(:user) { user = member.user }
+
+ before do
+ solo_owned.group_members = [member]
+ DeleteUserWorker.new.perform(current_user.id, user.id, "force" => true)
+ end
+
+ it 'deletes solo owned groups' do
+ expect { Project.find(solo_owned.id) }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+
+ it 'deletes the user' do
+ expect { User.find(user.id) }.to raise_error(ActiveRecord::RecordNotFound)
+ end
end
end
end