From 3ea988e854b09a224e75011d6169d756e394456a Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 18 Oct 2018 01:43:49 -0700 Subject: [PATCH] Fix Groups::UpdateService#execute not returning correct error code This was causing problems in EE, where audit events were being generated even if the project failed to save. --- app/services/groups/update_service.rb | 6 ++++-- spec/services/groups/update_service_spec.rb | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/services/groups/update_service.rb b/app/services/groups/update_service.rb index fe47aa2f140..0bf0e967dcc 100644 --- a/app/services/groups/update_service.rb +++ b/app/services/groups/update_service.rb @@ -14,9 +14,11 @@ module Groups group.assign_attributes(params) begin - after_update if group.save + success = group.save - true + after_update if success + + success rescue Gitlab::UpdatePathError => e group.errors.add(:base, e.message) diff --git a/spec/services/groups/update_service_spec.rb b/spec/services/groups/update_service_spec.rb index 7c5c7409cc1..84cfa53ea05 100644 --- a/spec/services/groups/update_service_spec.rb +++ b/spec/services/groups/update_service_spec.rb @@ -24,6 +24,12 @@ describe Groups::UpdateService do expect(TodosDestroyer::GroupPrivateWorker).not_to receive(:perform_in) end + + it "returns false if save failed" do + allow(public_group).to receive(:save).and_return(false) + + expect(service.execute).to be_falsey + end end context "internal group with internal project" do