From d23e6a1c97a6ae3ca8d340a8c9adad268a5be57e Mon Sep 17 00:00:00 2001 From: BRAINS YUM <43896676+McFlat@users.noreply.github.com> Date: Fri, 19 Oct 2018 01:54:01 -0500 Subject: [PATCH] Feature/description support fields length 1000 (#1267) * fix migrations to not use config constant values as it can introduce bugs later when they change; (fixes #1259) remove constant fields imports from migrations * add migrations to update description and support fields to 1000 (fixes #1258) * fix client/server account and video_channel description/support fields to be max len 1000 (fixes #1258); fix test Should fail with a too long description; fix test Should fail with a long description; fix test Should fail with a long description; Remove USER.SUPPORT from constants since that field no longer exists; null not false, in migrations/0280-description-support.ts; video support field 1000, oops; * rename migration 0280-description-support.ts -> 0285-description-support.ts; update video support maxlength text --- .../user-validators.service.ts | 4 +- .../video-channel-validators.service.ts | 8 +-- .../video-validators.service.ts | 4 +- server/initializers/constants.ts | 10 ++-- .../migrations/0120-video-null.ts | 3 +- .../initializers/migrations/0195-support.ts | 9 ++-- .../migrations/0245-user-blocked.ts | 3 +- .../migrations/0250-video-abuse-state.ts | 3 +- .../migrations/0255-video-blacklist-reason.ts | 3 +- .../migrations/0260-upload-quota-daily.ts | 1 - .../migrations/0285-description-support.ts | 53 +++++++++++++++++++ server/tests/api/check-params/users.ts | 2 +- .../tests/api/check-params/video-channels.ts | 8 +-- .../tests/api/check-params/video-imports.ts | 2 +- server/tests/api/check-params/videos.ts | 4 +- 15 files changed, 82 insertions(+), 35 deletions(-) create mode 100644 server/initializers/migrations/0285-description-support.ts diff --git a/client/src/app/shared/forms/form-validators/user-validators.service.ts b/client/src/app/shared/forms/form-validators/user-validators.service.ts index 1fd1cdf68..d14fa4777 100644 --- a/client/src/app/shared/forms/form-validators/user-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/user-validators.service.ts @@ -101,11 +101,11 @@ export class UserValidatorsService { this.USER_DESCRIPTION = { VALIDATORS: [ Validators.minLength(3), - Validators.maxLength(250) + Validators.maxLength(1000) ], MESSAGES: { 'minlength': this.i18n('Description must be at least 3 characters long.'), - 'maxlength': this.i18n('Description cannot be more than 250 characters long.') + 'maxlength': this.i18n('Description cannot be more than 1000 characters long.') } } diff --git a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts index 1ce3a0dca..f62ff65f7 100644 --- a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts @@ -42,22 +42,22 @@ export class VideoChannelValidatorsService { this.VIDEO_CHANNEL_DESCRIPTION = { VALIDATORS: [ Validators.minLength(3), - Validators.maxLength(500) + Validators.maxLength(1000) ], MESSAGES: { 'minlength': i18n('Description must be at least 3 characters long.'), - 'maxlength': i18n('Description cannot be more than 500 characters long.') + 'maxlength': i18n('Description cannot be more than 1000 characters long.') } } this.VIDEO_CHANNEL_SUPPORT = { VALIDATORS: [ Validators.minLength(3), - Validators.maxLength(500) + Validators.maxLength(1000) ], MESSAGES: { 'minlength': i18n('Support text must be at least 3 characters long.'), - 'maxlength': i18n('Support text cannot be more than 500 characters long.') + 'maxlength': i18n('Support text cannot be more than 1000 characters long.') } } } diff --git a/client/src/app/shared/forms/form-validators/video-validators.service.ts b/client/src/app/shared/forms/form-validators/video-validators.service.ts index 396be6f3b..81ed0666f 100644 --- a/client/src/app/shared/forms/form-validators/video-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/video-validators.service.ts @@ -79,10 +79,10 @@ export class VideoValidatorsService { } this.VIDEO_SUPPORT = { - VALIDATORS: [ Validators.minLength(3), Validators.maxLength(500) ], + VALIDATORS: [ Validators.minLength(3), Validators.maxLength(1000) ], MESSAGES: { 'minlength': this.i18n('Video support must be at least 3 characters long.'), - 'maxlength': this.i18n('Video support cannot be more than 500 characters long.') + 'maxlength': this.i18n('Video support cannot be more than 1000 characters long.') } } diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 03158e356..e8843a3ab 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -16,7 +16,7 @@ let config: IConfig = require('config') // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 280 +const LAST_MIGRATION_VERSION = 285 // --------------------------------------------------------------------------- @@ -295,7 +295,7 @@ const CONFIG = { const CONSTRAINTS_FIELDS = { USERS: { NAME: { min: 3, max: 120 }, // Length - DESCRIPTION: { min: 3, max: 250 }, // Length + DESCRIPTION: { min: 3, max: 1000 }, // Length USERNAME: { min: 3, max: 20 }, // Length PASSWORD: { min: 6, max: 255 }, // Length VIDEO_QUOTA: { min: -1 }, @@ -311,8 +311,8 @@ const CONSTRAINTS_FIELDS = { }, VIDEO_CHANNELS: { NAME: { min: 3, max: 120 }, // Length - DESCRIPTION: { min: 3, max: 500 }, // Length - SUPPORT: { min: 3, max: 500 }, // Length + DESCRIPTION: { min: 3, max: 1000 }, // Length + SUPPORT: { min: 3, max: 1000 }, // Length URL: { min: 3, max: 2000 } // Length }, VIDEO_CAPTIONS: { @@ -341,7 +341,7 @@ const CONSTRAINTS_FIELDS = { LANGUAGE: { min: 1, max: 10 }, // Length TRUNCATED_DESCRIPTION: { min: 3, max: 250 }, // Length DESCRIPTION: { min: 3, max: 10000 }, // Length - SUPPORT: { min: 3, max: 500 }, // Length + SUPPORT: { min: 3, max: 1000 }, // Length IMAGE: { EXTNAME: [ '.jpg', '.jpeg' ], FILE_SIZE: { diff --git a/server/initializers/migrations/0120-video-null.ts b/server/initializers/migrations/0120-video-null.ts index 63f3984dd..6d253f04f 100644 --- a/server/initializers/migrations/0120-video-null.ts +++ b/server/initializers/migrations/0120-video-null.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' async function up (utils: { transaction: Sequelize.Transaction, @@ -28,7 +27,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEOS.DESCRIPTION.max), + type: Sequelize.STRING(10000), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0195-support.ts b/server/initializers/migrations/0195-support.ts index 8722a5f22..3b9eabe79 100644 --- a/server/initializers/migrations/0195-support.ts +++ b/server/initializers/migrations/0195-support.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../index' async function up (utils: { transaction: Sequelize.Transaction, @@ -8,7 +7,7 @@ async function up (utils: { }): Promise { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEOS.SUPPORT.max), + type: Sequelize.STRING(500), allowNull: true, defaultValue: null } @@ -17,7 +16,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEO_CHANNELS.SUPPORT.max), + type: Sequelize.STRING(500), allowNull: true, defaultValue: null } @@ -26,7 +25,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.USERS.DESCRIPTION.max), + type: Sequelize.STRING(250), allowNull: true, defaultValue: null } @@ -35,7 +34,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEOS.DESCRIPTION.max), + type: Sequelize.STRING(10000), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0245-user-blocked.ts b/server/initializers/migrations/0245-user-blocked.ts index 5a04ecd2b..19c7d5b9c 100644 --- a/server/initializers/migrations/0245-user-blocked.ts +++ b/server/initializers/migrations/0245-user-blocked.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' async function up (utils: { transaction: Sequelize.Transaction @@ -31,7 +30,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON.max), + type: Sequelize.STRING(250), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0250-video-abuse-state.ts b/server/initializers/migrations/0250-video-abuse-state.ts index acb668ae1..50de25182 100644 --- a/server/initializers/migrations/0250-video-abuse-state.ts +++ b/server/initializers/migrations/0250-video-abuse-state.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' import { VideoAbuseState } from '../../../shared/models/videos' async function up (utils: { @@ -32,7 +31,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEO_ABUSES.MODERATION_COMMENT.max), + type: Sequelize.STRING(300), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0255-video-blacklist-reason.ts b/server/initializers/migrations/0255-video-blacklist-reason.ts index a380e620e..69d6efb9e 100644 --- a/server/initializers/migrations/0255-video-blacklist-reason.ts +++ b/server/initializers/migrations/0255-video-blacklist-reason.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' import { VideoAbuseState } from '../../../shared/models/videos' async function up (utils: { @@ -10,7 +9,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEO_BLACKLIST.REASON.max), + type: Sequelize.STRING(300), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0260-upload-quota-daily.ts b/server/initializers/migrations/0260-upload-quota-daily.ts index d25154ba6..cbbe391ef 100644 --- a/server/initializers/migrations/0260-upload-quota-daily.ts +++ b/server/initializers/migrations/0260-upload-quota-daily.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' async function up (utils: { transaction: Sequelize.Transaction diff --git a/server/initializers/migrations/0285-description-support.ts b/server/initializers/migrations/0285-description-support.ts new file mode 100644 index 000000000..85ef4ef39 --- /dev/null +++ b/server/initializers/migrations/0285-description-support.ts @@ -0,0 +1,53 @@ +import * as Sequelize from 'sequelize' + +async function up (utils: { + transaction: Sequelize.Transaction, + queryInterface: Sequelize.QueryInterface, + sequelize: Sequelize.Sequelize, + db: any +}): Promise { + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('video', 'support', data) + } + + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('videoChannel', 'support', data) + } + + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('videoChannel', 'description', data) + } + + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('account', 'description', data) + } +} + +function down (options) { + throw new Error('Not implemented.') +} + +export { + up, + down +} diff --git a/server/tests/api/check-params/users.ts b/server/tests/api/check-params/users.ts index cbfa0c137..ec46609a4 100644 --- a/server/tests/api/check-params/users.ts +++ b/server/tests/api/check-params/users.ts @@ -315,7 +315,7 @@ describe('Test users API validators', function () { it('Should fail with a too long description', async function () { const fields = { - description: 'super'.repeat(60) + description: 'super'.repeat(201) } await makePutBodyRequest({ url: server.url, path: path + 'me', token: userAccessToken, fields }) diff --git a/server/tests/api/check-params/video-channels.ts b/server/tests/api/check-params/video-channels.ts index 3a7942945..e5696224d 100644 --- a/server/tests/api/check-params/video-channels.ts +++ b/server/tests/api/check-params/video-channels.ts @@ -118,12 +118,12 @@ describe('Test video channels API validator', function () { }) it('Should fail with a long description', async function () { - const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(201) }) await makePostBodyRequest({ url: server.url, path: videoChannelPath, token: server.accessToken, fields }) }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePostBodyRequest({ url: server.url, path: videoChannelPath, token: server.accessToken, fields }) }) @@ -185,12 +185,12 @@ describe('Test video channels API validator', function () { }) it('Should fail with a long description', async function () { - const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(201) }) await makePutBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePutBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) diff --git a/server/tests/api/check-params/video-imports.ts b/server/tests/api/check-params/video-imports.ts index 44645b0e2..b51f3d2cd 100644 --- a/server/tests/api/check-params/video-imports.ts +++ b/server/tests/api/check-params/video-imports.ts @@ -140,7 +140,7 @@ describe('Test video imports API validator', function () { }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePostBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) diff --git a/server/tests/api/check-params/videos.ts b/server/tests/api/check-params/videos.ts index 904d22870..699f135c7 100644 --- a/server/tests/api/check-params/videos.ts +++ b/server/tests/api/check-params/videos.ts @@ -233,7 +233,7 @@ describe('Test videos API validator', function () { }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) const attaches = baseCorrectAttaches await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) @@ -482,7 +482,7 @@ describe('Test videos API validator', function () { }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePutBodyRequest({ url: server.url, path: path + videoId, token: server.accessToken, fields }) }) -- 2.41.0