From 6ee11adf58d247d004ed838520d99281ce6426cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Mon, 11 Apr 2016 22:21:39 +0200 Subject: [PATCH] FIX: 'Discourse.isInternal' wasn't working with protocol-less URLs --- app/assets/javascripts/discourse/lib/url.js.es6 | 3 ++- test/javascripts/lib/url-test.js.es6 | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/url.js.es6 b/app/assets/javascripts/discourse/lib/url.js.es6 index 0f3364ab3..94ffa4522 100644 --- a/app/assets/javascripts/discourse/lib/url.js.es6 +++ b/app/assets/javascripts/discourse/lib/url.js.es6 @@ -173,8 +173,9 @@ const DiscourseURL = Ember.Object.createWithMixins({ * @method isInternal * @param {String} url **/ - isInternal: function(url) { + isInternal(url) { if (url && url.length) { + if (url.indexOf('//') === 0) { url = "http:" + url; } if (url.indexOf('#') === 0) { return true; } if (url.indexOf('/') === 0) { return true; } if (url.indexOf(this.origin()) === 0) { return true; } diff --git a/test/javascripts/lib/url-test.js.es6 b/test/javascripts/lib/url-test.js.es6 index 39941fd00..7c420b58c 100644 --- a/test/javascripts/lib/url-test.js.es6 +++ b/test/javascripts/lib/url-test.js.es6 @@ -7,8 +7,10 @@ test("isInternal with a HTTP url", function() { not(DiscourseURL.isInternal(null), "a blank URL is not internal"); ok(DiscourseURL.isInternal("/test"), "relative URLs are internal"); + ok(DiscourseURL.isInternal("//eviltrout.com"), "a url on the same host is internal (protocol-less)"); ok(DiscourseURL.isInternal("http://eviltrout.com/tophat"), "a url on the same host is internal"); ok(DiscourseURL.isInternal("https://eviltrout.com/moustache"), "a url on a HTTPS of the same host is internal"); + not(DiscourseURL.isInternal("//twitter.com.com"), "a different host is not internal (protocol-less)"); not(DiscourseURL.isInternal("http://twitter.com"), "a different host is not internal"); });