const common = require('../../../server/lib/common'); const nock = require('nock'); const OembedAPI = require('../../../server/api/oembed'); const should = require('should'); describe('API: oembed', function () { describe('fn: read', function () { // https://oembed.com/providers.json only has schemes for https://reddit.com it('finds match for unlisted http scheme', function (done) { let requestMock = nock('https://www.reddit.com') .get('/oembed') .query(true) .reply(200, { html: 'test' }); OembedAPI.read({url: 'http://www.reddit.com/r/pics/comments/8qi5oq/breathtaking_picture_of_jupiter_with_its_moon_io/'}) .then((results) => { should.exist(results); should.exist(results.html); done(); }).catch(done); }); it('returns error for missing url', function (done) { OembedAPI.read({url: ''}) .then(() => { done(new Error('Fetch oembed without url should error')); }).catch((err) => { (err instanceof common.errors.BadRequestError).should.eql(true); done(); }); }); it('returns error for unsupported provider', function (done) { OembedAPI.read({url: 'http://example.com/unknown'}) .then(() => { done(new Error('Fetch oembed with unknown url provider should error')); }).catch((err) => { (err instanceof common.errors.ValidationError).should.eql(true); done(); }); }); it('returns error for fetch failure', function (done) { let requestMock = nock('https://www.youtube.com') .get('/oembed') .query(true) .reply(500); OembedAPI.read({url: 'https://www.youtube.com/watch?v=E5yFcdPAGv0'}) .then(() => { done(new Error('Fetch oembed with external failure should error')); }).catch((err) => { (err instanceof common.errors.InternalServerError).should.eql(true); done(); }); }); }); });