-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'
+import { createSingleServer, killallServers, PeerTubeServer, setAccessTokensToServers } from '@shared/extra-utils'
+import { Video, VideoPrivacy } from '@shared/models'
+import { registerTSPaths } from '../server/helpers/register-ts-paths'
-let server: ServerInfo
+registerTSPaths()
+
+let server: PeerTubeServer
let video: Video
let threadId: number
run()
.catch(err => console.error(err))
.finally(() => {
- if (server) killallServers([ server ])
+ if (server) return killallServers([ server ])
})
function buildAuthorizationHeader () {
title: 'AP - account peertube',
path: '/accounts/peertube',
headers: buildAPHeader(),
- expecter: (client, statusCode) => {
- const body = client.resData[0].body
-
- return statusCode === 200 && body.startsWith('{"type":')
+ expecter: (body, status) => {
+ return status === 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"')
+ expecter: (body, status) => {
+ return status === 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":')
+ expecter: (body, status) => {
+ return status === 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
+ expecter: (_body, status) => {
+ return status === 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":')
+ expecter: (body, status) => {
+ return status === 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')
+ expecter: (body, status) => {
+ return status === 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":')
+ expecter: (body, status) => {
+ return status === 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')
+ expecter: (body, status) => {
+ return status === 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')
+ expecter: (body, status) => {
+ return status === 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":{')
+ expecter: (body, status) => {
+ return status === 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('<title>my super')
+ expecter: (body, status) => {
+ return status === 200 && body.includes('<title>my super')
}
},
{
title: 'HTML - video embed',
path: '/videos/embed/' + video.uuid,
- expecter: (client, statusCode) => {
- const body = client.resData[0].body
-
- return statusCode === 200 && body.includes('embed')
+ expecter: (body, status) => {
+ return status === 200 && body.includes('embed')
}
},
{
title: 'HTML - homepage',
path: '/',
- expecter: (_client, statusCode) => {
- return statusCode === 200
+ expecter: (_body, status) => {
+ return status === 200
}
},
{
title: 'API - config',
path: '/api/v1/config',
- expecter: (client, statusCode) => {
- const body = client.resData[0].body
-
- return statusCode === 200 && body.startsWith('{"instance":')
+ expecter: (body, status) => {
+ return status === 200 && body.startsWith('{"instance":')
}
}
]
const { path, expecter, headers } = options
return new Promise((res, rej) => {
- const instance = autocannon({
+ autocannon({
url: server.url + path,
connections: 20,
headers,
pipelining: 1,
- duration: 10
+ duration: 10,
+ requests: [
+ {
+ onResponse: (status, body) => {
+ if (expecter(body, status) !== true) {
+ console.error('Expected result failed.', { body, status })
+ throw new Error('Invalid expectation')
+ }
+ }
+ }
+ ]
}, (err, result) => {
if (err) return rej(err)
return res(result)
})
-
- instance.on('response', (client, statusCode) => {
- if (expecter(client, statusCode) !== true) {
- console.error('Expected result failed.', { data: client.resData })
- process.exit(-1)
- }
- })
})
}
async function prepare () {
- server = await flushAndRunServer(1, {
+ server = await createSingleServer(1, {
rates_limit: {
api: {
max: 5_000_000
})
await setAccessTokensToServers([ server ])
- const videoAttributes = {
+ const attributes = {
name: 'my super video',
category: 2,
nsfw: true,
}
for (let i = 0; i < 10; i++) {
- Object.assign(videoAttributes, { name: 'my super video ' + i })
- await uploadVideo(server.url, server.accessToken, videoAttributes)
+ await server.videos.upload({ attributes: { ...attributes, name: 'my super video ' + i } })
}
- const resVideos = await getVideosList(server.url)
- video = resVideos.body.data.find(v => v.name === 'my super video 1')
+ const { data } = await server.videos.list()
+ video = data.find(v => v.name === 'my super video 1')
for (let i = 0; i < 10; i++) {
const text = 'my super first comment'
- const res = await addVideoCommentThread(server.url, server.accessToken, video.id, text)
- threadId = res.body.comment.id
+ const created = await server.comments.createThread({ videoId: video.id, text })
+ threadId = created.id
const text1 = 'my super answer to thread 1'
- const childCommentRes = await addVideoCommentReply(server.url, server.accessToken, video.id, threadId, text1)
- const childCommentId = childCommentRes.body.comment.id
+ const child = await server.comments.addReply({ videoId: video.id, toCommentId: threadId, text: text1 })
const text2 = 'my super answer to answer of thread 1'
- await addVideoCommentReply(server.url, server.accessToken, video.id, childCommentId, text2)
+ await server.comments.addReply({ videoId: video.id, toCommentId: child.id, text: text2 })
const text3 = 'my second answer to thread 1'
- await addVideoCommentReply(server.url, server.accessToken, video.id, threadId, text3)
+ await server.comments.addReply({ videoId: video.id, toCommentId: threadId, text: text3 })
}
for (const caption of [ 'ar', 'fr', 'en', 'zh' ]) {
- await createVideoCaption({
- url: server.url,
- accessToken: server.accessToken,
+ await server.captions.add({
language: caption,
videoId: video.id,
fixture: 'subtitle-good2.vtt'