FIX: 'Discourse.isInternal' wasn't working with protocol-less URLs

This commit is contained in:
Régis Hanol 2016-04-11 22:21:39 +02:00
parent 71fe66c8c2
commit 6ee11adf58
2 changed files with 4 additions and 1 deletions

View File

@ -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; }

View File

@ -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");
});