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:
Sojan Jose
2023-05-31 19:17:24 +05:30
committed by GitHub
parent 373f5f5b64
commit d93a8d05bc
7 changed files with 45 additions and 4 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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'

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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