diff --git a/core/server/api/oembed.js b/core/server/api/oembed.js index 60a931a459..4252ab80f6 100644 --- a/core/server/api/oembed.js +++ b/core/server/api/oembed.js @@ -14,7 +14,7 @@ let oembed = { // build up a list of URL variations to test against because the oembed // providers list is not always up to date with scheme or www vs non-www - let base = url.replace(/https?:\/\/(?:www\.)?/, ''); + let base = url.replace(/^\/\/|^https?:\/\/(?:www\.)?/, ''); let testUrls = [ `http://${base}`, `https://${base}`, diff --git a/core/test/unit/api/oembed_spec.js b/core/test/unit/api/oembed_spec.js index 70be425bbe..3cf0936de6 100644 --- a/core/test/unit/api/oembed_spec.js +++ b/core/test/unit/api/oembed_spec.js @@ -22,6 +22,23 @@ describe('API: oembed', function () { }).catch(done); }); + it('finds match for schema-less urls', function (done) { + let requestMock = nock('https://www.reddit.com') + .get('/oembed') + .query(true) + .reply(200, { + html: 'test' + }); + + OembedAPI.read({url: '//www.reddit.com/r/pics/comments/8qi5oq/breathtaking_picture_of_jupiter_with_its_moon_io/'}) + .then((results) => { + requestMock.isDone().should.be.true; + should.exist(results); + should.exist(results.html); + done(); + }).catch(done); + }); + it('returns error for missing url', function (done) { OembedAPI.read({url: ''}) .then(() => {