X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Futils.js;h=3cc769f265a26066ba85dd668700073d1955767c;hb=677618d4a600a1678088d107850c8f1f8c95255f;hp=d505cb5d9d5728e0a1a5ca913551f887ef0c8659;hpb=bb10240ee15d31a1cc17c0e3d748dde817e7d0cb;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/utils.js b/server/tests/api/utils.js index d505cb5d9..3cc769f26 100644 --- a/server/tests/api/utils.js +++ b/server/tests/api/utils.js @@ -10,10 +10,13 @@ const request = require('supertest') const testUtils = { dateIsValid: dateIsValid, flushTests: flushTests, + getAllVideosListBy: getAllVideosListBy, + getClient: getClient, getFriendsList: getFriendsList, getVideo: getVideo, getVideosList: getVideosList, getVideosListPagination: getVideosListPagination, + getVideosListSort: getVideosListSort, login: login, loginAndGetAccessToken: loginAndGetAccessToken, makeFriends: makeFriends, @@ -23,6 +26,7 @@ const testUtils = { runServer: runServer, searchVideo: searchVideo, searchVideoWithPagination: searchVideoWithPagination, + searchVideoWithSort: searchVideoWithSort, testImage: testImage, uploadVideo: uploadVideo } @@ -43,6 +47,31 @@ function flushTests (callback) { exec('npm run clean:server:test', callback) } +function getAllVideosListBy (url, end) { + const path = '/api/v1/videos' + + request(url) + .get(path) + .query({ sort: 'createdDate' }) + .query({ start: 0 }) + .query({ count: 10000 }) + .set('Accept', 'application/json') + .expect(200) + .expect('Content-Type', /json/) + .end(end) +} + +function getClient (url, end) { + const path = '/api/v1/users/client' + + request(url) + .get(path) + .set('Accept', 'application/json') + .expect(200) + .expect('Content-Type', /json/) + .end(end) +} + function getFriendsList (url, end) { const path = '/api/v1/pods/' @@ -70,6 +99,7 @@ function getVideosList (url, end) { request(url) .get(path) + .query({ sort: 'name' }) .set('Accept', 'application/json') .expect(200) .expect('Content-Type', /json/) @@ -89,6 +119,18 @@ function getVideosListPagination (url, start, count, end) { .end(end) } +function getVideosListSort (url, sort, end) { + const path = '/api/v1/videos' + + request(url) + .get(path) + .query({ sort: sort }) + .set('Accept', 'application/json') + .expect(200) + .expect('Content-Type', /json/) + .end(end) +} + function login (url, client, user, expectedStatus, end) { if (!end) { end = expectedStatus @@ -276,24 +318,43 @@ function runServer (number, callback) { }) } -function searchVideo (url, search, end) { +function searchVideo (url, search, field, end) { + if (!end) { + end = field + field = null + } + + const path = '/api/v1/videos' + const req = request(url) + .get(path + '/search/' + search) + .set('Accept', 'application/json') + + if (field) req.query({ field: field }) + req.expect(200) + .expect('Content-Type', /json/) + .end(end) +} + +function searchVideoWithPagination (url, search, field, start, count, end) { const path = '/api/v1/videos' request(url) .get(path + '/search/' + search) + .query({ start: start }) + .query({ count: count }) + .query({ field: field }) .set('Accept', 'application/json') .expect(200) .expect('Content-Type', /json/) .end(end) } -function searchVideoWithPagination (url, search, start, count, end) { +function searchVideoWithSort (url, search, sort, end) { const path = '/api/v1/videos' request(url) .get(path + '/search/' + search) - .query({ start: start }) - .query({ count: count }) + .query({ sort: sort }) .set('Accept', 'application/json') .expect(200) .expect('Content-Type', /json/) @@ -301,21 +362,28 @@ function searchVideoWithPagination (url, search, start, count, end) { } function testImage (url, videoName, imagePath, callback) { - request(url) - .get(imagePath) - .expect(200) - .end(function (err, res) { - if (err) return callback(err) - - fs.readFile(pathUtils.join(__dirname, 'fixtures', videoName + '.jpg'), function (err, data) { + // Don't test images if the node env is not set + // Because we need a special ffmpeg version for this test + if (process.env.NODE_TEST_IMAGE) { + request(url) + .get(imagePath) + .expect(200) + .end(function (err, res) { if (err) return callback(err) - callback(null, data.equals(res.body)) + fs.readFile(pathUtils.join(__dirname, 'fixtures', videoName + '.jpg'), function (err, data) { + if (err) return callback(err) + + callback(null, data.equals(res.body)) + }) }) - }) + } else { + console.log('Do not test images. Enable it by setting NODE_TEST_IMAGE env variable.') + callback(null, true) + } } -function uploadVideo (url, accessToken, name, description, fixture, specialStatus, end) { +function uploadVideo (url, accessToken, name, description, tags, fixture, specialStatus, end) { if (!end) { end = specialStatus specialStatus = 204 @@ -323,15 +391,27 @@ function uploadVideo (url, accessToken, name, description, fixture, specialStatu const path = '/api/v1/videos' - request(url) - .post(path) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + accessToken) - .field('name', name) - .field('description', description) - .attach('videofile', pathUtils.join(__dirname, 'fixtures', fixture)) - .expect(specialStatus) - .end(end) + const req = request(url) + .post(path) + .set('Accept', 'application/json') + .set('Authorization', 'Bearer ' + accessToken) + .field('name', name) + .field('description', description) + + for (let i = 0; i < tags.length; i++) { + req.field('tags[' + i + ']', tags[i]) + } + + let filepath = '' + if (pathUtils.isAbsolute(fixture)) { + filepath = fixture + } else { + filepath = pathUtils.join(__dirname, 'fixtures', fixture) + } + + req.attach('videofile', filepath) + .expect(specialStatus) + .end(end) } // ---------------------------------------------------------------------------