diff options
Diffstat (limited to 'server/tests')
-rw-r--r-- | server/tests/api/check-params/abuses.ts | 4 | ||||
-rw-r--r-- | server/tests/api/live/live.ts | 2 | ||||
-rw-r--r-- | server/tests/api/moderation/abuses.ts | 4 | ||||
-rw-r--r-- | server/tests/api/notifications/user-notifications.ts | 2 | ||||
-rw-r--r-- | server/tests/api/search/search-index.ts | 8 | ||||
-rw-r--r-- | server/tests/api/server/contact-form.ts | 2 | ||||
-rw-r--r-- | server/tests/api/server/reverse-proxy.ts | 11 | ||||
-rw-r--r-- | server/tests/api/videos/video-channels.ts | 19 | ||||
-rw-r--r-- | server/tests/helpers/core-utils.ts | 65 |
9 files changed, 81 insertions, 36 deletions
diff --git a/server/tests/api/check-params/abuses.ts b/server/tests/api/check-params/abuses.ts index c4b051723..bc2cc640f 100644 --- a/server/tests/api/check-params/abuses.ts +++ b/server/tests/api/check-params/abuses.ts | |||
@@ -269,7 +269,7 @@ describe('Test abuses API validators', function () { | |||
269 | await makePostBodyRequest({ url: server.url, path, token: userToken, fields }) | 269 | await makePostBodyRequest({ url: server.url, path, token: userToken, fields }) |
270 | }) | 270 | }) |
271 | 271 | ||
272 | it('Should succeed with the corret parameters (advanced)', async function () { | 272 | it('Should succeed with the correct parameters (advanced)', async function () { |
273 | const fields: AbuseCreate = { | 273 | const fields: AbuseCreate = { |
274 | video: { | 274 | video: { |
275 | id: server.store.videoCreated.id, | 275 | id: server.store.videoCreated.id, |
@@ -333,7 +333,7 @@ describe('Test abuses API validators', function () { | |||
333 | await command.addMessage({ token: userToken, abuseId, message: 'a'.repeat(5000), expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) | 333 | await command.addMessage({ token: userToken, abuseId, message: 'a'.repeat(5000), expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) |
334 | }) | 334 | }) |
335 | 335 | ||
336 | it('Should suceed with the correct params', async function () { | 336 | it('Should succeed with the correct params', async function () { |
337 | const res = await command.addMessage({ token: userToken, abuseId, message }) | 337 | const res = await command.addMessage({ token: userToken, abuseId, message }) |
338 | messageId = res.body.abuseMessage.id | 338 | messageId = res.body.abuseMessage.id |
339 | }) | 339 | }) |
diff --git a/server/tests/api/live/live.ts b/server/tests/api/live/live.ts index 9b8fbe3e2..c497f7840 100644 --- a/server/tests/api/live/live.ts +++ b/server/tests/api/live/live.ts | |||
@@ -654,7 +654,7 @@ describe('Test live', function () { | |||
654 | }) | 654 | }) |
655 | 655 | ||
656 | it('Should save a non permanent live replay', async function () { | 656 | it('Should save a non permanent live replay', async function () { |
657 | this.timeout(120000) | 657 | this.timeout(240000) |
658 | 658 | ||
659 | await commands[0].waitUntilPublished({ videoId: liveVideoReplayId }) | 659 | await commands[0].waitUntilPublished({ videoId: liveVideoReplayId }) |
660 | 660 | ||
diff --git a/server/tests/api/moderation/abuses.ts b/server/tests/api/moderation/abuses.ts index 7bf49c7ec..568fbefcf 100644 --- a/server/tests/api/moderation/abuses.ts +++ b/server/tests/api/moderation/abuses.ts | |||
@@ -168,7 +168,7 @@ describe('Test abuses', function () { | |||
168 | expect(abuse2.reporterAccount.name).to.equal('root') | 168 | expect(abuse2.reporterAccount.name).to.equal('root') |
169 | expect(abuse2.reporterAccount.host).to.equal(servers[0].host) | 169 | expect(abuse2.reporterAccount.host).to.equal(servers[0].host) |
170 | 170 | ||
171 | expect(abuse2.video.id).to.equal(servers[1].store.videoCreated.id) | 171 | expect(abuse2.video.uuid).to.equal(servers[1].store.videoCreated.uuid) |
172 | 172 | ||
173 | expect(abuse2.comment).to.be.null | 173 | expect(abuse2.comment).to.be.null |
174 | 174 | ||
@@ -530,7 +530,7 @@ describe('Test abuses', function () { | |||
530 | it('Should keep the comment abuse when deleting the comment', async function () { | 530 | it('Should keep the comment abuse when deleting the comment', async function () { |
531 | this.timeout(10000) | 531 | this.timeout(10000) |
532 | 532 | ||
533 | const commentServer2 = await getComment(servers[0], servers[1].store.videoCreated.id) | 533 | const commentServer2 = await getComment(servers[0], servers[1].store.videoCreated.uuid) |
534 | 534 | ||
535 | await servers[0].comments.delete({ videoId: servers[1].store.videoCreated.uuid, commentId: commentServer2.id }) | 535 | await servers[0].comments.delete({ videoId: servers[1].store.videoCreated.uuid, commentId: commentServer2.id }) |
536 | 536 | ||
diff --git a/server/tests/api/notifications/user-notifications.ts b/server/tests/api/notifications/user-notifications.ts index a7cc529f8..a11289236 100644 --- a/server/tests/api/notifications/user-notifications.ts +++ b/server/tests/api/notifications/user-notifications.ts | |||
@@ -545,7 +545,7 @@ describe('Test user notifications', function () { | |||
545 | await servers[1].subscriptions.remove({ uri: 'user_1_channel@localhost:' + servers[0].port }) | 545 | await servers[1].subscriptions.remove({ uri: 'user_1_channel@localhost:' + servers[0].port }) |
546 | }) | 546 | }) |
547 | 547 | ||
548 | // PeerTube does not support accout -> account follows | 548 | // PeerTube does not support account -> account follows |
549 | // it('Should notify when a local account is following one of our channel', async function () { | 549 | // it('Should notify when a local account is following one of our channel', async function () { |
550 | // this.timeout(50000) | 550 | // this.timeout(50000) |
551 | // | 551 | // |
diff --git a/server/tests/api/search/search-index.ts b/server/tests/api/search/search-index.ts index 287abe455..53b91e1cb 100644 --- a/server/tests/api/search/search-index.ts +++ b/server/tests/api/search/search-index.ts | |||
@@ -136,14 +136,14 @@ describe('Test index search', function () { | |||
136 | expect(video.account.url).to.equal('https://framatube.org/accounts/framasoft') | 136 | expect(video.account.url).to.equal('https://framatube.org/accounts/framasoft') |
137 | // TODO: remove, deprecated in 4.2 | 137 | // TODO: remove, deprecated in 4.2 |
138 | expect(video.account.avatar).to.exist | 138 | expect(video.account.avatar).to.exist |
139 | expect(video.account.avatars.length).to.equal(1, 'Account should have one avatar image') | 139 | expect(video.account.avatars.length).to.equal(2, 'Account should have one avatar image') |
140 | 140 | ||
141 | expect(video.channel.host).to.equal('framatube.org') | 141 | expect(video.channel.host).to.equal('framatube.org') |
142 | expect(video.channel.name).to.equal('joinpeertube') | 142 | expect(video.channel.name).to.equal('joinpeertube') |
143 | expect(video.channel.url).to.equal('https://framatube.org/video-channels/joinpeertube') | 143 | expect(video.channel.url).to.equal('https://framatube.org/video-channels/joinpeertube') |
144 | // TODO: remove, deprecated in 4.2 | 144 | // TODO: remove, deprecated in 4.2 |
145 | expect(video.channel.avatar).to.exist | 145 | expect(video.channel.avatar).to.exist |
146 | expect(video.channel.avatars.length).to.equal(1, 'Channel should have one avatar image') | 146 | expect(video.channel.avatars.length).to.equal(2, 'Channel should have one avatar image') |
147 | } | 147 | } |
148 | 148 | ||
149 | const baseSearch: VideosSearchQuery = { | 149 | const baseSearch: VideosSearchQuery = { |
@@ -322,7 +322,7 @@ describe('Test index search', function () { | |||
322 | expect(videoChannel.host).to.equal('framatube.org') | 322 | expect(videoChannel.host).to.equal('framatube.org') |
323 | // TODO: remove, deprecated in 4.2 | 323 | // TODO: remove, deprecated in 4.2 |
324 | expect(videoChannel.avatar).to.exist | 324 | expect(videoChannel.avatar).to.exist |
325 | expect(videoChannel.avatars.length).to.equal(1, 'Channel should have two avatar images') | 325 | expect(videoChannel.avatars.length).to.equal(2, 'Channel should have two avatar images') |
326 | expect(videoChannel.displayName).to.exist | 326 | expect(videoChannel.displayName).to.exist |
327 | 327 | ||
328 | expect(videoChannel.ownerAccount.url).to.equal('https://framatube.org/accounts/framasoft') | 328 | expect(videoChannel.ownerAccount.url).to.equal('https://framatube.org/accounts/framasoft') |
@@ -330,7 +330,7 @@ describe('Test index search', function () { | |||
330 | expect(videoChannel.ownerAccount.host).to.equal('framatube.org') | 330 | expect(videoChannel.ownerAccount.host).to.equal('framatube.org') |
331 | // TODO: remove, deprecated in 4.2 | 331 | // TODO: remove, deprecated in 4.2 |
332 | expect(videoChannel.ownerAccount.avatar).to.exist | 332 | expect(videoChannel.ownerAccount.avatar).to.exist |
333 | expect(videoChannel.ownerAccount.avatars.length).to.equal(1, 'Account should have two avatar images') | 333 | expect(videoChannel.ownerAccount.avatars.length).to.equal(2, 'Account should have two avatar images') |
334 | } | 334 | } |
335 | 335 | ||
336 | it('Should make a simple search and not have results', async function () { | 336 | it('Should make a simple search and not have results', async function () { |
diff --git a/server/tests/api/server/contact-form.ts b/server/tests/api/server/contact-form.ts index 4f01f6fd5..d6165b293 100644 --- a/server/tests/api/server/contact-form.ts +++ b/server/tests/api/server/contact-form.ts | |||
@@ -61,7 +61,7 @@ describe('Test contact form', function () { | |||
61 | expect(email['text']).contains('my super message') | 61 | expect(email['text']).contains('my super message') |
62 | }) | 62 | }) |
63 | 63 | ||
64 | it('Should not have duplicated email adress in text message', async function () { | 64 | it('Should not have duplicated email address in text message', async function () { |
65 | const text = emails[0]['text'] as string | 65 | const text = emails[0]['text'] as string |
66 | 66 | ||
67 | const matches = text.match(/toto@example.com/g) | 67 | const matches = text.match(/toto@example.com/g) |
diff --git a/server/tests/api/server/reverse-proxy.ts b/server/tests/api/server/reverse-proxy.ts index fa2063536..0a1565faf 100644 --- a/server/tests/api/server/reverse-proxy.ts +++ b/server/tests/api/server/reverse-proxy.ts | |||
@@ -7,6 +7,7 @@ import { cleanupTests, createSingleServer, PeerTubeServer, setAccessTokensToServ | |||
7 | 7 | ||
8 | describe('Test application behind a reverse proxy', function () { | 8 | describe('Test application behind a reverse proxy', function () { |
9 | let server: PeerTubeServer | 9 | let server: PeerTubeServer |
10 | let userAccessToken: string | ||
10 | let videoId: string | 11 | let videoId: string |
11 | 12 | ||
12 | before(async function () { | 13 | before(async function () { |
@@ -34,6 +35,8 @@ describe('Test application behind a reverse proxy', function () { | |||
34 | server = await createSingleServer(1, config) | 35 | server = await createSingleServer(1, config) |
35 | await setAccessTokensToServers([ server ]) | 36 | await setAccessTokensToServers([ server ]) |
36 | 37 | ||
38 | userAccessToken = await server.users.generateUserAndToken('user') | ||
39 | |||
37 | const { uuid } = await server.videos.upload() | 40 | const { uuid } = await server.videos.upload() |
38 | videoId = uuid | 41 | videoId = uuid |
39 | }) | 42 | }) |
@@ -93,7 +96,7 @@ describe('Test application behind a reverse proxy', function () { | |||
93 | it('Should rate limit logins', async function () { | 96 | it('Should rate limit logins', async function () { |
94 | const user = { username: 'root', password: 'fail' } | 97 | const user = { username: 'root', password: 'fail' } |
95 | 98 | ||
96 | for (let i = 0; i < 19; i++) { | 99 | for (let i = 0; i < 18; i++) { |
97 | await server.login.login({ user, expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) | 100 | await server.login.login({ user, expectedStatus: HttpStatusCode.BAD_REQUEST_400 }) |
98 | } | 101 | } |
99 | 102 | ||
@@ -141,6 +144,12 @@ describe('Test application behind a reverse proxy', function () { | |||
141 | await server.videos.get({ id: videoId, expectedStatus: HttpStatusCode.TOO_MANY_REQUESTS_429 }) | 144 | await server.videos.get({ id: videoId, expectedStatus: HttpStatusCode.TOO_MANY_REQUESTS_429 }) |
142 | }) | 145 | }) |
143 | 146 | ||
147 | it('Should rate limit API calls with a user but not with an admin', async function () { | ||
148 | await server.videos.get({ id: videoId, token: userAccessToken, expectedStatus: HttpStatusCode.TOO_MANY_REQUESTS_429 }) | ||
149 | |||
150 | await server.videos.get({ id: videoId, token: server.accessToken, expectedStatus: HttpStatusCode.OK_200 }) | ||
151 | }) | ||
152 | |||
144 | after(async function () { | 153 | after(async function () { |
145 | await cleanupTests([ server ]) | 154 | await cleanupTests([ server ]) |
146 | }) | 155 | }) |
diff --git a/server/tests/api/videos/video-channels.ts b/server/tests/api/videos/video-channels.ts index 6f495c42d..42e0cf431 100644 --- a/server/tests/api/videos/video-channels.ts +++ b/server/tests/api/videos/video-channels.ts | |||
@@ -478,6 +478,25 @@ describe('Test video channels', function () { | |||
478 | } | 478 | } |
479 | }) | 479 | }) |
480 | 480 | ||
481 | it('Should report correct total views count', async function () { | ||
482 | // check if there's the property | ||
483 | { | ||
484 | const { data } = await servers[0].channels.listByAccount({ accountName, withStats: true }) | ||
485 | |||
486 | for (const channel of data) { | ||
487 | expect(channel).to.haveOwnProperty('totalViews') | ||
488 | expect(channel.totalViews).to.be.a('number') | ||
489 | } | ||
490 | } | ||
491 | |||
492 | // Check if the totalViews count can be updated | ||
493 | { | ||
494 | const { data } = await servers[0].channels.listByAccount({ accountName, withStats: true }) | ||
495 | const channelWithView = data.find(channel => channel.id === servers[0].store.channel.id) | ||
496 | expect(channelWithView.totalViews).to.equal(2) | ||
497 | } | ||
498 | }) | ||
499 | |||
481 | it('Should report correct videos count', async function () { | 500 | it('Should report correct videos count', async function () { |
482 | const { data } = await servers[0].channels.listByAccount({ accountName, withStats: true }) | 501 | const { data } = await servers[0].channels.listByAccount({ accountName, withStats: true }) |
483 | 502 | ||
diff --git a/server/tests/helpers/core-utils.ts b/server/tests/helpers/core-utils.ts index fa0a71341..e3e5eb45c 100644 --- a/server/tests/helpers/core-utils.ts +++ b/server/tests/helpers/core-utils.ts | |||
@@ -6,47 +6,64 @@ import { snakeCase } from 'lodash' | |||
6 | import validator from 'validator' | 6 | import validator from 'validator' |
7 | import { getAverageBitrate, getMaxBitrate } from '@shared/core-utils' | 7 | import { getAverageBitrate, getMaxBitrate } from '@shared/core-utils' |
8 | import { VideoResolution } from '@shared/models' | 8 | import { VideoResolution } from '@shared/models' |
9 | import { objectConverter, parseBytes } from '../../helpers/core-utils' | 9 | import { objectConverter, parseBytes, parseDurationToMs } from '../../helpers/core-utils' |
10 | 10 | ||
11 | const expect = chai.expect | 11 | const expect = chai.expect |
12 | 12 | ||
13 | describe('Parse Bytes', function () { | 13 | describe('Parse Bytes', function () { |
14 | 14 | ||
15 | it('Should pass when given valid value', async function () { | 15 | it('Should pass on valid value', async function () { |
16 | // just return it | 16 | // just return it |
17 | expect(parseBytes(1024)).to.be.eq(1024) | 17 | expect(parseBytes(-1024)).to.equal(-1024) |
18 | expect(parseBytes(1048576)).to.be.eq(1048576) | 18 | expect(parseBytes(1024)).to.equal(1024) |
19 | expect(parseBytes('1024')).to.be.eq(1024) | 19 | expect(parseBytes(1048576)).to.equal(1048576) |
20 | expect(parseBytes('1048576')).to.be.eq(1048576) | 20 | expect(parseBytes('1024')).to.equal(1024) |
21 | expect(parseBytes('1048576')).to.equal(1048576) | ||
21 | 22 | ||
22 | // sizes | 23 | // sizes |
23 | expect(parseBytes('1B')).to.be.eq(1024) | 24 | expect(parseBytes('1B')).to.equal(1024) |
24 | expect(parseBytes('1MB')).to.be.eq(1048576) | 25 | expect(parseBytes('1MB')).to.equal(1048576) |
25 | expect(parseBytes('1GB')).to.be.eq(1073741824) | 26 | expect(parseBytes('1GB')).to.equal(1073741824) |
26 | expect(parseBytes('1TB')).to.be.eq(1099511627776) | 27 | expect(parseBytes('1TB')).to.equal(1099511627776) |
27 | 28 | ||
28 | expect(parseBytes('5GB')).to.be.eq(5368709120) | 29 | expect(parseBytes('5GB')).to.equal(5368709120) |
29 | expect(parseBytes('5TB')).to.be.eq(5497558138880) | 30 | expect(parseBytes('5TB')).to.equal(5497558138880) |
30 | 31 | ||
31 | expect(parseBytes('1024B')).to.be.eq(1048576) | 32 | expect(parseBytes('1024B')).to.equal(1048576) |
32 | expect(parseBytes('1024MB')).to.be.eq(1073741824) | 33 | expect(parseBytes('1024MB')).to.equal(1073741824) |
33 | expect(parseBytes('1024GB')).to.be.eq(1099511627776) | 34 | expect(parseBytes('1024GB')).to.equal(1099511627776) |
34 | expect(parseBytes('1024TB')).to.be.eq(1125899906842624) | 35 | expect(parseBytes('1024TB')).to.equal(1125899906842624) |
35 | 36 | ||
36 | // with whitespace | 37 | // with whitespace |
37 | expect(parseBytes('1 GB')).to.be.eq(1073741824) | 38 | expect(parseBytes('1 GB')).to.equal(1073741824) |
38 | expect(parseBytes('1\tGB')).to.be.eq(1073741824) | 39 | expect(parseBytes('1\tGB')).to.equal(1073741824) |
39 | 40 | ||
40 | // sum value | 41 | // sum value |
41 | expect(parseBytes('1TB 1024MB')).to.be.eq(1100585369600) | 42 | expect(parseBytes('1TB 1024MB')).to.equal(1100585369600) |
42 | expect(parseBytes('4GB 1024MB')).to.be.eq(5368709120) | 43 | expect(parseBytes('4GB 1024MB')).to.equal(5368709120) |
43 | expect(parseBytes('4TB 1024GB')).to.be.eq(5497558138880) | 44 | expect(parseBytes('4TB 1024GB')).to.equal(5497558138880) |
44 | expect(parseBytes('4TB 1024GB 0MB')).to.be.eq(5497558138880) | 45 | expect(parseBytes('4TB 1024GB 0MB')).to.equal(5497558138880) |
45 | expect(parseBytes('1024TB 1024GB 1024MB')).to.be.eq(1127000492212224) | 46 | expect(parseBytes('1024TB 1024GB 1024MB')).to.equal(1127000492212224) |
47 | }) | ||
48 | |||
49 | it('Should be invalid when given invalid value', async function () { | ||
50 | expect(parseBytes('6GB 1GB')).to.equal(6) | ||
51 | }) | ||
52 | }) | ||
53 | |||
54 | describe('Parse duration', function () { | ||
55 | |||
56 | it('Should pass when given valid value', async function () { | ||
57 | expect(parseDurationToMs(35)).to.equal(35) | ||
58 | expect(parseDurationToMs(-35)).to.equal(-35) | ||
59 | expect(parseDurationToMs('35 seconds')).to.equal(35 * 1000) | ||
60 | expect(parseDurationToMs('1 minute')).to.equal(60 * 1000) | ||
61 | expect(parseDurationToMs('1 hour')).to.equal(3600 * 1000) | ||
62 | expect(parseDurationToMs('35 hours')).to.equal(3600 * 35 * 1000) | ||
46 | }) | 63 | }) |
47 | 64 | ||
48 | it('Should be invalid when given invalid value', async function () { | 65 | it('Should be invalid when given invalid value', async function () { |
49 | expect(parseBytes('6GB 1GB')).to.be.eq(6) | 66 | expect(parseBytes('35m 5s')).to.equal(35) |
50 | }) | 67 | }) |
51 | }) | 68 | }) |
52 | 69 | ||