From c2b98d3dbd47ab92c79c702276fe9130d9a28036 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 17 Dec 2019 15:08:15 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- spec/models/concerns/safe_url_spec.rb | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 spec/models/concerns/safe_url_spec.rb (limited to 'spec/models/concerns') 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 -- cgit v1.2.1