X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fvideos%2Fresumable-upload.ts;h=b6d70ed44b2ef85d9b3936d914f705baf0782788;hb=0567049a9819d67070aa6d548a75a7e632a4aaa4;hp=1ba7cdbcc4bc775a0a5a1cb6a05b2dcd989d8d41;hpb=020d3d3d79338148873cfd78ba59856f63260f2f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/videos/resumable-upload.ts b/server/tests/api/videos/resumable-upload.ts index 1ba7cdbcc..b6d70ed44 100644 --- a/server/tests/api/videos/resumable-upload.ts +++ b/server/tests/api/videos/resumable-upload.ts @@ -4,15 +4,10 @@ import 'mocha' import * as chai from 'chai' import { pathExists, readdir, stat } from 'fs-extra' import { join } from 'path' -import { - buildAbsoluteFixturePath, - cleanupTests, - createSingleServer, - PeerTubeServer, - setAccessTokensToServers, - setDefaultVideoChannel -} from '@shared/extra-utils' +import { buildAbsoluteFixturePath } from '@shared/core-utils' +import { sha1 } from '@shared/extra-utils' import { HttpStatusCode, VideoPrivacy } from '@shared/models' +import { cleanupTests, createSingleServer, PeerTubeServer, setAccessTokensToServers, setDefaultVideoChannel } from '@shared/server-commands' const expect = chai.expect @@ -65,8 +60,9 @@ describe('Test resumable upload', function () { contentLength?: number contentRange?: string contentRangeBuilder?: (start: number, chunk: any) => string + digestBuilder?: (chunk: any) => string }) { - const { token, pathUploadId, expectedStatus, contentLength, contentRangeBuilder } = options + const { token, pathUploadId, expectedStatus, contentLength, contentRangeBuilder, digestBuilder } = options const size = await buildSize(defaultFixture, options.size) const absoluteFilePath = buildAbsoluteFixturePath(defaultFixture) @@ -78,6 +74,7 @@ describe('Test resumable upload', function () { size, contentLength, contentRangeBuilder, + digestBuilder, expectedStatus }) } @@ -128,13 +125,14 @@ describe('Test resumable upload', function () { describe('Directory cleaning', function () { - it('Should correctly delete files after an upload', async function () { - const uploadId = await prepareUpload() - await sendChunks({ pathUploadId: uploadId }) - await server.videos.endResumableUpload({ pathUploadId: uploadId }) + // FIXME: https://github.com/kukhariev/node-uploadx/pull/524/files#r852989382 + // it('Should correctly delete files after an upload', async function () { + // const uploadId = await prepareUpload() + // await sendChunks({ pathUploadId: uploadId }) + // await server.videos.endResumableUpload({ pathUploadId: uploadId }) - expect(await countResumableUploads()).to.equal(0) - }) + // expect(await countResumableUploads()).to.equal(0) + // }) it('Should not delete files after an unfinished upload', async function () { await prepareUpload() @@ -258,6 +256,29 @@ describe('Test resumable upload', function () { const result2 = await sendChunks({ pathUploadId: uploadId1 }) expect(result2.headers['x-resumable-upload-cached']).to.not.exist }) + + it('Should refuse an invalid digest', async function () { + const uploadId = await prepareUpload({ token: server.accessToken }) + + await sendChunks({ + pathUploadId: uploadId, + token: server.accessToken, + digestBuilder: () => 'sha=' + 'a'.repeat(40), + expectedStatus: 460 + }) + }) + + it('Should accept an appropriate digest', async function () { + const uploadId = await prepareUpload({ token: server.accessToken }) + + await sendChunks({ + pathUploadId: uploadId, + token: server.accessToken, + digestBuilder: (chunk: Buffer) => { + return 'sha1=' + sha1(chunk, 'base64') + } + }) + }) }) after(async function () {