diff --git a/test/e2e-api/admin/media.test.js b/test/e2e-api/admin/media.test.js index be2edc749e..fea04b9e94 100644 --- a/test/e2e-api/admin/media.test.js +++ b/test/e2e-api/admin/media.test.js @@ -23,64 +23,69 @@ describe('Media API', function () { }); }); - it('Can upload a MP4', async function () { - const res = await request.post(localUtils.API.getApiQuery('media/upload')) - .set('Origin', config.get('url')) - .expect('Content-Type', /json/) - .field('purpose', 'video') - .field('ref', 'https://ghost.org/sample_640x360.mp4') - .attach('file', path.join(__dirname, '/../../utils/fixtures/media/sample_640x360.mp4')) - .attach('thumbnail', path.join(__dirname, '/../../utils/fixtures/images/ghost-logo.png')) - .expect(201); + describe('media/upload', function () { + it('Can upload a MP4', async function () { + const res = await request.post(localUtils.API.getApiQuery('media/upload')) + .set('Origin', config.get('url')) + .expect('Content-Type', /json/) + .field('purpose', 'video') + .field('ref', 'https://ghost.org/sample_640x360.mp4') + .attach('file', path.join(__dirname, '/../../utils/fixtures/media/sample_640x360.mp4')) + .attach('thumbnail', path.join(__dirname, '/../../utils/fixtures/images/ghost-logo.png')) + .expect(201); - res.body.media[0].url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360.mp4`)); - res.body.media[0].thumbnail_url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360_thumb.png`)); - res.body.media[0].ref.should.equal('https://ghost.org/sample_640x360.mp4'); + res.body.media[0].url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360.mp4`)); + res.body.media[0].thumbnail_url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360_thumb.png`)); + res.body.media[0].ref.should.equal('https://ghost.org/sample_640x360.mp4'); - media.push(res.body.media[0].url.replace(config.get('url'), '')); - media.push(res.body.media[0].thumbnail_url.replace(config.get('url'), '')); + media.push(res.body.media[0].url.replace(config.get('url'), '')); + media.push(res.body.media[0].thumbnail_url.replace(config.get('url'), '')); + }); + + it('Can upload a WebM without a thumbnail', async function () { + const res = await request.post(localUtils.API.getApiQuery('media/upload')) + .set('Origin', config.get('url')) + .expect('Content-Type', /json/) + .field('purpose', 'video') + .field('ref', 'https://ghost.org/sample_640x360.webm') + .attach('file', path.join(__dirname, '/../../utils/fixtures/media/sample_640x360.webm')) + .expect(201); + + res.body.media[0].url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360.webm`)); + should(res.body.media[0].thumbnail_url).eql(null); + res.body.media[0].ref.should.equal('https://ghost.org/sample_640x360.webm'); + + media.push(res.body.media[0].url.replace(config.get('url'), '')); + }); + + it('Can upload an Ogg', async function () { + const res = await request.post(localUtils.API.getApiQuery('media/upload')) + .set('Origin', config.get('url')) + .expect('Content-Type', /json/) + .field('purpose', 'video') + .field('ref', 'https://ghost.org/sample_640x360.ogv') + .attach('file', path.join(__dirname, '/../../utils/fixtures/media/sample_640x360.ogv')) + .attach('thumbnail', path.join(__dirname, '/../../utils/fixtures/images/ghost-logo.png')) + .expect(201); + + res.body.media[0].url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360.ogv`)); + res.body.media[0].ref.should.equal('https://ghost.org/sample_640x360.ogv'); + + media.push(res.body.media[0].url.replace(config.get('url'), '')); + }); + + it('Rejects non-media file type', async function () { + const res = await request.post(localUtils.API.getApiQuery('media/upload')) + .set('Origin', config.get('url')) + .expect('Content-Type', /json/) + .attach('file', path.join(__dirname, '/../../utils/fixtures/images/favicon_16x_single.ico')) + .attach('thumbnail', path.join(__dirname, '/../../utils/fixtures/images/ghost-logo.png')) + .expect(415); + + res.body.errors[0].message.should.match(/select a valid media file/gi); + }); }); - it('Can upload a WebM without a thumbnail', async function () { - const res = await request.post(localUtils.API.getApiQuery('media/upload')) - .set('Origin', config.get('url')) - .expect('Content-Type', /json/) - .field('purpose', 'video') - .field('ref', 'https://ghost.org/sample_640x360.webm') - .attach('file', path.join(__dirname, '/../../utils/fixtures/media/sample_640x360.webm')) - .expect(201); - - res.body.media[0].url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360.webm`)); - should(res.body.media[0].thumbnail_url).eql(null); - res.body.media[0].ref.should.equal('https://ghost.org/sample_640x360.webm'); - - media.push(res.body.media[0].url.replace(config.get('url'), '')); - }); - - it('Can upload an Ogg', async function () { - const res = await request.post(localUtils.API.getApiQuery('media/upload')) - .set('Origin', config.get('url')) - .expect('Content-Type', /json/) - .field('purpose', 'video') - .field('ref', 'https://ghost.org/sample_640x360.ogv') - .attach('file', path.join(__dirname, '/../../utils/fixtures/media/sample_640x360.ogv')) - .attach('thumbnail', path.join(__dirname, '/../../utils/fixtures/images/ghost-logo.png')) - .expect(201); - - res.body.media[0].url.should.match(new RegExp(`${config.get('url')}/content/media/\\d+/\\d+/sample_640x360.ogv`)); - res.body.media[0].ref.should.equal('https://ghost.org/sample_640x360.ogv'); - - media.push(res.body.media[0].url.replace(config.get('url'), '')); - }); - - it('Rejects non-media file type', async function () { - const res = await request.post(localUtils.API.getApiQuery('media/upload')) - .set('Origin', config.get('url')) - .expect('Content-Type', /json/) - .attach('file', path.join(__dirname, '/../../utils/fixtures/images/favicon_16x_single.ico')) - .attach('thumbnail', path.join(__dirname, '/../../utils/fixtures/images/ghost-logo.png')) - .expect(415); - - res.body.errors[0].message.should.match(/select a valid media file/gi); + describe('media/thumbnail/:url', function () { }); });