From 03371ad9d049bab79445a1b35da44cb1272f6c28 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 7 Jun 2019 14:34:11 +0200 Subject: Fix video import if autoblacklist is enabled --- server/controllers/api/videos/import.ts | 16 +++++---- server/controllers/static.ts | 2 +- server/tests/api/videos/video-blacklist.ts | 58 ++++++++++++++++++++++++++---- 3 files changed, 63 insertions(+), 13 deletions(-) (limited to 'server') diff --git a/server/controllers/api/videos/import.ts b/server/controllers/api/videos/import.ts index bfb690906..dcba0e08f 100644 --- a/server/controllers/api/videos/import.ts +++ b/server/controllers/api/videos/import.ts @@ -26,6 +26,7 @@ import { sequelizeTypescript } from '../../../initializers/database' import { createVideoMiniatureFromExisting } from '../../../lib/thumbnail' import { ThumbnailType } from '../../../../shared/models/videos/thumbnail.type' import { ThumbnailModel } from '../../../models/video/thumbnail' +import { UserModel } from '../../../models/account/user' const auditLogger = auditLoggerFactory('video-imports') const videoImportsRouter = express.Router() @@ -107,7 +108,8 @@ async function addTorrentImport (req: express.Request, res: express.Response, to previewModel, videoChannel: res.locals.videoChannel, tags, - videoImportAttributes + videoImportAttributes, + user }) // Create job to import the video @@ -151,12 +153,13 @@ async function addYoutubeDLImport (req: express.Request, res: express.Response) userId: user.id } const videoImport = await insertIntoDB({ - video: video, + video, thumbnailModel, previewModel, videoChannel: res.locals.videoChannel, tags, - videoImportAttributes + videoImportAttributes, + user }) // Create job to import the video @@ -227,9 +230,10 @@ function insertIntoDB (parameters: { previewModel: ThumbnailModel, videoChannel: VideoChannelModel, tags: string[], - videoImportAttributes: Partial + videoImportAttributes: Partial, + user: UserModel }): Bluebird { - let { video, thumbnailModel, previewModel, videoChannel, tags, videoImportAttributes } = parameters + const { video, thumbnailModel, previewModel, videoChannel, tags, videoImportAttributes, user } = parameters return sequelizeTypescript.transaction(async t => { const sequelizeOptions = { transaction: t } @@ -241,7 +245,7 @@ function insertIntoDB (parameters: { if (thumbnailModel) await videoCreated.addAndSaveThumbnail(thumbnailModel, t) if (previewModel) await videoCreated.addAndSaveThumbnail(previewModel, t) - await autoBlacklistVideoIfNeeded(video, videoChannel.Account.User, t) + await autoBlacklistVideoIfNeeded(video, user, t) // Set tags to the video if (tags) { diff --git a/server/controllers/static.ts b/server/controllers/static.ts index 73951be2d..fb2e7742a 100644 --- a/server/controllers/static.ts +++ b/server/controllers/static.ts @@ -158,7 +158,7 @@ staticRouter.use('/.well-known/change-password', staticRouter.use('/.well-known/host-meta', (_, res: express.Response) => { - res.type('application/xml'); + res.type('application/xml') const xml = '\n' + '\n' + diff --git a/server/tests/api/videos/video-blacklist.ts b/server/tests/api/videos/video-blacklist.ts index e907bbdc0..8760a4787 100644 --- a/server/tests/api/videos/video-blacklist.ts +++ b/server/tests/api/videos/video-blacklist.ts @@ -4,10 +4,11 @@ import * as chai from 'chai' import { orderBy } from 'lodash' import 'mocha' import { - addVideoToBlacklist, cleanupTests, + addVideoToBlacklist, + cleanupTests, createUser, flushAndRunMultipleServers, - getBlacklistedVideosList, + getBlacklistedVideosList, getMyUserInformation, getMyVideos, getVideosList, killallServers, @@ -16,6 +17,7 @@ import { searchVideo, ServerInfo, setAccessTokensToServers, + setDefaultVideoChannel, updateVideo, updateVideoBlacklist, uploadVideo, @@ -25,7 +27,8 @@ import { doubleFollow } from '../../../../shared/extra-utils/server/follows' import { waitJobs } from '../../../../shared/extra-utils/server/jobs' import { VideoBlacklist, VideoBlacklistType } from '../../../../shared/models/videos' import { UserAdminFlag } from '../../../../shared/models/users/user-flag.model' -import { UserRole } from '../../../../shared/models/users' +import { User, UserRole, UserUpdateMe } from '../../../../shared/models/users' +import { getMagnetURI, getYoutubeVideoUrl, importVideo } from '../../../../shared/extra-utils/videos/video-imports' const expect = chai.expect @@ -351,6 +354,7 @@ describe('Test video blacklist', function () { describe('When auto blacklist videos', function () { let userWithoutFlag: string let userWithFlag: string + let channelOfUserWithoutFlag: number before(async function () { this.timeout(20000) @@ -380,6 +384,10 @@ describe('Test video blacklist', function () { }) userWithoutFlag = await userLogin(servers[0], user) + + const res = await getMyUserInformation(servers[0].url, userWithoutFlag) + const body: User = res.body + channelOfUserWithoutFlag = body.videoChannels[0].id } { @@ -399,7 +407,7 @@ describe('Test video blacklist', function () { await waitJobs(servers) }) - it('Should auto blacklist a video', async function () { + it('Should auto blacklist a video on upload', async function () { await uploadVideo(servers[0].url, userWithoutFlag, { name: 'blacklisted' }) const res = await getBlacklistedVideosList({ @@ -412,7 +420,45 @@ describe('Test video blacklist', function () { expect(res.body.data[0].video.name).to.equal('blacklisted') }) - it('Should not auto blacklist a video', async function () { + it('Should auto blacklist a video on URL import', async function () { + const attributes = { + targetUrl: getYoutubeVideoUrl(), + name: 'URL import', + channelId: channelOfUserWithoutFlag + } + await importVideo(servers[ 0 ].url, userWithoutFlag, attributes) + + const res = await getBlacklistedVideosList({ + url: servers[ 0 ].url, + token: servers[ 0 ].accessToken, + sort: 'createdAt', + type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED + }) + + expect(res.body.total).to.equal(2) + expect(res.body.data[1].video.name).to.equal('URL import') + }) + + it('Should auto blacklist a video on torrent import', async function () { + const attributes = { + magnetUri: getMagnetURI(), + name: 'Torrent import', + channelId: channelOfUserWithoutFlag + } + await importVideo(servers[ 0 ].url, userWithoutFlag, attributes) + + const res = await getBlacklistedVideosList({ + url: servers[ 0 ].url, + token: servers[ 0 ].accessToken, + sort: 'createdAt', + type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED + }) + + expect(res.body.total).to.equal(3) + expect(res.body.data[2].video.name).to.equal('Torrent import') + }) + + it('Should not auto blacklist a video on upload if the user has the bypass blacklist flag', async function () { await uploadVideo(servers[0].url, userWithFlag, { name: 'not blacklisted' }) const res = await getBlacklistedVideosList({ @@ -421,7 +467,7 @@ describe('Test video blacklist', function () { type: VideoBlacklistType.AUTO_BEFORE_PUBLISHED }) - expect(res.body.total).to.equal(1) + expect(res.body.total).to.equal(3) }) }) -- cgit v1.2.3