mirror of https://github.com/Chocobozzz/PeerTube
121 lines
3.4 KiB
TypeScript
121 lines
3.4 KiB
TypeScript
|
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
|
||
|
|
||
|
import { expect } from 'chai'
|
||
|
import { readdir, remove } from 'fs-extra'
|
||
|
import { join } from 'path'
|
||
|
import { HttpStatusCode } from '@shared/models'
|
||
|
import {
|
||
|
cleanupTests,
|
||
|
createMultipleServers,
|
||
|
doubleFollow,
|
||
|
makeGetRequest,
|
||
|
PeerTubeServer,
|
||
|
setAccessTokensToServers,
|
||
|
waitJobs
|
||
|
} from '@shared/server-commands'
|
||
|
import { SQLCommand } from '../shared'
|
||
|
|
||
|
function listStoryboardFiles (server: PeerTubeServer) {
|
||
|
const storage = server.getDirectoryPath('storyboards')
|
||
|
|
||
|
return readdir(storage)
|
||
|
}
|
||
|
|
||
|
describe('Test create generate storyboard job', function () {
|
||
|
let servers: PeerTubeServer[] = []
|
||
|
const uuids: string[] = []
|
||
|
let sql: SQLCommand
|
||
|
let existingStoryboardName: string
|
||
|
|
||
|
before(async function () {
|
||
|
this.timeout(120000)
|
||
|
|
||
|
// Run server 2 to have transcoding enabled
|
||
|
servers = await createMultipleServers(2)
|
||
|
await setAccessTokensToServers(servers)
|
||
|
|
||
|
await doubleFollow(servers[0], servers[1])
|
||
|
|
||
|
for (let i = 0; i < 3; i++) {
|
||
|
const { uuid } = await servers[0].videos.quickUpload({ name: 'video ' + i })
|
||
|
uuids.push(uuid)
|
||
|
}
|
||
|
|
||
|
await waitJobs(servers)
|
||
|
|
||
|
const storage = servers[0].getDirectoryPath('storyboards')
|
||
|
for (const storyboard of await listStoryboardFiles(servers[0])) {
|
||
|
await remove(join(storage, storyboard))
|
||
|
}
|
||
|
|
||
|
sql = new SQLCommand(servers[0])
|
||
|
await sql.deleteAll('storyboard')
|
||
|
|
||
|
const { uuid } = await servers[0].videos.quickUpload({ name: 'video 4' })
|
||
|
uuids.push(uuid)
|
||
|
|
||
|
await waitJobs(servers)
|
||
|
|
||
|
const storyboards = await listStoryboardFiles(servers[0])
|
||
|
existingStoryboardName = storyboards[0]
|
||
|
})
|
||
|
|
||
|
it('Should create a storyboard of a video', async function () {
|
||
|
this.timeout(120000)
|
||
|
|
||
|
for (const uuid of [ uuids[0], uuids[3] ]) {
|
||
|
const command = `npm run create-generate-storyboard-job -- -v ${uuid}`
|
||
|
await servers[0].cli.execWithEnv(command)
|
||
|
}
|
||
|
|
||
|
await waitJobs(servers)
|
||
|
|
||
|
{
|
||
|
const storyboards = await listStoryboardFiles(servers[0])
|
||
|
expect(storyboards).to.have.lengthOf(2)
|
||
|
expect(storyboards).to.not.include(existingStoryboardName)
|
||
|
|
||
|
existingStoryboardName = storyboards[0]
|
||
|
}
|
||
|
|
||
|
for (const server of servers) {
|
||
|
for (const uuid of [ uuids[0], uuids[3] ]) {
|
||
|
const { storyboards } = await server.storyboard.list({ id: uuid })
|
||
|
expect(storyboards).to.have.lengthOf(1)
|
||
|
|
||
|
await makeGetRequest({ url: server.url, path: storyboards[0].storyboardPath, expectedStatus: HttpStatusCode.OK_200 })
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
it('Should create missing storyboards', async function () {
|
||
|
this.timeout(120000)
|
||
|
|
||
|
const command = `npm run create-generate-storyboard-job -- -a`
|
||
|
await servers[0].cli.execWithEnv(command)
|
||
|
|
||
|
await waitJobs(servers)
|
||
|
|
||
|
{
|
||
|
const storyboards = await listStoryboardFiles(servers[0])
|
||
|
expect(storyboards).to.have.lengthOf(4)
|
||
|
expect(storyboards).to.include(existingStoryboardName)
|
||
|
}
|
||
|
|
||
|
for (const server of servers) {
|
||
|
for (const uuid of uuids) {
|
||
|
const { storyboards } = await server.storyboard.list({ id: uuid })
|
||
|
expect(storyboards).to.have.lengthOf(1)
|
||
|
|
||
|
await makeGetRequest({ url: server.url, path: storyboards[0].storyboardPath, expectedStatus: HttpStatusCode.OK_200 })
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
after(async function () {
|
||
|
await sql.cleanup()
|
||
|
|
||
|
await cleanupTests(servers)
|
||
|
})
|
||
|
})
|