From c2bd7a6fcff652b149b24a642314c88e56a07f48 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 12 Mar 2021 17:04:49 +0100 Subject: Add regenrate thumbnails scripts --- server/tests/cli/index.ts | 1 + server/tests/cli/regenerate-thumbnails.ts | 110 ++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 server/tests/cli/regenerate-thumbnails.ts (limited to 'server/tests') diff --git a/server/tests/cli/index.ts b/server/tests/cli/index.ts index 242589010..7e6eebd17 100644 --- a/server/tests/cli/index.ts +++ b/server/tests/cli/index.ts @@ -6,5 +6,6 @@ import './peertube' import './plugins' import './print-transcode-command' import './prune-storage' +import './regenerate-thumbnails' import './reset-password' import './update-host' diff --git a/server/tests/cli/regenerate-thumbnails.ts b/server/tests/cli/regenerate-thumbnails.ts new file mode 100644 index 000000000..56005518a --- /dev/null +++ b/server/tests/cli/regenerate-thumbnails.ts @@ -0,0 +1,110 @@ +import 'mocha' +import { expect } from 'chai' +import { writeFile } from 'fs-extra' +import { basename, join } from 'path' +import { Video } from '@shared/models' +import { + buildServerDirectory, + cleanupTests, + doubleFollow, + execCLI, + flushAndRunMultipleServers, + getEnvCli, + getVideo, + makeRawRequest, + ServerInfo, + setAccessTokensToServers, + uploadVideoAndGetId, + waitJobs +} from '../../../shared/extra-utils' +import { HttpStatusCode } from '@shared/core-utils' + +describe('Test regenerate thumbnails script', function () { + let servers: ServerInfo[] + + let video1: Video + let video2: Video + let remoteVideo: Video + + let thumbnail1Path: string + let thumbnailRemotePath: string + + before(async function () { + this.timeout(60000) + + servers = await flushAndRunMultipleServers(2) + await setAccessTokensToServers(servers) + + await doubleFollow(servers[0], servers[1]) + + { + const videoUUID1 = (await uploadVideoAndGetId({ server: servers[0], videoName: 'video 1' })).uuid + video1 = await (getVideo(servers[0].url, videoUUID1).then(res => res.body)) + + thumbnail1Path = join(buildServerDirectory(servers[0], 'thumbnails'), basename(video1.thumbnailPath)) + + const videoUUID2 = (await uploadVideoAndGetId({ server: servers[0], videoName: 'video 2' })).uuid + video2 = await (getVideo(servers[0].url, videoUUID2).then(res => res.body)) + } + + { + const videoUUID = (await uploadVideoAndGetId({ server: servers[1], videoName: 'video 3' })).uuid + await waitJobs(servers) + + remoteVideo = await (getVideo(servers[0].url, videoUUID).then(res => res.body)) + + thumbnailRemotePath = join(buildServerDirectory(servers[0], 'thumbnails'), basename(remoteVideo.thumbnailPath)) + } + + await writeFile(thumbnail1Path, '') + await writeFile(thumbnailRemotePath, '') + }) + + it('Should have empty thumbnails', async function () { + { + const res = await makeRawRequest(join(servers[0].url, video1.thumbnailPath), HttpStatusCode.OK_200) + expect(res.body).to.have.lengthOf(0) + } + + { + const res = await makeRawRequest(join(servers[0].url, video2.thumbnailPath), HttpStatusCode.OK_200) + expect(res.body).to.not.have.lengthOf(0) + } + + { + const res = await makeRawRequest(join(servers[0].url, remoteVideo.thumbnailPath), HttpStatusCode.OK_200) + expect(res.body).to.have.lengthOf(0) + } + }) + + it('Should regenerate thumbnails from the CLI', async function () { + this.timeout(15000) + + const env = getEnvCli(servers[0]) + await execCLI(`${env} npm run regenerate-thumbnails`) + }) + + it('Should have regenerated thumbbnails', async function () { + { + const res1 = await makeRawRequest(join(servers[0].url, video1.thumbnailPath), HttpStatusCode.OK_200) + expect(res1.body).to.not.have.lengthOf(0) + + const res2 = await makeRawRequest(join(servers[0].url, video1.previewPath), HttpStatusCode.OK_200) + expect(res2.body).to.not.have.lengthOf(0) + } + + { + const res = await makeRawRequest(join(servers[0].url, video2.thumbnailPath), HttpStatusCode.OK_200) + expect(res.body).to.not.have.lengthOf(0) + } + + { + const res = await makeRawRequest(join(servers[0].url, remoteVideo.thumbnailPath), HttpStatusCode.OK_200) + expect(res.body).to.have.lengthOf(0) + } + }) + + after(async function () { + await cleanupTests(servers) + }) +}) -- cgit v1.2.3