Strip whitespace from Sentry URL

Adding extra whitespace in the DSN could prevent the server from
starting due to InvalidURIErrors in sentry-raven.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/49621
This commit is contained in:
Stan Hu 2018-09-12 05:55:29 -07:00
parent fb81210ba7
commit 775081ba56
3 changed files with 41 additions and 0 deletions

View File

@ -219,6 +219,7 @@ class ApplicationSetting < ActiveRecord::Base
validate :terms_exist, if: :enforce_terms?
before_validation :ensure_uuid!
before_validation :strip_sentry_values
before_save :ensure_runners_registration_token
before_save :ensure_health_check_access_token
@ -382,6 +383,11 @@ class ApplicationSetting < ActiveRecord::Base
super(levels.map { |level| Gitlab::VisibilityLevel.level_value(level) })
end
def strip_sentry_values
sentry_dsn.strip! if sentry_dsn.present?
clientside_sentry_dsn.strip! if clientside_sentry_dsn.present?
end
def performance_bar_allowed_group
Group.find_by_id(performance_bar_allowed_group_id)
end

View File

@ -0,0 +1,5 @@
---
title: Strip whitespace from Sentry URL
merge_request: 21703
author:
type: fixed

View File

@ -305,6 +305,36 @@ describe ApplicationSetting do
end
end
describe 'setting Sentry DSNs' do
context 'server DSN' do
it 'strips leading and trailing whitespace' do
subject.update(sentry_dsn: ' http://test ')
expect(subject.sentry_dsn).to eq('http://test')
end
it 'handles nil values' do
subject.update(sentry_dsn: nil)
expect(subject.sentry_dsn).to be_nil
end
end
context 'client-side DSN' do
it 'strips leading and trailing whitespace' do
subject.update(clientside_sentry_dsn: ' http://test ')
expect(subject.clientside_sentry_dsn).to eq('http://test')
end
it 'handles nil values' do
subject.update(clientside_sentry_dsn: nil)
expect(subject.clientside_sentry_dsn).to be_nil
end
end
end
describe '#disabled_oauth_sign_in_sources=' do
before do
allow(Devise).to receive(:omniauth_providers).and_return([:github])