X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fserver%2Ftracker.ts;h=712bb485f15dc8b242ab60e5b646122e0f5930cd;hb=bf54587a3e2ad9c2c186828f2a5682b91ee2cc00;hp=9d3a274d44411a410aab0a0890e829269c05706e;hpb=7024e9120b381b5b3201212f5a18f5cdc14e15ff;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/server/tracker.ts b/server/tests/api/server/tracker.ts index 9d3a274d4..712bb485f 100644 --- a/server/tests/api/server/tracker.ts +++ b/server/tests/api/server/tracker.ts @@ -1,36 +1,23 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await,@typescript-eslint/no-floating-promises */ -import * as magnetUtil from 'magnet-uri' import 'mocha' -import { - cleanupTests, - flushAndRunServer, - getVideo, - killallServers, - reRunServer, - ServerInfo, - uploadVideo -} from '../../../../shared/extra-utils' -import { setAccessTokensToServers } from '../../../../shared/extra-utils/index' -import { VideoDetails } from '../../../../shared/models/videos' -import * as WebTorrent from 'webtorrent' +import magnetUtil from 'magnet-uri' +import WebTorrent from 'webtorrent' +import { cleanupTests, createSingleServer, killallServers, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands' describe('Test tracker', function () { - let server: ServerInfo + let server: PeerTubeServer let badMagnet: string let goodMagnet: string before(async function () { this.timeout(60000) - server = await flushAndRunServer(1) + server = await createSingleServer(1) await setAccessTokensToServers([ server ]) { - const res = await uploadVideo(server.url, server.accessToken, {}) - const videoUUID = res.body.video.uuid - - const resGet = await getVideo(server.url, videoUUID) - const video: VideoDetails = resGet.body + const { uuid } = await server.videos.upload() + const video = await server.videos.get({ id: uuid }) goodMagnet = video.files[0].magnetUri const parsed = magnetUtil.decode(goodMagnet) @@ -40,21 +27,6 @@ describe('Test tracker', function () { } }) - it('Should return an error when adding an incorrect infohash', function (done) { - this.timeout(10000) - const webtorrent = new WebTorrent() - - const torrent = webtorrent.add(badMagnet) - - torrent.on('error', done) - torrent.on('warning', warn => { - const message = typeof warn === 'string' ? warn : warn.message - if (message.indexOf('Unknown infoHash ') !== -1) return done() - }) - - torrent.on('done', () => done(new Error('No error on infohash'))) - }) - it('Should succeed with the correct infohash', function (done) { this.timeout(10000) const webtorrent = new WebTorrent() @@ -64,7 +36,7 @@ describe('Test tracker', function () { torrent.on('error', done) torrent.on('warning', warn => { const message = typeof warn === 'string' ? warn : warn.message - if (message.indexOf('Unknown infoHash ') !== -1) return done(new Error('Error on infohash')) + if (message.includes('Unknown infoHash ')) return done(new Error('Error on infohash')) }) torrent.on('done', done) @@ -73,8 +45,10 @@ describe('Test tracker', function () { it('Should disable the tracker', function (done) { this.timeout(20000) + const errCb = () => done(new Error('Tracker is enabled')) + killallServers([ server ]) - reRunServer(server, { tracker: { enabled: false } }) + .then(() => server.run({ tracker: { enabled: false } })) .then(() => { const webtorrent = new WebTorrent() @@ -83,13 +57,49 @@ describe('Test tracker', function () { torrent.on('error', done) torrent.on('warning', warn => { const message = typeof warn === 'string' ? warn : warn.message - if (message.indexOf('disabled ') !== -1) return done() + if (message.includes('disabled ')) { + torrent.off('done', errCb) + + return done() + } }) - torrent.on('done', () => done(new Error('Tracker is enabled'))) + torrent.on('done', errCb) }) }) + it('Should return an error when adding an incorrect infohash', function (done) { + this.timeout(20000) + + killallServers([ server ]) + .then(() => server.run()) + .then(() => { + const webtorrent = new WebTorrent() + + const torrent = webtorrent.add(badMagnet) + + torrent.on('error', done) + torrent.on('warning', warn => { + const message = typeof warn === 'string' ? warn : warn.message + if (message.includes('Unknown infoHash ')) return done() + }) + + torrent.on('done', () => done(new Error('No error on infohash'))) + }) + }) + + it('Should block the IP after the failed infohash', function (done) { + const webtorrent = new WebTorrent() + + const torrent = webtorrent.add(goodMagnet) + + torrent.on('error', done) + torrent.on('warning', warn => { + const message = typeof warn === 'string' ? warn : warn.message + if (message.includes('Unsupported tracker protocol')) return done() + }) + }) + after(async function () { await cleanupTests([ server ]) })