mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-03 12:37:56 +00:00
chore: Increase character limit for external url fields (#7230)
- Increase the external url field validation to 2048 characters fixes: https://github.com/chatwoot/chatwoot/issues/7098
This commit is contained in:
@@ -28,6 +28,7 @@ class AgentBot < ApplicationRecord
|
|||||||
enum bot_type: { webhook: 0, csml: 1 }
|
enum bot_type: { webhook: 0, csml: 1 }
|
||||||
|
|
||||||
validate :validate_agent_bot_config
|
validate :validate_agent_bot_config
|
||||||
|
validates :outgoing_url, length: { maximum: Limits::URL_LENGTH_LIMIT }
|
||||||
|
|
||||||
def available_name
|
def available_name
|
||||||
name
|
name
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class Attachment < ApplicationRecord
|
|||||||
belongs_to :message
|
belongs_to :message
|
||||||
has_one_attached :file
|
has_one_attached :file
|
||||||
validate :acceptable_file
|
validate :acceptable_file
|
||||||
validates :external_url, length: { maximum: 1000 }
|
validates :external_url, length: { maximum: Limits::URL_LENGTH_LIMIT }
|
||||||
enum file_type: [:image, :audio, :video, :file, :location, :fallback, :share, :story_mention, :contact]
|
enum file_type: [:image, :audio, :video, :file, :location, :fallback, :share, :story_mention, :contact]
|
||||||
|
|
||||||
def push_event_data
|
def push_event_data
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ class Channel::Api < ApplicationRecord
|
|||||||
has_secure_token :identifier
|
has_secure_token :identifier
|
||||||
has_secure_token :hmac_token
|
has_secure_token :hmac_token
|
||||||
validate :ensure_valid_agent_reply_time_window
|
validate :ensure_valid_agent_reply_time_window
|
||||||
|
validates :webhook_url, length: { maximum: Limits::URL_LENGTH_LIMIT }
|
||||||
|
|
||||||
def name
|
def name
|
||||||
'API'
|
'API'
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
module Limits
|
module Limits
|
||||||
BULK_ACTIONS_LIMIT = 100
|
BULK_ACTIONS_LIMIT = 100
|
||||||
BULK_EXTERNAL_HTTP_CALLS_LIMIT = 25
|
BULK_EXTERNAL_HTTP_CALLS_LIMIT = 25
|
||||||
|
URL_LENGTH_LIMIT = 2048 # https://stackoverflow.com/questions/417142
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,4 +12,19 @@ RSpec.describe AgentBot do
|
|||||||
it_behaves_like 'access_tokenable'
|
it_behaves_like 'access_tokenable'
|
||||||
it_behaves_like 'avatarable'
|
it_behaves_like 'avatarable'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when it validates outgoing_url length' do
|
||||||
|
let(:agent_bot) { create(:agent_bot) }
|
||||||
|
|
||||||
|
it 'valid when within limit' do
|
||||||
|
agent_bot.outgoing_url = 'a' * Limits::URL_LENGTH_LIMIT
|
||||||
|
expect(agent_bot.valid?).to be true
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'invalid when crossed the limit' do
|
||||||
|
agent_bot.outgoing_url = 'a' * (Limits::URL_LENGTH_LIMIT + 1)
|
||||||
|
agent_bot.valid?
|
||||||
|
expect(agent_bot.errors[:outgoing_url]).to include("is too long (maximum is #{Limits::URL_LENGTH_LIMIT} characters)")
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,14 +11,14 @@ RSpec.describe Attachment do
|
|||||||
|
|
||||||
context 'when it validates external url length' do
|
context 'when it validates external url length' do
|
||||||
it 'valid when within limit' do
|
it 'valid when within limit' do
|
||||||
attachment.external_url = 'a' * 1000
|
attachment.external_url = 'a' * Limits::URL_LENGTH_LIMIT
|
||||||
expect(attachment.valid?).to be true
|
expect(attachment.valid?).to be true
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'invalid when crossed the limit' do
|
it 'invalid when crossed the limit' do
|
||||||
attachment.external_url = 'a' * 1500
|
attachment.external_url = 'a' * (Limits::URL_LENGTH_LIMIT + 5)
|
||||||
attachment.valid?
|
attachment.valid?
|
||||||
expect(attachment.errors[:external_url]).to include('is too long (maximum is 1000 characters)')
|
expect(attachment.errors[:external_url]).to include("is too long (maximum is #{Limits::URL_LENGTH_LIMIT} characters)")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
23
spec/models/channel/api_spec.rb
Normal file
23
spec/models/channel/api_spec.rb
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Channel::Api do
|
||||||
|
# This validation happens in ApplicationRecord
|
||||||
|
describe 'length validations' do
|
||||||
|
let(:channel_api) { create(:channel_api) }
|
||||||
|
|
||||||
|
context 'when it validates webhook_url length' do
|
||||||
|
it 'valid when within limit' do
|
||||||
|
channel_api.webhook_url = 'a' * Limits::URL_LENGTH_LIMIT
|
||||||
|
expect(channel_api.valid?).to be true
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'invalid when crossed the limit' do
|
||||||
|
channel_api.webhook_url = 'a' * (Limits::URL_LENGTH_LIMIT + 1)
|
||||||
|
channel_api.valid?
|
||||||
|
expect(channel_api.errors[:webhook_url]).to include("is too long (maximum is #{Limits::URL_LENGTH_LIMIT} characters)")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user