Browse Source

Fixes #4663 - Webhook data contains "no such method" for #{ticket.organization.name} when organization is empty

Tobias Schäfer 1 year ago
parent
commit
8fb218ad3d

+ 1 - 0
app/jobs/trigger_webhook_job/custom_payload/validator.rb

@@ -38,6 +38,7 @@ module TriggerWebhookJob::CustomPayload::Validator
         return "\#{#{display} / #{e.message}}"
         return "\#{#{display} / #{e.message}}"
       end
       end
 
 
+      return '' if value.nil?
       return validate_value!(value, display) if index == methods.size - 1
       return validate_value!(value, display) if index == methods.size - 1
 
 
       reference = value
       reference = value

+ 19 - 0
spec/jobs/trigger_webhook_job/custom_payload_spec.rb

@@ -120,6 +120,25 @@ RSpec.describe TriggerWebhookJob::CustomPayload do
       end
       end
     end
     end
 
 
+    context 'when the placeholder contains valid object and method, but the value is nil' do
+      let(:record) do
+        {
+          'ticket.organization.name' => '#{ticket.organization.name}',
+          'ticket.title'             => '#{ticket.title}'
+        }.to_json
+      end
+      let(:json_data) do
+        {
+          'ticket.organization.name' => '',
+          'ticket.title'             => ticket.title
+        }
+      end
+
+      it 'returns an empty string' do
+        expect(generate).to eq(json_data)
+      end
+    end
+
     context 'when the placeholder contains multiple valid object and method' do
     context 'when the placeholder contains multiple valid object and method' do
       let(:record) do
       let(:record) do
         {
         {