import { registerTSPaths } from '../server/helpers/register-ts-paths' registerTSPaths() import * as autocannon from 'autocannon' import { addVideoCommentReply, addVideoCommentThread, createVideoCaption, flushAndRunServer, getVideosList, killallServers, ServerInfo, setAccessTokensToServers, uploadVideo } from '@shared/extra-utils' import { Video, VideoPrivacy } from '@shared/models' import { writeJson } from 'fs-extra' let server: ServerInfo let video: Video let threadId: number const outfile = process.argv[2] run() .catch(err => console.error(err)) .finally(() => { if (server) killallServers([ server ]) }) function buildAuthorizationHeader () { return { Authorization: 'Bearer ' + server.accessToken } } function buildAPHeader () { return { Accept: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' } } async function run () { console.log('Preparing server...') await prepare() const tests = [ { title: 'AP - account peertube', path: '/accounts/peertube', headers: buildAPHeader(), expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"type":') } }, { title: 'AP - video', path: '/videos/watch/' + video.uuid, headers: buildAPHeader(), expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"type":"Video"') } }, { title: 'Misc - webfinger peertube', path: '/.well-known/webfinger?resource=acct:peertube@' + server.host, expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"subject":') } }, { title: 'API - unread notifications', path: '/api/v1/users/me/notifications?start=0&count=0&unread=true', headers: buildAuthorizationHeader(), expecter: (_client, statusCode) => { return statusCode === 200 } }, { title: 'API - me', path: '/api/v1/users/me', headers: buildAuthorizationHeader(), expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"id":') } }, { title: 'API - videos list', path: '/api/v1/videos', expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"total":10') } }, { title: 'API - video get', path: '/api/v1/videos/' + video.uuid, expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"id":') } }, { title: 'API - video captions', path: '/api/v1/videos/' + video.uuid + '/captions', expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"total":4') } }, { title: 'API - video threads', path: '/api/v1/videos/' + video.uuid + '/comment-threads', expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"total":10') } }, { title: 'API - video replies', path: '/api/v1/videos/' + video.uuid + '/comment-threads/' + threadId, expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.startsWith('{"comment":{') } }, { title: 'HTML - video watch', path: '/videos/watch/' + video.uuid, expecter: (client, statusCode) => { const body = client.resData[0].body return statusCode === 200 && body.includes('