diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-12-17 15:08:15 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-12-17 15:08:15 +0000 |
commit | c2b98d3dbd47ab92c79c702276fe9130d9a28036 (patch) | |
tree | bf4071f551fdc12c22b23b2bb66483064e7b9ea9 /spec/models/concerns | |
parent | badb9c1deacbea601b02f88811b7e123589d9251 (diff) | |
download | gitlab-ce-c2b98d3dbd47ab92c79c702276fe9130d9a28036.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/concerns')
-rw-r--r-- | spec/models/concerns/safe_url_spec.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/spec/models/concerns/safe_url_spec.rb b/spec/models/concerns/safe_url_spec.rb new file mode 100644 index 00000000000..3244410181e --- /dev/null +++ b/spec/models/concerns/safe_url_spec.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe SafeUrl do + describe '#safe_url' do + class TestClass + include SafeUrl + + attr_reader :url + + def initialize(url) + @url = url + end + end + + let(:test_class) { TestClass.new(url) } + let(:url) { 'http://example.com' } + + subject { test_class.safe_url } + + it { is_expected.to eq(url) } + + context 'when URL contains credentials' do + let(:url) { 'http://foo:bar@example.com' } + + it { is_expected.to eq('http://*****:*****@example.com')} + + context 'when username is whitelisted' do + subject { test_class.safe_url(usernames_whitelist: usernames_whitelist) } + + let(:usernames_whitelist) { %w[foo] } + + it 'does expect the whitelisted username not to be masked' do + is_expected.to eq('http://foo:*****@example.com') + end + end + end + + context 'when URL is empty' do + let(:url) { nil } + + it { is_expected.to be_nil } + end + + context 'when URI raises an error' do + let(:url) { 123 } + + it { is_expected.to be_nil } + end + end +end |