summaryrefslogtreecommitdiff
path: root/app/services/test_hooks/base_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/test_hooks/base_service.rb')
-rw-r--r--app/services/test_hooks/base_service.rb28
1 files changed, 5 insertions, 23 deletions
diff --git a/app/services/test_hooks/base_service.rb b/app/services/test_hooks/base_service.rb
index ebebf29c28b..0fda6fb1ed0 100644
--- a/app/services/test_hooks/base_service.rb
+++ b/app/services/test_hooks/base_service.rb
@@ -2,6 +2,8 @@
module TestHooks
class BaseService
+ include BaseServiceUtility
+
attr_accessor :hook, :current_user, :trigger
def initialize(hook, current_user, trigger)
@@ -12,31 +14,11 @@ module TestHooks
def execute
trigger_key = hook.class.triggers.key(trigger.to_sym)
- trigger_data_method = "#{trigger}_data"
-
- if trigger_key.nil? || !self.respond_to?(trigger_data_method, true)
- return error('Testing not available for this hook')
- end
-
- error_message = catch(:validation_error) do # rubocop:disable Cop/BanCatchThrow
- sample_data = self.__send__(trigger_data_method) # rubocop:disable GitlabSecurity/PublicSend
-
- return hook.execute(sample_data, trigger_key) # rubocop:disable Cop/AvoidReturnFromBlocks
- end
-
- error(error_message)
- end
-
- private
- def error(message, http_status = nil)
- result = {
- message: message,
- status: :error
- }
+ return error('Testing not available for this hook') if trigger_key.nil? || data.blank?
+ return error(data[:error]) if data[:error].present?
- result[:http_status] = http_status if http_status
- result
+ hook.execute(data, trigger_key)
end
end
end