diff --git a/server/tests/api/live/live-constraints.ts b/server/tests/api/live/live-constraints.ts index 5569e6066..cc635de33 100644 --- a/server/tests/api/live/live-constraints.ts +++ b/server/tests/api/live/live-constraints.ts @@ -2,15 +2,15 @@ import 'mocha' import * as chai from 'chai' -import { User, VideoDetails, VideoPrivacy } from '@shared/models' +import { VideoDetails, VideoPrivacy } from '@shared/models' import { checkLiveCleanup, cleanupTests, createLive, - createUser, doubleFollow, flushAndRunMultipleServers, - getMyUserInformation, + generateUser, + getCustomConfigResolutions, getVideo, runAndTestFfmpegStreamError, ServerInfo, @@ -18,7 +18,6 @@ import { setDefaultVideoChannel, updateCustomSubConfig, updateUser, - userLogin, wait, waitJobs, waitUntilLivePublished @@ -62,6 +61,16 @@ describe('Test live constraints', function () { } } + function updateQuota (options: { total: number, daily: number }) { + return updateUser({ + url: servers[0].url, + accessToken: servers[0].accessToken, + userId, + videoQuota: options.total, + videoQuotaDaily: options.daily + }) + } + before(async function () { this.timeout(120000) @@ -82,27 +91,12 @@ describe('Test live constraints', function () { }) { - const user = { username: 'user1', password: 'superpassword' } - const res = await createUser({ - url: servers[0].url, - accessToken: servers[0].accessToken, - username: user.username, - password: user.password - }) - userId = res.body.user.id + const res = await generateUser(servers[0], 'user1') + userId = res.userId + userChannelId = res.userChannelId + userAccessToken = res.token - userAccessToken = await userLogin(servers[0], user) - - const resMe = await getMyUserInformation(servers[0].url, userAccessToken) - userChannelId = (resMe.body as User).videoChannels[0].id - - await updateUser({ - url: servers[0].url, - userId, - accessToken: servers[0].accessToken, - videoQuota: 1, - videoQuotaDaily: -1 - }) + await updateQuota({ total: 1, daily: -1 }) } // Server 1 and server 2 follow each other @@ -137,13 +131,7 @@ describe('Test live constraints', function () { // Wait for user quota memoize cache invalidation await wait(5000) - await updateUser({ - url: servers[0].url, - userId, - accessToken: servers[0].accessToken, - videoQuota: -1, - videoQuotaDaily: 1 - }) + await updateQuota({ total: -1, daily: 1 }) const userVideoLiveoId = await createLiveWrapper(true) await runAndTestFfmpegStreamError(servers[0].url, userAccessToken, userVideoLiveoId, true) @@ -160,13 +148,7 @@ describe('Test live constraints', function () { // Wait for user quota memoize cache invalidation await wait(5000) - await updateUser({ - url: servers[0].url, - userId, - accessToken: servers[0].accessToken, - videoQuota: 10 * 1000 * 1000, - videoQuotaDaily: -1 - }) + await updateQuota({ total: 10 * 1000 * 1000, daily: -1 }) const userVideoLiveoId = await createLiveWrapper(true) await runAndTestFfmpegStreamError(servers[0].url, userAccessToken, userVideoLiveoId, false) @@ -182,15 +164,7 @@ describe('Test live constraints', function () { maxDuration: 1, transcoding: { enabled: true, - resolutions: { - '240p': true, - '360p': true, - '480p': true, - '720p': true, - '1080p': true, - '1440p': true, - '2160p': true - } + resolutions: getCustomConfigResolutions(true) } } }) diff --git a/server/tests/api/live/live-permanent.ts b/server/tests/api/live/live-permanent.ts index a5bda009f..d52e8c7e4 100644 --- a/server/tests/api/live/live-permanent.ts +++ b/server/tests/api/live/live-permanent.ts @@ -8,6 +8,7 @@ import { createLive, doubleFollow, flushAndRunMultipleServers, + getCustomConfigResolutions, getLive, getPlaylistsCount, getVideo, @@ -69,15 +70,7 @@ describe('Permenant live', function () { maxDuration: -1, transcoding: { enabled: true, - resolutions: { - '240p': true, - '360p': true, - '480p': true, - '720p': true, - '1080p': true, - '1440p': true, - '2160p': true - } + resolutions: getCustomConfigResolutions(true) } } }) @@ -159,15 +152,7 @@ describe('Permenant live', function () { maxDuration: -1, transcoding: { enabled: true, - resolutions: { - '240p': false, - '360p': false, - '480p': false, - '720p': false, - '1080p': false, - '1440p': false, - '2160p': false - } + resolutions: getCustomConfigResolutions(false) } } }) diff --git a/server/tests/api/live/live-save-replay.ts b/server/tests/api/live/live-save-replay.ts index 61c8e74dd..3d4736c8f 100644 --- a/server/tests/api/live/live-save-replay.ts +++ b/server/tests/api/live/live-save-replay.ts @@ -12,6 +12,7 @@ import { createLive, doubleFollow, flushAndRunMultipleServers, + getCustomConfigResolutions, getVideo, getVideosList, removeVideo, @@ -108,15 +109,7 @@ describe('Save replay setting', function () { maxDuration: -1, transcoding: { enabled: false, - resolutions: { - '240p': true, - '360p': true, - '480p': true, - '720p': true, - '1080p': true, - '1440p': true, - '2160p': true - } + resolutions: getCustomConfigResolutions(true) } } }) diff --git a/shared/extra-utils/server/config.ts b/shared/extra-utils/server/config.ts index 026a5e61c..b70110852 100644 --- a/shared/extra-utils/server/config.ts +++ b/shared/extra-utils/server/config.ts @@ -223,6 +223,18 @@ function updateCustomSubConfig (url: string, token: string, newConfig: DeepParti return updateCustomConfig(url, token, updateParams) } +function getCustomConfigResolutions (enabled: boolean) { + return { + '240p': enabled, + '360p': enabled, + '480p': enabled, + '720p': enabled, + '1080p': enabled, + '1440p': enabled, + '2160p': enabled + } +} + function deleteCustomConfig (url: string, token: string, statusCodeExpected = HttpStatusCode.OK_200) { const path = '/api/v1/config/custom' @@ -242,5 +254,6 @@ export { updateCustomConfig, getAbout, deleteCustomConfig, - updateCustomSubConfig + updateCustomSubConfig, + getCustomConfigResolutions } diff --git a/shared/extra-utils/users/users.ts b/shared/extra-utils/users/users.ts index 6040dd9c0..0f15962ad 100644 --- a/shared/extra-utils/users/users.ts +++ b/shared/extra-utils/users/users.ts @@ -1,5 +1,6 @@ import { omit } from 'lodash' import * as request from 'supertest' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' import { UserUpdateMe } from '../../models/users' import { UserAdminFlag } from '../../models/users/user-flag.model' import { UserRegister } from '../../models/users/user-register.model' @@ -7,9 +8,8 @@ import { UserRole } from '../../models/users/user-role' import { makeGetRequest, makePostBodyRequest, makePutBodyRequest, updateImageRequest } from '../requests/requests' import { ServerInfo } from '../server/servers' import { userLogin } from './login' -import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' -type CreateUserArgs = { +function createUser (parameters: { url: string accessToken: string username: string @@ -19,8 +19,7 @@ type CreateUserArgs = { role?: UserRole adminFlags?: UserAdminFlag specialStatus?: number -} -function createUser (parameters: CreateUserArgs) { +}) { const { url, accessToken, @@ -52,6 +51,21 @@ function createUser (parameters: CreateUserArgs) { .expect(specialStatus) } +async function generateUser (server: ServerInfo, username: string) { + const password = 'my super password' + const resCreate = await createUser({ url: server.url, accessToken: server.accessToken, username: username, password: password }) + + const token = await userLogin(server, { username, password }) + + const resMe = await getMyUserInformation(server.url, token) + + return { + token, + userId: resCreate.body.user.id, + userChannelId: resMe.body.videoChannels[0].id + } +} + async function generateUserAccessToken (server: ServerInfo, username: string) { const password = 'my super password' await createUser({ url: server.url, accessToken: server.accessToken, username: username, password: password }) @@ -393,6 +407,7 @@ export { resetPassword, renewUserScopedTokens, updateMyAvatar, + generateUser, askSendVerifyEmail, generateUserAccessToken, verifyEmail,