summaryrefslogtreecommitdiff
path: root/spec/controllers/concerns
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2018-06-14 09:02:32 +1000
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2018-06-14 09:02:32 +1000
commit202bd2da16942ca8c9b667b10c75025a0c95980d (patch)
tree36d1fce86be64e8e0d1748932028b6b3dedf203a /spec/controllers/concerns
parentadb069881ae0253c5bf3718aded02976f13fc859 (diff)
downloadgitlab-ce-202bd2da16942ca8c9b667b10c75025a0c95980d.tar.gz
Backport InternalRedirect#sanitize_redirectce-jej/sanitize-group-saml-relay-state
Diffstat (limited to 'spec/controllers/concerns')
-rw-r--r--spec/controllers/concerns/internal_redirect_spec.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/spec/controllers/concerns/internal_redirect_spec.rb b/spec/controllers/concerns/internal_redirect_spec.rb
index a0ee13b2352..7e23b56356e 100644
--- a/spec/controllers/concerns/internal_redirect_spec.rb
+++ b/spec/controllers/concerns/internal_redirect_spec.rb
@@ -54,6 +54,31 @@ describe InternalRedirect do
end
end
+ describe '#sanitize_redirect' do
+ let(:valid_path) { '/hello/world?hello=world' }
+ let(:valid_url) { "http://test.host#{valid_path}" }
+
+ it 'returns `nil` for invalid paths' do
+ invalid_path = '//not/valid'
+
+ expect(controller.sanitize_redirect(invalid_path)).to eq nil
+ end
+
+ it 'returns `nil` for invalid urls' do
+ input = 'http://test.host:3000/invalid'
+
+ expect(controller.sanitize_redirect(input)).to eq nil
+ end
+
+ it 'returns input for valid paths' do
+ expect(controller.sanitize_redirect(valid_path)).to eq valid_path
+ end
+
+ it 'returns path for valid urls' do
+ expect(controller.sanitize_redirect(valid_url)).to eq valid_path
+ end
+ end
+
describe '#host_allowed?' do
it 'allows uris with the same host and port' do
expect(controller.host_allowed?(URI('http://test.host/test'))).to be(true)