X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fcheck-params%2Fuser-notifications.ts;h=93355e8b3782cba6fac9e58269e075425b5088ed;hb=1808a1f8e4b7b102823492a2007a46929aebf189;hp=3ae36ddb325434b87a6ad9edfe684353bca62ed1;hpb=cef534ed53e4518fe0acf581bfe880788d42fc36;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/check-params/user-notifications.ts b/server/tests/api/check-params/user-notifications.ts index 3ae36ddb3..93355e8b3 100644 --- a/server/tests/api/check-params/user-notifications.ts +++ b/server/tests/api/check-params/user-notifications.ts @@ -1,38 +1,29 @@ -/* tslint:disable:no-unused-expression */ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ import 'mocha' -import * as io from 'socket.io-client' - +import { io } from 'socket.io-client' +import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination } from '@server/tests/shared' +import { wait } from '@shared/core-utils' +import { HttpStatusCode, UserNotificationSetting, UserNotificationSettingValue } from '@shared/models' import { - flushTests, - immutableAssign, - killallServers, + cleanupTests, + createSingleServer, makeGetRequest, makePostBodyRequest, makePutBodyRequest, - runServer, - ServerInfo, - setAccessTokensToServers, - wait -} from '../../../../shared/utils' -import { - checkBadCountPagination, - checkBadSortPagination, - checkBadStartPagination -} from '../../../../shared/utils/requests/check-api-params' -import { UserNotificationSetting, UserNotificationSettingValue } from '../../../../shared/models/users' + PeerTubeServer, + setAccessTokensToServers +} from '@shared/server-commands' describe('Test user notifications API validators', function () { - let server: ServerInfo + let server: PeerTubeServer // --------------------------------------------------------------- before(async function () { this.timeout(30000) - await flushTests() - - server = await runServer(1) + server = await createSingleServer(1) await setAccessTokensToServers([ server ]) }) @@ -52,11 +43,23 @@ describe('Test user notifications API validators', function () { await checkBadSortPagination(server.url, path, server.accessToken) }) + it('Should fail with an incorrect unread parameter', async function () { + await makeGetRequest({ + url: server.url, + path, + query: { + unread: 'toto' + }, + token: server.accessToken, + expectedStatus: HttpStatusCode.OK_200 + }) + }) + it('Should fail with a non authenticated user', async function () { await makeGetRequest({ url: server.url, path, - statusCodeExpected: 401 + expectedStatus: HttpStatusCode.UNAUTHORIZED_401 }) }) @@ -65,7 +68,7 @@ describe('Test user notifications API validators', function () { url: server.url, path, token: server.accessToken, - statusCodeExpected: 200 + expectedStatus: HttpStatusCode.OK_200 }) }) }) @@ -81,7 +84,17 @@ describe('Test user notifications API validators', function () { ids: [ 'hello' ] }, token: server.accessToken, - statusCodeExpected: 400 + expectedStatus: HttpStatusCode.BAD_REQUEST_400 + }) + + await makePostBodyRequest({ + url: server.url, + path, + fields: { + ids: [ ] + }, + token: server.accessToken, + expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) await makePostBodyRequest({ @@ -91,7 +104,7 @@ describe('Test user notifications API validators', function () { ids: 5 }, token: server.accessToken, - statusCodeExpected: 400 + expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) }) @@ -102,7 +115,7 @@ describe('Test user notifications API validators', function () { fields: { ids: [ 5 ] }, - statusCodeExpected: 401 + expectedStatus: HttpStatusCode.UNAUTHORIZED_401 }) }) @@ -114,7 +127,28 @@ describe('Test user notifications API validators', function () { ids: [ 5 ] }, token: server.accessToken, - statusCodeExpected: 204 + expectedStatus: HttpStatusCode.NO_CONTENT_204 + }) + }) + }) + + describe('When marking as read my notifications', function () { + const path = '/api/v1/users/me/notifications/read-all' + + it('Should fail with a non authenticated user', async function () { + await makePostBodyRequest({ + url: server.url, + path, + expectedStatus: HttpStatusCode.UNAUTHORIZED_401 + }) + }) + + it('Should succeed with the correct parameters', async function () { + await makePostBodyRequest({ + url: server.url, + path, + token: server.accessToken, + expectedStatus: HttpStatusCode.NO_CONTENT_204 }) }) }) @@ -122,10 +156,23 @@ describe('Test user notifications API validators', function () { describe('When updating my notification settings', function () { const path = '/api/v1/users/me/notification-settings' const correctFields: UserNotificationSetting = { - newVideoFromSubscription: UserNotificationSettingValue.WEB_NOTIFICATION, - newCommentOnMyVideo: UserNotificationSettingValue.WEB_NOTIFICATION, - videoAbuseAsModerator: UserNotificationSettingValue.WEB_NOTIFICATION, - blacklistOnMyVideo: UserNotificationSettingValue.WEB_NOTIFICATION + newVideoFromSubscription: UserNotificationSettingValue.WEB, + newCommentOnMyVideo: UserNotificationSettingValue.WEB, + abuseAsModerator: UserNotificationSettingValue.WEB, + videoAutoBlacklistAsModerator: UserNotificationSettingValue.WEB, + blacklistOnMyVideo: UserNotificationSettingValue.WEB, + myVideoImportFinished: UserNotificationSettingValue.WEB, + myVideoPublished: UserNotificationSettingValue.WEB, + commentMention: UserNotificationSettingValue.WEB, + newFollow: UserNotificationSettingValue.WEB, + newUserRegistration: UserNotificationSettingValue.WEB, + newInstanceFollower: UserNotificationSettingValue.WEB, + autoInstanceFollowing: UserNotificationSettingValue.WEB, + abuseNewMessage: UserNotificationSettingValue.WEB, + abuseStateChange: UserNotificationSettingValue.WEB, + newPeerTubeVersion: UserNotificationSettingValue.WEB, + myVideoEditionFinished: UserNotificationSettingValue.WEB, + newPluginVersion: UserNotificationSettingValue.WEB } it('Should fail with missing fields', async function () { @@ -133,33 +180,33 @@ describe('Test user notifications API validators', function () { url: server.url, path, token: server.accessToken, - fields: { newVideoFromSubscription: UserNotificationSettingValue.WEB_NOTIFICATION }, - statusCodeExpected: 400 + fields: { newVideoFromSubscription: UserNotificationSettingValue.WEB }, + expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) }) it('Should fail with incorrect field values', async function () { { - const fields = immutableAssign(correctFields, { newCommentOnMyVideo: 15 }) + const fields = { ...correctFields, newCommentOnMyVideo: 15 } await makePutBodyRequest({ url: server.url, path, token: server.accessToken, fields, - statusCodeExpected: 400 + expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) } { - const fields = immutableAssign(correctFields, { newCommentOnMyVideo: 'toto' }) + const fields = { ...correctFields, newCommentOnMyVideo: 'toto' } await makePutBodyRequest({ url: server.url, path, fields, token: server.accessToken, - statusCodeExpected: 400 + expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) } }) @@ -169,7 +216,7 @@ describe('Test user notifications API validators', function () { url: server.url, path, fields: correctFields, - statusCodeExpected: 401 + expectedStatus: HttpStatusCode.UNAUTHORIZED_401 }) }) @@ -179,17 +226,17 @@ describe('Test user notifications API validators', function () { path, token: server.accessToken, fields: correctFields, - statusCodeExpected: 204 + expectedStatus: HttpStatusCode.NO_CONTENT_204 }) }) }) describe('When connecting to my notification socket', function () { + it('Should fail with no token', function (next) { - const socket = io('http://localhost:9001/user-notifications', { reconnection: false }) + const socket = io(`http://localhost:${server.port}/user-notifications`, { reconnection: false }) - socket.on('error', () => { - socket.removeListener('error', this) + socket.once('connect_error', function () { socket.disconnect() next() }) @@ -201,13 +248,12 @@ describe('Test user notifications API validators', function () { }) it('Should fail with an invalid token', function (next) { - const socket = io('http://localhost:9001/user-notifications', { + const socket = io(`http://localhost:${server.port}/user-notifications`, { query: { accessToken: 'bad_access_token' }, reconnection: false }) - socket.on('error', () => { - socket.removeListener('error', this) + socket.once('connect_error', function () { socket.disconnect() next() }) @@ -219,17 +265,18 @@ describe('Test user notifications API validators', function () { }) it('Should success with the correct token', function (next) { - const socket = io('http://localhost:9001/user-notifications', { + const socket = io(`http://localhost:${server.port}/user-notifications`, { query: { accessToken: server.accessToken }, reconnection: false }) - const errorListener = socket.on('error', err => { + function errorListener (err) { next(new Error('Error in connection: ' + err)) - }) + } + + socket.on('connect_error', errorListener) - socket.on('connect', async () => { - socket.removeListener('error', errorListener) + socket.once('connect', async () => { socket.disconnect() await wait(500) @@ -239,11 +286,6 @@ describe('Test user notifications API validators', function () { }) after(async function () { - killallServers([ server ]) - - // Keep the logs if the test failed - if (this['ok']) { - await flushTests() - } + await cleanupTests([ server ]) }) })