summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <zegerjan@gitlab.com>2016-03-14 11:18:03 +0100
committerZeger-Jan van de Weg <zegerjan@gitlab.com>2016-03-15 22:19:51 +0100
commit29a43373ce9b3676ae7baea61b0ecaf67db67445 (patch)
tree8a899b4fe41276c0f119aa4149f35e5bc80a0817
parent8077a5f9589e365f58f22015819bff7debcd7299 (diff)
downloadgitlab-ce-worker-for-user-deletion.tar.gz
Specs for the DeleteUserServiceworker-for-user-deletion
-rw-r--r--CHANGELOG1
-rw-r--r--spec/services/delete_user_service_spec.rb58
-rw-r--r--spec/workers/delete_user_worker_spec.rb60
3 files changed, 69 insertions, 50 deletions
diff --git a/CHANGELOG b/CHANGELOG
index fd7c7e7bc97..2b5c03b875c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -50,7 +50,6 @@ v 8.5.5
- Fix pagination for filtered dashboard and explore pages
- Fix "Show all" link behavior
- Add #upcoming filter to Milestone filter (Tiago Botelho)
- - User deletion is now done in the background so the request can not time out
v 8.5.4
- Do not cache requests for badges (including builds badge)
diff --git a/spec/services/delete_user_service_spec.rb b/spec/services/delete_user_service_spec.rb
new file mode 100644
index 00000000000..a65938fa03b
--- /dev/null
+++ b/spec/services/delete_user_service_spec.rb
@@ -0,0 +1,58 @@
+require 'spec_helper'
+
+describe DeleteUserService, services: true do
+ describe "Deletes a user and all their personal projects" do
+ let!(:user) { create(:user) }
+ let!(:current_user) { create(:user) }
+ let!(:namespace) { create(:namespace, owner: user) }
+ let!(:project) { create(:project, namespace: namespace) }
+
+ context 'no options are given' do
+ it 'deletes the user' do
+ DeleteUserService.new(current_user).execute(user)
+
+ expect { User.find(user.id) }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+
+ it 'will delete the project in the near future' do
+ expect_any_instance_of(Projects::DestroyService).to receive(:pending_delete!).once
+
+ DeleteUserService.new(current_user).execute(user)
+ end
+ end
+
+ context "solo owned groups present" do
+ let(:solo_owned) { create(:group) }
+ let(:member) { create(:group_member) }
+ let(:user) { member.user }
+
+ before do
+ solo_owned.group_members = [member]
+ DeleteUserService.new(current_user).execute(user)
+ end
+
+ it 'does not delete the user' do
+ expect(User.find(user.id)).to eq user
+ end
+ end
+
+ context "deletions with solo owned groups" do
+ let(:solo_owned) { create(:group) }
+ let(:member) { create(:group_member) }
+ let(:user) { member.user }
+
+ before do
+ solo_owned.group_members = [member]
+ DeleteUserService.new(current_user).execute(user, delete_solo_owned_groups: 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
diff --git a/spec/workers/delete_user_worker_spec.rb b/spec/workers/delete_user_worker_spec.rb
index 975b0470cb5..14c56521280 100644
--- a/spec/workers/delete_user_worker_spec.rb
+++ b/spec/workers/delete_user_worker_spec.rb
@@ -1,58 +1,20 @@
require 'spec_helper'
describe DeleteUserWorker do
- describe "Deletes a user and all their personal projects" do
- let!(:user) { create(:user) }
- let!(:current_user) { create(:user) }
- let!(:namespace) { create(:namespace, owner: user) }
- let!(:project) { create(:project, namespace: namespace) }
+ let!(:user) { create(:user) }
+ let!(:current_user) { create(:user) }
- context 'no force flag given' do
- before do
- DeleteUserWorker.new.perform(current_user.id, user.id)
- end
+ it "calls the DeleteUserWorker with the params it was given" do
+ expect_any_instance_of(DeleteUserService).to receive(:execute).
+ with(user, {})
- 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
-
- context "solo owned groups present" do
- let(:solo_owned) { create(:group) }
- let(:member) { create(:group_member) }
- let(: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
-
- context "deletions with force" do
- let(:solo_owned) { create(:group) }
- let(:member) { create(:group_member) }
- let(:user) { member.user }
-
- before do
- solo_owned.group_members = [member]
- DeleteUserWorker.new.perform(current_user.id, user.id, "delete_solo_owned_groups" => true)
- end
+ DeleteUserWorker.new.perform(current_user.id, user.id)
+ end
- it 'deletes solo owned groups' do
- expect { Project.find(solo_owned.id) }.to raise_error(ActiveRecord::RecordNotFound)
- end
+ it "uses symbolized keys" do
+ expect_any_instance_of(DeleteUserService).to receive(:execute).
+ with(user, test: "test")
- it 'deletes the user' do
- expect { User.find(user.id) }.to raise_error(ActiveRecord::RecordNotFound)
- end
- end
+ DeleteUserWorker.new.perform(current_user.id, user.id, "test" => "test")
end
end