})
it('Should upload a video and move it to the object storage without transcoding', async function () {
- this.timeout(20000)
+ this.timeout(40000)
const { uuid } = await servers[0].videos.quickUpload({ name: 'video 1' })
uuidsToDelete.push(uuid)
import express from 'express'
import { Server } from 'http'
-import { randomInt } from '@shared/core-utils'
-import { terminateServer } from './utils'
+import { getPort, randomListen, terminateServer } from './utils'
export class MockInstancesIndex {
private server: Server
private readonly indexInstances: { host: string, createdAt: string }[] = []
- initialize () {
- return new Promise<number>(res => {
- const app = express()
+ async initialize () {
+ const app = express()
- app.use('/', (req: express.Request, res: express.Response, next: express.NextFunction) => {
- if (process.env.DEBUG) console.log('Receiving request on mocked server %s.', req.url)
+ app.use('/', (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ if (process.env.DEBUG) console.log('Receiving request on mocked server %s.', req.url)
- return next()
- })
-
- app.get('/api/v1/instances/hosts', (req: express.Request, res: express.Response) => {
- const since = req.query.since
+ return next()
+ })
- const filtered = this.indexInstances.filter(i => {
- if (!since) return true
+ app.get('/api/v1/instances/hosts', (req: express.Request, res: express.Response) => {
+ const since = req.query.since
- return i.createdAt > since
- })
+ const filtered = this.indexInstances.filter(i => {
+ if (!since) return true
- return res.json({
- total: filtered.length,
- data: filtered
- })
+ return i.createdAt > since
})
- const port = 42000 + randomInt(1, 1000)
- this.server = app.listen(port, () => res(port))
+ return res.json({
+ total: filtered.length,
+ data: filtered
+ })
})
+
+ this.server = await randomListen(app)
+
+ return getPort(this.server)
}
addInstance (host: string) {
import express from 'express'
-import { randomInt } from '@shared/core-utils'
+import { Server } from 'http'
+import { getPort, randomListen } from './utils'
export class MockJoinPeerTubeVersions {
+ private server: Server
private latestVersion: string
- initialize () {
- return new Promise<number>(res => {
- const app = express()
+ async initialize () {
+ const app = express()
- app.use('/', (req: express.Request, res: express.Response, next: express.NextFunction) => {
- if (process.env.DEBUG) console.log('Receiving request on mocked server %s.', req.url)
+ app.use('/', (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ if (process.env.DEBUG) console.log('Receiving request on mocked server %s.', req.url)
- return next()
- })
+ return next()
+ })
- app.get('/versions.json', (req: express.Request, res: express.Response) => {
- return res.json({
- peertube: {
- latestVersion: this.latestVersion
- }
- })
+ app.get('/versions.json', (req: express.Request, res: express.Response) => {
+ return res.json({
+ peertube: {
+ latestVersion: this.latestVersion
+ }
})
-
- const port = 43000 + randomInt(1, 1000)
- app.listen(port, () => res(port))
})
+
+ this.server = await randomListen(app)
+
+ return getPort(this.server)
}
setLatestVersion (latestVersion: string) {
import got, { RequestError } from 'got'
import { Server } from 'http'
import { pipeline } from 'stream'
-import { randomInt } from '@shared/core-utils'
import { ObjectStorageCommand } from '../server'
-import { terminateServer } from './utils'
+import { getPort, randomListen, terminateServer } from './utils'
export class MockObjectStorage {
private server: Server
- initialize () {
- return new Promise<number>(res => {
- const app = express()
+ async initialize () {
+ const app = express()
- app.get('/:bucketName/:path(*)', (req: express.Request, res: express.Response, next: express.NextFunction) => {
- const url = `http://${req.params.bucketName}.${ObjectStorageCommand.getEndpointHost()}/${req.params.path}`
+ app.get('/:bucketName/:path(*)', (req: express.Request, res: express.Response, next: express.NextFunction) => {
+ const url = `http://${req.params.bucketName}.${ObjectStorageCommand.getEndpointHost()}/${req.params.path}`
- if (process.env.DEBUG) {
- console.log('Receiving request on mocked server %s.', req.url)
- console.log('Proxifying request to %s', url)
- }
-
- return pipeline(
- got.stream(url, { throwHttpErrors: false }),
- res,
- (err: RequestError) => {
- if (!err) return
+ if (process.env.DEBUG) {
+ console.log('Receiving request on mocked server %s.', req.url)
+ console.log('Proxifying request to %s', url)
+ }
- console.error('Pipeline failed.', err)
- }
- )
- })
+ return pipeline(
+ got.stream(url, { throwHttpErrors: false }),
+ res,
+ (err: RequestError) => {
+ if (!err) return
- const port = 44000 + randomInt(1, 1000)
- this.server = app.listen(port, () => res(port))
+ console.error('Pipeline failed.', err)
+ }
+ )
})
+
+ this.server = await randomListen(app)
+
+ return getPort(this.server)
}
terminate () {
import express, { Request, Response } from 'express'
import { Server } from 'http'
-import { randomInt } from '@shared/core-utils'
-import { terminateServer } from './utils'
+import { getPort, randomListen, terminateServer } from './utils'
type BlocklistResponse = {
data: {
private body: BlocklistResponse
private server: Server
- initialize () {
- return new Promise<number>(res => {
- const app = express()
+ async initialize () {
+ const app = express()
- app.get('/blocklist', (req: Request, res: Response) => {
- return res.json(this.body)
- })
-
- const port = 45000 + randomInt(1, 1000)
- this.server = app.listen(port, () => res(port))
+ app.get('/blocklist', (req: Request, res: Response) => {
+ return res.json(this.body)
})
+
+ this.server = await randomListen(app)
+
+ return getPort(this.server)
}
replace (body: BlocklistResponse) {
import { createServer, Server } from 'http'
import proxy from 'proxy'
-import { randomInt } from '@shared/core-utils'
-import { terminateServer } from './utils'
+import { getPort, terminateServer } from './utils'
class MockProxy {
private server: Server
initialize () {
return new Promise<number>(res => {
- const port = 46000 + randomInt(1, 1000)
-
this.server = proxy(createServer())
- this.server.listen(port, () => res(port))
+ this.server.listen(0, () => res(getPort(this.server)))
})
}
+import { Express } from 'express'
import { Server } from 'http'
+import { AddressInfo } from 'net'
+
+function randomListen (app: Express) {
+ return new Promise<Server>(res => {
+ const server = app.listen(0, () => res(server))
+ })
+}
+
+function getPort (server: Server) {
+ const address = server.address() as AddressInfo
+
+ return address.port
+}
function terminateServer (server: Server) {
if (!server) return Promise.resolve()
}
export {
+ randomListen,
+ getPort,
terminateServer
}